Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

nosredna

Como imprimir dados vindo do SCRIPT em diversas linhas de um WHILE

Recommended Posts

Olá a todos,

 

estou desenvolvendo um sistema e num dado momento tenho um SELECT e logo mais um:

 

<?php while($linhas = mysqli_fetch_assoc($resultado) ){ ?>

Nome: <?php echo linhas['nome']; ?>

...

<label>Status</label><input type="text" name="retorno" id="retorno">              <-----esse input

<?php } ?>

 

o 'input' que está dentro do PHP remete ao resultado de um script, que busca dados de uma tabela e é atualizado a cada 1 segundo. O script é o seguinte:


setInterval(function(){
    $.post("executar.php", function(atualizar){
        $('#retorno').val(atualizar);
    });
}, 1000);

 

O resultado fica o seguinte:

---------------------------------------------------

Nome: Jose

Status: 1

---------------------------------------------------

Nome: Maria

Status:

---------------------------------------------------

Nome: João

Status:

---------------------------------------------------

 

Porém, só me é retornado o valor da primeira linha, as outras linhas não é mostrada. Li a respeito e vi que a função PHP carrega primeiro e depois o Script...como eu poderia corrigir isso?

 

Valeu.

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

o erro pode ser no script:

 

executar.php

 

Ele está retornando todos os dados corretamente?

 

 

De qualquer forma, veja se te ajuda:

http://rberaldo.com.br/server-push-long-polling-php-ios/

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites
4 minutos atrás, gabrieldarezzo disse:

o erro pode ser no script:

 

executar.php

 

Ele está retornando todos os dados corretamente?

 

 

De qualquer forma, veja se te ajuda:

http://rberaldo.com.br/server-push-long-polling-php-ios/

 

 

 

O executar.php está ok.

O primeiro e único 'status' que me retorna está de acordo com o BD e quando faço a alteração no BD ele atualiza quase que instantaneamente no index.php .

 

O meu problema é que ele não retorna todas as linhas, somente a primeira.

 

Valew, vou dar uma lida nesse tópico.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ficou confusa sua resposta 

6 minutos atrás, nosredna disse:

O meu problema é que ele não retorna todas as linhas, somente a primeira.

 

 

Fiquei em duvida, o 'retorno.php' deveria retornar um array de arrays com os resultados?

Se a ideia é ficar exibindo todos... imagina a cada 1 segundo trazer * 2mill registros * qnt_usuarios.....

Compartilhar este post


Link para o post
Compartilhar em outros sites

Segue retorno.php:

 

<?php
include_once("conect.php");

$id = $_SESSION['id'];
$id2 = "$_GET['id2']";

$selecionado = "SELECT * FROM listagem WHERE '$id' LIKE id_usuario AND '$id2' LIKE id_filme LIMIT 1";
$resultado_selecionado = mysqli_query($conn, $selecionado );
$rows_selecionado = mysqli_fetch_assoc($resultado_selecionado ;
$status = $rows_selecionado ['status'];
                

if(($resultado_selecionado ) AND ($resultado_selecionado ->num_rows == 0)){
echo "null";

}elseif($status == 0){
echo "0";

}elseif($status == 1){
echo "1";
 }

5 minutos atrás, gabrieldarezzo disse:

Ficou confusa sua resposta 

 

 

Fiquei em duvida, o 'retorno.php' deveria retornar um array de arrays com os resultados?

Se a ideia é ficar exibindo todos... imagina a cada 1 segundo trazer * 2mill registros * qnt_usuarios.....

Digamos que a quantidade será cotrolada, na verdade posso até tirar esse tempo de atualização.

O problema é que ele não mostra as outras linhas de resultados.

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

O resultado fica o seguinte:

---------------------------------------------------

Nome: Jose

Status: 1

---------------------------------------------------

Nome: Maria

Status:           <--- aqui deveria aparecer o status da Maria

---------------------------------------------------

Nome: João

Status:           <--- aqui deveria aparecer o status da João

---------------------------------------------------

Compartilhar este post


Link para o post
Compartilhar em outros sites

Chegou abrir o link de como acompanhar a requisição?

 

 

#2  ?

 

Isso aqui:

$selecionado = "SELECT * FROM listagem WHERE '$id' LIKE id_usuario AND '$id2' LIKE id_filme LIMIT 1";

parece estar errado, de um print, debbug, ex:

print $selecionado;die();

 

Compartilhar este post


Link para o post
Compartilhar em outros sites
5 minutos atrás, gabrieldarezzo disse:

Chegou abrir o link de como acompanhar a requisição?

 

 

#2  ?

 

Isso aqui:


$selecionado = "SELECT * FROM listagem WHERE '$id' LIKE id_usuario AND '$id2' LIKE id_filme LIMIT 1";

parece estar errado, de um print, debbug, ex:


print $selecionado;die();

 

Eu já estou até com dor de cabeça com o que já fiz...kkk...vou zerar tudo que já fiz e tentar conforme o link que você e enviou.

Assim que terminar, volto com o resultado. Acho que fica mais fácil assim...

Valeu por enquanto.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sem problemas, porem a necessidade de saber debbugar uma query vai continuar independente da abordagem adotada,

 

Da uma lida nas regras, lá explica um pouco sobre debbug de querys/ erros comuns:

 

Citar

5. Faça Debug de Suas Queries

 

Compartilhar este post


Link para o post
Compartilhar em outros sites
44 minutos atrás, gabrieldarezzo disse:

Sem problemas, porem a necessidade de saber debbugar uma query vai continuar independente da abordagem adotada,

 

Da uma lida nas regras, lá explica um pouco sobre debbug de querys/ erros comuns:

 

 

 

Desculpe a minha ignorancia. Eu tentei de outra forma e não consegui o resultado esperado.
Vamos lá...vou tentar explicar melhor o meu problema:

Tenho linhas de resultados vindo de um SELECT funcionando normalmente, assim:

<?php while($linhas = mysqli_fetch_assoc($resultado) ){ ?>

ID: <?php echo linhas['id']; ?>
Nome: <?php echo linhas['nome']; ?>

<?php } ?>

O resultado fica o seguinte:
---------------------------------------------------
ID: 1
Nome: Jose
---------------------------------------------------
ID: 2
Nome: Maria
---------------------------------------------------
ID: 3
Nome: João
---------------------------------------------------

Peguei um exemplo do site:https://github.com/gabrieldarezzo/desafiosInternos/tree/master/ajax#5---acompanhar-oq-foi-enviado

Digamos que eu coloque um INPUT e um BOTÃO para cada linha de resultado:

<?php while($linhas = mysqli_fetch_assoc($resultado) ){ ?>

ID: <?php echo linhas['id']; ?>
Nome: <?php echo linhas['nome']; ?>

<input type="text" name="textao_do_feice" id="textao_do_feice" value="aqui é o texto antigo..."/>

<button id="btn-action">Ajax, Test!</button>

<script src="https://code.jquery.com/jquery-1.12.4.min.js" integrity="sha256-ZosEbRLbNQzLpnKIkEdrPv7lOy9C27hHQ+Xp8a4MxAQ=" crossorigin="anonymous"></script>
    <script type="text/javascript">
        $(document).ready(function() {
        
            $( "#btn-action" ).bind( "click", function() {
                $.ajax({
                     url: 'arquivo.txt'
                    ,type:'GET'
                    ,dataType: 'html'
                    ,success: function(resposta){
                        $( "#textao_do_feice" ).val(resposta);
                        //return true;
                    }
                    ,error: function(json){
                        console.log(json);
                    }
                });
            });
        });
</script>


<?php } ?>

O resultado fica o seguinte:
---------------------------------------------------
ID: 1
Nome: Jose
[aqui é o texto antigo...] <----INPUT
[Ajax, Test!] <-----------------BOTÃO
---------------------------------------------------
ID: 2
Nome: Maria
[aqui é o texto antigo...] <----INPUT
[Ajax, Test!] <-----------------BOTÃO
---------------------------------------------------
ID: 3
Nome: João
[aqui é o texto antigo...] <----INPUT
[Ajax, Test!] <-----------------BOTÃO
---------------------------------------------------

O arquivo.txt tem o seguinte texto:
Mudar Texto!!!

Se eu apetar todos os 3 botões das respectivas linhas os resultados ficam os seguintes:
---------------------------------------------------
ID: 1
Nome: Jose
[Mudar Texto!!!] <----INPUT
[Ajax, Test!] <-----------------BOTÃO
---------------------------------------------------
ID: 2
Nome: Maria
[aqui é o texto antigo...] <----INPUT
[Ajax, Test!] <-----------------BOTÃO
---------------------------------------------------
ID: 3
Nome: João
[aqui é o texto antigo...] <----INPUT
[Ajax, Test!] <-----------------BOTÃO
---------------------------------------------------

Ou seja, o AJAX só funcionou na primeira linha. Teria que funcionar nas 3 linhas quando eu apertasse os respectivos botões. E no meu caso é inevitavel o uso do Ajax...
É possível o que eu pretendo? Como eu poderia fazer?

Valeu, meu amigo!

Compartilhar este post


Link para o post
Compartilhar em outros sites

O código não conseguirá pegar pegar os outros dados porque estas a usar o mesmo id nos elementos da lista

tente criar ids únicos como isso: 

<?php while($linhas = mysqli_fetch_assoc($resultado) ){ ?>
ID: <?php echo linhas['id']; ?>
Nome: <?php echo linhas['nome']; ?>
<input type="text" name="textao_do_feice" id="textao_do_feice_<?php linhas['id'] ?>" value="aqui é o texto antigo..."/>
<button id="btn-action-<?php linhas['id'] ?>">Ajax, Test!</button>
<script src="https://code.jquery.com/jquery-1.12.4.min.js" integrity="sha256-ZosEbRLbNQzLpnKIkEdrPv7lOy9C27hHQ+Xp8a4MxAQ=" crossorigin="anonymous"></script>
    <script type="text/javascript">
        $(document).ready(function() {
        
            $( "#btn-action-<?php linhas['id'] ?>" ).bind( "click", function() {
                $.ajax({
                     url: 'arquivo.txt'
                    ,type:'GET'
                    ,dataType: 'html'
                    ,success: function(resposta){
                        $( "#textao_do_feice_<?php linhas['id'] ?>" ).val(resposta);
                        //return true;
                    }
                    ,error: function(json){
                        console.log(json);
                    }
                });
            });
        });
</script>

 

Compartilhar este post


Link para o post
Compartilhar em outros sites
Em 29/08/2017 at 04:59, karsonAdam disse:

O código não conseguirá pegar pegar os outros dados porque estas a usar o mesmo id nos elementos da lista

tente criar ids únicos como isso: 


<?php while($linhas = mysqli_fetch_assoc($resultado) ){ ?>
ID: <?php echo linhas['id']; ?>
Nome: <?php echo linhas['nome']; ?>
<input type="text" name="textao_do_feice" id="textao_do_feice_<?php linhas['id'] ?>" value="aqui é o texto antigo..."/>
<button id="btn-action-<?php linhas['id'] ?>">Ajax, Test!</button>
<script src="https://code.jquery.com/jquery-1.12.4.min.js" integrity="sha256-ZosEbRLbNQzLpnKIkEdrPv7lOy9C27hHQ+Xp8a4MxAQ=" crossorigin="anonymous"></script>
    <script type="text/javascript">
        $(document).ready(function() {
        
            $( "#btn-action-<?php linhas['id'] ?>" ).bind( "click", function() {
                $.ajax({
                     url: 'arquivo.txt'
                    ,type:'GET'
                    ,dataType: 'html'
                    ,success: function(resposta){
                        $( "#textao_do_feice_<?php linhas['id'] ?>" ).val(resposta);
                        //return true;
                    }
                    ,error: function(json){
                        console.log(json);
                    }
                });
            });
        });
</script>

 

 

Muitíssimo obrigado! Era isso mesmo... criei Id's diferentes e deu certo!

Resolvido, o tópico já pode ser fechado.

 

Agradeço a todos.

Compartilhar este post


Link para o post
Compartilhar em outros sites

  • Conteúdo Similar

    • Por Rafael_Ferreira
      Não consigo carregar a imagem do captcha do meu formulário. Foi testado com o xampp e easyphp. Também não carregou a imagem de outros captcha. 
       
       
    • Por luiz monteiro
      Olá.
      Estou atualizando meu conhecimento com Front-End e me deparei com o seguinte problema.
      Criei um sistema para fazer o upload de imagens e alguns campos text.
      Algo bem simples para depois começar a estudar javascript para mostrar a miniatura....
      Mas quando saio do navegador Chrome ou da aba por mais de 3 minutos, ao retornar o navegador as vezes atualiza ou nem chega atualizar mas limpa os campos.
      Estou usando um Smart Motorola com Android, mas um amigo testou no iPhone e acontece a mesma coisa.
      Gostaria de saber se há como usar javascript para evitar isso?
      Agradeço desde já.

      <!DOCTYPE html>
      <html>
      <head>
          <meta charset="utf-8">
          <meta name="viewport" content="width=device-width, initial-scale=1">
          <title>Uploader</title>
      </head>
      <body>
          <form action="?" method="post" enctype="multipart/form-data">
              <br><br>
              <div>selecione a imagem 1</div>
              <input type="file" name="foto1" accept="image/*">
              <br><br>
              <input type="text" name="nome_imagem1">
              
              <br><br>
              <input type="file" name="foto2" accept="image/*">
              <br><br>
              <input type="text" name="nome_imagem2">
              
              <br><br>

              <input type="file" name="foto3" accept="image/*">
              <br><br>
              <input type="text" name="nome_imagem3">
              
              <br><br>
              <input type="submit" value="Enviar">
              <br><br>
          </form>
      <?php
      if ($_SERVER['REQUEST_METHOD'] == 'POST')
      {
          vardump ($_FILES);
      }
      ?>
      </body>
      </html>
       
       
       
    • Por belann
      Olá!
       
      Estou usando o nextjs versão 15.2.3 e criei uma navbar que quando é carregado o programa aparece com a home, mas na hora de clicar na página produtos desaparece a navbar.
      A navbar esta sendo chamada no layout.tsx estou usando typescript
      e fica dessa forma
      <div>           <Navbar/>             <main>{children}</main>             </div>  
    • Por luiz monteiro
      Olá, tudo bem?
       
      Estou melhorando meu conhecimento em php e mysql e, me deparei com o seguinte. A tabela da base de dados tem um campo do tipo varchar(8) o qual armazena números. Eu não posso alterar o tipo desse campo. O que preciso é fazer um select para retornar o números que contenham zeros a direita ou a esquerda.
      O que tentei até agora
       
      Ex1
      $busca = $conexao->prepare("select campo form tabela where (campo = :campo) ");
      $busca->bindParam('campo', $_REQUEST['campo_form']);
       
      Se a direita da string $_REQUEST['campo_form'] termina ou inicia com zero ou zeros, a busca retorna vazio.
      Inseri dados numéricos, da seguinte maneira para testar: 01234567;  12345670: 12345678: 12340000... entre outros nessa coluna. Todos os valores que não terminam ou não iniciam com zero ou zeros, o select funciona.
       
       
      Ex2
      $busca = $conexao->prepare("select campo form tabela where (campo = 0340000) ");
      Esse número está cadastrado, mas não retorna.
       
      Ex3
      $busca = $conexao->prepare("select campo form tabela where (campo = '02340001' ) ");
      Esse número está cadastrado, mas não retorna.
       
       
      Ex4
      $busca = $conexao->prepare("select campo form tabela where (campo like 2340000) ");
      Esse número está cadastrado, mas não retorna.
       
      Ex5
      $busca = $conexao->prepare("select campo form tabela where (campo like '12340000') ");
      Esse número está cadastrado, mas não retorna.
       
      Ex6
      $busca = $conexao->prepare("select campo form tabela where (campo like '"12340000"' ) ");
      Esse número está cadastrado, mas não retorna.
       
       
      Ex7
      $busca = $conexao->prepare("select campo form tabela where (campo like :campo) ");
      $busca->bindParam('campo', $_REQUEST['campo_form'])
      Não retorna dados.
       
      O  $_REQUEST['campo_form'] é envio via AJAX de um formulário. 
      Usei o gettype para verificar o post, e ele retorna string.
      Fiz uma busca com número 12345678 para verificar o que o select retorna, e também retrona como string.
       
      Esse tipo de varchar foi usado porque os números que serão gravados nesse campo,  terão zeros a direita ou na esquerda. Os tipos number do mysql não gravam zeros, então estou usando esse. O problema é a busca.
      Agradeço desde já.
       
       
    • Por daemon
      Boa tarde,
       
      Eu tenho uma rotina que faz uma leitura do arquivo .xml de vários sites.

      Eu consigo pegar o tópico e a descrição, e mostrar a imagem que esta na pagina do link.
      Para isso utilizo esta função:
      function getPreviewImage($url) { // Obter o conteúdo da página $html = file_get_contents($url); // Criar um novo objeto DOMDocument $doc = new DOMDocument(); @$doc->loadHTML($html); // Procurar pela tag meta og:image $tags = $doc->getElementsByTagName('meta'); foreach ($tags as $tag) { if ($tag->getAttribute('property') == 'og:image') { return $tag->getAttribute('content'); } } // Se não encontrar og:image, procurar pela primeira imagem na página $tags = $doc->getElementsByTagName('img'); if ($tags->length > 0) { return $tags->item(0)->getAttribute('src'); } // Se não encontrar nenhuma imagem, retornar null return null; } // Uso: $url = "https://example.com/article"; $imageUrl = getPreviewImage($url); if ($imageUrl) { echo "<img src='$imageUrl' alt='Preview'>"; } else { echo "Nenhuma imagem encontrada"; }  
      Mas estou com um problema, esta funcão funciona quando coloco em uma pagina de teste.php. Preciso mostrar em uma página inicial diversas fotos de todos os links. (No caso acima só funciona 1).
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.