1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

[Ajuda] PHP + Javascript

Discussão em 'Web Development' iniciada por Frango., 15 de Maio de 2009. (Respostas: 13; Visualizações: 979)

  1. Frango.

    Frango. Power Member

    Boas.

    Um amigo meu está a fazer um script para um rodapé em PHP + Mysql + Javascript. O objectivo do script é o rodapé estar no site e para adicionar mensagens no mesmo utilizasse um formulário que adiciona as mensagens na mysql. Sendo que depois com a ajuda do PHP vai buscar as mensagens que tão na sql e vai adicionar ao rodapé.

    Para já o PHP vai buscar o que está na Mysql (As mensagens) e adiciona ao javascript sem problema nenhum. O formulário para adição de mensagens a mesma coisa, o único problema é como adicionar as mensagens automaticamente sem recorrer à edição do ficheiro e sem adicionar uma nova linha do js e do php manualmente.

    Deixo aqui uma quote do meu amigo:

    E o excerto principal do código Javascript:

    Código:
    var out0 = <?=$out[0]?>;
    var out1 = <?=$out[1]?>;
    var out2 = <?=$out[2]?>;
    
    var pausecontent2=new Array()
    pausecontent2[0]=out0
    pausecontent2[1]=out1
    pausecontent2[2]=out2
    E o código PHP:

    PHP:
    $i=0;
    $var = array();
    $out = array();
    //inicia a busca na BD e cria o array
    $result mysql_query("SELECT id, nome, mensagem FROM mensagem order by id ASC");
    while (
    $row mysql_fetch_array($result)) {
        
    # cria uma array com os dados do mysql
        
    $array[] = $row["mensagem"];
    $var[$i] = $array[$i];

    $i++;
    # while
    $j=0;
    while(
    $j<=$i){
    $out[$j] = json_encode($var[$j]); // traduzida para JSON
    $j++;
    }
    Estamos mesmo empancados nisto, qualquer ajuda era bem-vinda :p

    Abraço
     
    Última edição: 15 de Maio de 2009
  2. hostmake

    hostmake Power Member

    Ou eu não percebi ou o que tu queres dizer é adicionar linhas de JS manualmente, não PHP.. porque é suposto enviar as mensagens para a BD e é ai que ficam guardadas.. no sitio onde crias o JS, tens o while que corre a BD, explode, count, foreach, while.. mil e 1 soluções não?
     
  3. Frango.

    Frango. Power Member

    Não. O objectivo é adicionar automaticamente as linhas quando adiciono uma nova mensagem. É aí que está o problema :wvsore:

    Edit: Reparei que tinha-me esquecido de um "sem", se calhar foi por isso que confundiste. Peço desculpa :p
     
    Última edição: 15 de Maio de 2009
  4. hostmake

    hostmake Power Member

    Continuo sem perceber.
    Esse código vai buscar as mensagens com o ID 1,2,3.

    Vocês querem as últimas muda o order para uma contagem decrescente, voilá?
     
  5. mazinhu

    mazinhu Power Member


    o codigo busca as msg na bd, e aprensenta no codigo javascript.
    o problema é o seguinte, fiz um array no php para receber as mensagens e passar para o javascript, mais nao sei como fazer para, no codigo javascript, criar um array para receber esses valores, porque teria que acrescentar uma variavel que se incrementa de 1 a 1 para percorrer o array todo.


    ex: aqui 'var out0 = <?=$out[0]?>;' nao quero ter que criar um nova linha para cada mensagem.
    quero algo assim 'var out = <?=$out[$x]?>;' out seria um array e o x após passar o valor de x=1 seria incrementado $x++;
    mais nao posso misturar php com javascript assim.

    é dificil de explicar.
     
  6. hostmake

    hostmake Power Member

    Eu já tinha respondido a isso..

    Podes perfeitamente ter PHP dentro do Javascript.
    Logo como já tinha dito.. fazes 1 while em PHP, em que geras echo's das linhas de Javascript.
     
  7. Frango.

    Frango. Power Member

    Pois, mas é precisamente isso que ele não sabe fazer... :wvsore:
     
  8. mazinhu

    mazinhu Power Member


    posso ter php dentro de javascript?
    apenas sei passar variaveis pelo metodo json_encode.

    posso ter algo assim:
    var out0 = <?=$out[$i]?>;<?php $i++; ?>
    var out1 = <?=$out[$i]?>;<?php $i++; ?>
    var out2 = <?=$out[$i]?>;<?php $i++; ?>
    var pausecontent2=new Array()
    pausecontent2[0]=out0
    pausecontent2[1]=out1
    pausecontent2[2]=out2
     
  9. hostmake

    hostmake Power Member

    podes, e até podias ter assim

    <?=$out[$i++];?>
     
    Última edição: 16 de Maio de 2009
  10. mazinhu

    mazinhu Power Member

    Já agora como faço para criar um array para receber os valores do php e apresentar a mensagem?
    PHP:
    <?php
    $i
    =0;
    $var = array();
    $out = array();
    //inicia a busca na BD e cria o array
    $result mysql_query("SELECT id, nome, mensagem FROM mensagem order by id ASC");
    while (
    $row mysql_fetch_array($result)) {
        
    # cria uma array com os dados do mysql
        
    $array[] = $row["mensagem"];
    $var[$i] = $array[$i];

    $i++;
    # while
    $j=0;
    while(
    $j<$i){
    $out[$j] = json_encode($var[$j]); // traduzida para JSON
    $outi json_encode($i); // traduzida para JSON - Numero de registos do array 
    $j++;
    }
    $w=0//variavel que é incrementada no javascript por php
    ?>
    Código:
    <script type="text/javascript">
    var out=new Array()
    var pausecontent2=new Array()
    var k = 0;
    var i = <?=$outi?>;
    
    
    out[k] = <?=$out[$w]?>;<?php $w++;?>;
    pausecontent2[k]=out[k]
    k++;
    
    out[k] = <?=$out[$w]?>;<?php $w++;?>;
    pausecontent2[k]=out[k]
    k++;
    out[k] = <?=$out[$w]?>;<?php $w++;?>;
    pausecontent2[k]=out[k]
    k++;
    
    
    
    </script>
    Tenho que criar um ciclo para nao ter que escrever essa linha para cada nova mensagem.
    out[k] = <?=$out[$w]?>;<?php $w++;?>;
    pausecontent2[k]=out[k]
    k++;

    Isso recebe a mensagem do php e adiciona essa mensagem no array do JS.

    while (k<i){
    out[k] = <?=$out[$w]?>;<?php $w++;?>;
    pausecontent2[k]=out[k]
    k++;}

    Isso deveria reolver o meu problema, só que quando faço esse while apenas fico com o valor da primeira mensagem.

    Ex:
    Recebo como resultado
    Teste
    Teste
    Teste

    quando deveria ser

    Teste
    Novo Teste
    Outro Teste
     
    Última edição: 16 de Maio de 2009
  11. hostmake

    hostmake Power Member

    Estás a ficar confuso. Uma reformulação do teu código todo:

    PHP:
    <?php
    $result 
    mysql_query("SELECT id, nome, mensagem FROM mensagem order by id ASC");
    $total_msgs mysql_num_rows($result);
    while (
    $row mysql_fetch_assoc($result))
          
    $msgs[] = $row["mensagem"];
    ?> 
    Código:
    <script type="text/javascript">
    var out=new Array();
    var pausecontent2=new Array();
    <?php
    $i=0;
    while ($i < $total_msgs) {
    ?>
    out[<?=$i;?>] = <?=$msgs[$i];?>;
    pausecontent2[<?=$i;?>]=out[<?=$i++;?>]
    <?php
    }
    ?>
    </script>
     
  12. Frango.

    Frango. Power Member

    O script já faz o pretendido (quando se adiciona uma nova mensagem à sql automaticamente cria uma nova variável no js) mas tem um problema, quando fui testa-lo online as mensagens dizem "undefined" em vez do que está na sql. Mas no código não tem nenhuma mensagem a dizer "undefined":

    Código:
    <script type="text/javascript">
    var out=new Array();
    var pausecontent2=new Array();
    out[0] = Teste;
    pausecontent2[0]=out[0]
    out[1] = Teste2;
    pausecontent2[1]=out[1]
    </script>
    
    Que poderá ser?
     
  13. Huckleberry

    Huckleberry Power Member

    Nesse código estás a dizer que o Teste e Teste2 são variáveis, o que não é correcto, põe "Teste" e "Teste2"
     
  14. Frango.

    Frango. Power Member

    Funcionou!

    Obrigado :D
     

Partilhar esta Página