op_h2tuga Posted July 10, 2012 at 02:01 AM Report Share #468128 Posted July 10, 2012 at 02:01 AM (edited) Ola, Tenho este código: echo "<script type='text/javascript'> var perg = confirm ('Pretende pagar a encomenda imediatamente?') if (perg) {"; $this->executarSQL("insert into total_encomenda(id_encomenda, total_encomenda) values('$prox_id_enc','$total_produtos')"); echo"alert ('Total da sua encomenda e $total_produtos $ieuros') } else {"; $this->executarSQL("insert into total_encomenda(id_encomenda, total_encomenda, divida) values('$prox_id_enc','$total_produtos', '$total_produtos')"); echo"alert ('A sua compra foi efectuada, tem uma divida de $total_produtos euros') } </script> "; E o problema está em que ele entra sempre nas duas condições, quer o valor do perg seja true ou false, alguém sabe o que pode estar a originar esta situação? Cumprimentos Edited July 10, 2012 at 08:46 PM by brunoais geshi! Link to comment Share on other sites More sharing options...
KTachyon Posted July 10, 2012 at 02:36 AM Report Share #468131 Posted July 10, 2012 at 02:36 AM (edited) Não podes fazer isso... O PHP é executado no servidor e o JavaScript é executado no browser. Quando a página chegar ao browser, ambos os inserts já foram executados, e a única coisa que varia é a mensagem de alerta que é apresentada. Dito por outras palavras, a página é pedida ao servidor, que executa: echo $this->executarSQL() echo $this->executarSQL() echo E quando chega ao browser tens: <script type='text/javascript'> var perg = confirm ('Pretende pagar a encomenda imediatamente?') if (perg) { alert ('Total da sua encomenda e X Y') } else { alert ('A sua compra foi efectuada, tem uma divida de X euros') } </script> Edited July 10, 2012 at 02:40 AM by KTachyon “There are two ways of constructing a software design: One way is to make it so simple that there are obviously no deficiencies, and the other way is to make it so complicated that there are no obvious deficiencies. The first method is far more difficult.” -- Tony Hoare Link to comment Share on other sites More sharing options...
op_h2tuga Posted July 10, 2012 at 01:24 PM Author Report Share #468173 Posted July 10, 2012 at 01:24 PM Ok devia-me ter informado antes como funcionava o javasript antes de postar, mas podes-me dizer uma alternativa a esta, é que preciso de saber a "opção" que o cliente pretende. Cumprimentos Link to comment Share on other sites More sharing options...
KTachyon Posted July 10, 2012 at 02:44 PM Report Share #468193 Posted July 10, 2012 at 02:44 PM Não é exactamente como funciona o JavaScript, é mais em que âmbitos é que as linguagens funcionam. Podes utilizar o PHP para definir variáveis/constantes de JavaScript de forma dinâmica, mas não podes fazer o contrário, porque o PHP é executado antes do JavaScript. Aquilo que podes fazer, assumindo que queres que o utilizador confirme dentro da própria página (sem refresh), é fazer uma chamada ao servidor por "um PHP" que execute a query que pretendes. O ideal é uma chamada AJAX em que recebes um objecto de volta para o JavaScript para garantir que a operação foi bem sucedida. Espreita o JQuery. “There are two ways of constructing a software design: One way is to make it so simple that there are obviously no deficiencies, and the other way is to make it so complicated that there are no obvious deficiencies. The first method is far more difficult.” -- Tony Hoare Link to comment Share on other sites More sharing options...
op_h2tuga Posted July 10, 2012 at 05:36 PM Author Report Share #468223 Posted July 10, 2012 at 05:36 PM Obrigado. Ok vou ver uns exemplos a ver se faço o que quero, espero que não seja preciso conhecimentos muito aprofundados de ajax ou jquery visto ainda nunca ter tocado nessas linguagens. Link to comment Share on other sites More sharing options...
KTachyon Posted July 10, 2012 at 05:48 PM Report Share #468225 Posted July 10, 2012 at 05:48 PM JQuery é uma biblioteca de JavaScript que tem as funções que precisas para fazeres isso. “There are two ways of constructing a software design: One way is to make it so simple that there are obviously no deficiencies, and the other way is to make it so complicated that there are no obvious deficiencies. The first method is far more difficult.” -- Tony Hoare Link to comment Share on other sites More sharing options...
op_h2tuga Posted July 10, 2012 at 07:10 PM Author Report Share #468229 Posted July 10, 2012 at 07:10 PM Ok obrigado pela informação, não sabia, pensava que era outra linguagem. Link to comment Share on other sites More sharing options...
brunoais Posted July 10, 2012 at 08:50 PM Report Share #468239 Posted July 10, 2012 at 08:50 PM (edited) Eu sou da opinião de não usar bibliotecas para algo simples como isso. Aconselho-te a usar diretamente o API do DOM level 3. XMLHttpRequest() e JSON() Nota (tb para outros) Aconselho isto para ti que estás a aprender javascript como digo para quem está a aprender C a usar o open(), o read() e o write() antes de usar bibliotecas. Edit: Vê isto para aprenderes a usar a técnica AJAX. https://developer.mozilla.org/en/Ajax Edited July 10, 2012 at 08:53 PM by brunoais "[Os jovens da actual geração]não lêem porque não envolve um telecomando que dê para mirar e atirar, não falam porque a trapalhice é rainha e o calão é rei" autor: thoga31 Life is a genetically transmitted disease, induced by sex, with death rate of 100%. Link to comment Share on other sites More sharing options...
KTachyon Posted July 10, 2012 at 09:48 PM Report Share #468249 Posted July 10, 2012 at 09:48 PM A minha opção não está exactamente relacionada com a simplicidade das operações. Tem a haver com a interacção que iria depois adicionar para dar um feedback decente ao utilizador, que é facilmente implementada utilizando JQuery. Já estava a pensar dois passos à frente. “There are two ways of constructing a software design: One way is to make it so simple that there are obviously no deficiencies, and the other way is to make it so complicated that there are no obvious deficiencies. The first method is far more difficult.” -- Tony Hoare Link to comment Share on other sites More sharing options...
op_h2tuga Posted July 11, 2012 at 02:46 AM Author Report Share #468263 Posted July 11, 2012 at 02:46 AM A minha opção não está exactamente relacionada com a simplicidade das operações. Tem a haver com a interacção que iria depois adicionar para dar um feedback decente ao utilizador, que é facilmente implementada utilizando JQuery. Já estava a pensar dois passos à frente. Podias-me dar um exemplo? já estive a pesquisar mas exemplos de jquery com php para a minha situação não vi nenhum, só vejo para tudo em javascript. E mais uma questão, o php é primeiro lido que o javascript, mas quando aparecer as MessagesBox ao utilizador e eu tiver uma variável no javascript que fica a true se entrou numa ou na outra condição, e depois passa-la para o php assim já dá? ou continua sempre a ser tudo interpretado antes? Link to comment Share on other sites More sharing options...
brunoais Posted July 11, 2012 at 07:14 AM Report Share #468266 Posted July 11, 2012 at 07:14 AM E mais uma questão, o php é primeiro lido que o javascript, mas quando aparecer as MessagesBox ao utilizador e eu tiver uma variável no javascript que fica a true se entrou numa ou na outra condição, e depois passa-la para o php assim já dá? Sim, se a enviares para o PHP dá. "[Os jovens da actual geração]não lêem porque não envolve um telecomando que dê para mirar e atirar, não falam porque a trapalhice é rainha e o calão é rei" autor: thoga31 Life is a genetically transmitted disease, induced by sex, with death rate of 100%. Link to comment Share on other sites More sharing options...
KTachyon Posted July 11, 2012 at 11:15 AM Report Share #468318 Posted July 11, 2012 at 11:15 AM Tens que pensar no JavaScript (e JQuery) como uma coisa independente do PHP. O PHP gera o código que é enviado para o browser e para o PHP nem interessa se a sintaxe do código que gerou está correcta, apenas interessa que a sintaxe do código PHP esteja correcta. O PHP nem sabe se está a escrever JavaScript, ou HTML, ou qualquer outra coisa que decidas, apenas se preocupa em escrever aquilo que tu lhe pedes. Logo, não faz sentido que andes à procura de JavaScript com PHP. Basicamente, o browser faz a chamada à página e tudo o que o PHP tiver que fazer será feito antes do código chegar ao browser para o JavaScript ser interpretado. Para que o PHP execute alguma coisa depois de uma acção do utilizador na página, tens que fazer um pedido ao servidor. Sobre o JQuery, tens: http://jquery.com/ Mais especificamente, aquilo que procuras: http://api.jquery.com/jQuery.ajax/ Podes ver vários exemplos no final da documentação, antes dos comentários. Basicamente, aquilo que queres é fazer um request por uma página que vai executar o insert consoante o que o utilizador pedir: $.ajax({ type: "POST", url: "executa_insert.php", data: { escolha_user: "true" } success: function(data) { // recebes o resultado do PHP na variável data, que podes utilizar para validar a inserção alert("xpto"); } }); “There are two ways of constructing a software design: One way is to make it so simple that there are obviously no deficiencies, and the other way is to make it so complicated that there are no obvious deficiencies. The first method is far more difficult.” -- Tony Hoare Link to comment Share on other sites More sharing options...
brunoais Posted July 11, 2012 at 12:42 PM Report Share #468333 Posted July 11, 2012 at 12:42 PM Pff.... É a luta entre usar bibliotecas ou não. Eu uso jQuery mas não para coisas simples como esta, até desaconselho o uso do jQuery (ou equivalente) para coisas simples como esta especialmente para quem está a aprender. "[Os jovens da actual geração]não lêem porque não envolve um telecomando que dê para mirar e atirar, não falam porque a trapalhice é rainha e o calão é rei" autor: thoga31 Life is a genetically transmitted disease, induced by sex, with death rate of 100%. Link to comment Share on other sites More sharing options...
op_h2tuga Posted July 11, 2012 at 01:29 PM Author Report Share #468343 Posted July 11, 2012 at 01:29 PM (edited) $.ajax({ type: "POST", url: "executa_insert.php", data: { escolha_user: "true" } success: function(data) { // recebes o resultado do PHP na variável data, que podes utilizar para validar a inserção alert("xpto"); } }); Eu como já não tenho muito tempo fiz de esta maneira: var perg = confirm ('Pretende pagar a encomenda imediatamente?') if (perg) { window.location.href='?id=confirmarEncomenda&op=0&prox_id_enc=$prox_id_enc&total_produtos=$total_produtos'; } else { window.location.href='?id=confirmarEncomenda&op=1&prox_id_enc=$prox_id_enc&total_produtos=$total_produtos'; } Resolvi fazer a passagem por url. Obrigado pela ajuda. Cumprimentos Edited July 11, 2012 at 04:07 PM by brunoais geshi! + indentação Link to comment Share on other sites More sharing options...
KTachyon Posted July 11, 2012 at 03:54 PM Report Share #468376 Posted July 11, 2012 at 03:54 PM É a maneira clássica de resolver. “There are two ways of constructing a software design: One way is to make it so simple that there are obviously no deficiencies, and the other way is to make it so complicated that there are no obvious deficiencies. The first method is far more difficult.” -- Tony Hoare Link to comment Share on other sites More sharing options...
taviroquai Posted July 11, 2012 at 04:47 PM Report Share #468389 Posted July 11, 2012 at 04:47 PM Os diferentes ambientes em que corre Javascript e PHP... embora seja possível "misturar" as duas linguagens esta possibilidade gera confusão para quem se está a iniciar. A contar pelo alto número de dúvidas que surgem sobre isto penso que já merecia um Stickie a explicar isto. Algo com um título bem apelativo que não passasse despercebido, tipo: "PHP + Javascript". E de preferência que indicasse o melhor método/arquitectura a demonstrar a interação entre as duas linguagens. Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now