Ir para conteúdo

Arquivado

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

AlexSandroJAP

retorno de dados em <table>

Recommended Posts

Olá amigos, estou batalhando em fazer uma página que a pessoa escolha a cidade em um combobox e eu retorne os vendedores com seus respectivos telefones que atendem essa cidade. Até consegui fazer, mais estou retornando os dados em um textarea (de um form) pois estou me baseando em um exemplo que usa form, mas eu queria retornar esses dados em uma tabela para poder "tabular" e formatar e "zebrar" as linhas. Mas aqui peço a ajuda dos amigos apenas para jogar esse resultado em uma tabela e nao textarea como esta atualmente. segue meu código:

 

index.php

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">

<head>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  <title>xxx</title>
  <link href="css/css.css" rel="stylesheet" type="text/css" />

  <script type="text/javascript" src="js/jquery-1.3.2.min.js"></script>
  <script type="text/javascript">
      $(document).ready(function(){

         $("select[name=cidade]").change(function(){
            $("textarea[name=vendedor]").html('Carregando...');

            $.post("vendedor.php",
                  {cidade:$(this).val()},
                  function(valor){
                     $("textarea[name=vendedor]").html(valor);
                  }
                  )

         })
      })
  </script>
</head>

<body>
<form action="" method="post">
   <select name="cidade">
       <option value="0">Escolha uma Cidade</option>
        <?php
         mysql_connect("localhost", "root", "");
         mysql_select_db("baseDeDados");

         $sql = "SELECT * FROM cidades ORDER BY nome ASC";
         $qr = mysql_query($sql) or die(mysql_error());
         while($ln = mysql_fetch_assoc($qr)){
            echo '<option value="'.$ln['id'].'">'.$ln['nome'].'</option>';
         }
      ?>

    </select>
<br /><br /><br />

    <textarea name="vendedor" cols="50" rows="5"></textarea>

</form>

</body>
</html>

 

vendedor.php

<?php

mysql_connect("localhost", "root", "");
mysql_select_db("baseDeDados");

$cidade = $_POST['cidade'];

$sql = "SELECT * FROM vendedores WHERE vendedores.id IN (SELECT cidade_vendedor.id_vendedor FROM cidade_vendedor WHERE cidade_vendedor.id_cidade = '$cidade')";

$qr = mysql_query($sql) or die(mysql_error());

if(mysql_num_rows($qr) == 0){
   echo 'Sem vendedor cadastrado'; }
else
{
   while($ln = mysql_fetch_assoc($qr)){
      echo 'Vendedor: '.$ln['nome'].'  -  Telefone: '.$ln['telefone']."\n";
   }
}

?>

agradeço qq ajuda!

Compartilhar este post


Link para o post
Compartilhar em outros sites

A sua dúvida é na verdade no jQuery. Vou mover pra lá que o pessoal vai pode te ajudar melhor.

 

Tópico Movido

PHP http://forum.imasters.com.br/public/style_emoticons/default/seta.gif Javascripts Frameworks

Compartilhar este post


Link para o post
Compartilhar em outros sites

você so vai precisar mudar essa parte:

function(valor){ $("textarea[name=vendedor]").html(valor); }
esse teu retorno, ta 'muito simples'.

 

 echo 'Vendedor: '.$ln['nome'].' - Telefone: '.$ln['telefone']."\n";
vai ser mais dificil separar os valores..

pois teria que fazer um split no - , e sair jogando nas TDs... elas você pode criar dinamicamente com createElement.

 

como você tentou fazer? implementa um retorno XML ou JSON, sera bem mais facil de manipular os dados.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá colega, fiz umas alterações e cheguei no código abaixo, esta funcionando e atendendo minha necessidade, eu queria que voces pudessem analisar se o código esta "correto" (inteligente):

 

head do index.php

  <script type="text/javascript">
      $(document).ready(function(){

         $("select[name=cidade]").change(function(){
            $("div[name=vendedor]").html('Carregando...');

            $.post("vendedor.php",
                  {cidade:$(this).val()},
                  function(valor){
                     $("div[name=vendedor]").html(valor);
                  }
                  )

         })
      })
  </script>

<form action="" method="post">
   <select name="cidade">
       <option value="0">Escolha uma Cidade</option>
        <?php
         mysql_connect("localhost", "petsriod_jap", "jap321");
         mysql_select_db("petsriod_baseDeDados");

         $sql = "SELECT * FROM cidades ORDER BY nome ASC";
         $qr = mysql_query($sql) or die(mysql_error());
         while($ln = mysql_fetch_assoc($qr)){
            echo '<option value="'.$ln['id'].'">'.utf8_encode($ln['nome']).'</option>';
         }
      ?>

    </select>
</form>

  <br /><br /><br />

 <div name="vendedor"></div>

 

arquivo vendedor.php

<?php

mysql_connect("localhost", "petsriod_jap", "jap321");
mysql_select_db("petsriod_baseDeDados");

//$cidade = 18;
$cidade = $_POST['cidade'];

//echo $cidade;

//$sql = "SELECT * FROM cidade_vendedor WHERE id_cidade = '$cidade'";
$sql = "SELECT * FROM vendedores WHERE vendedores.id IN (SELECT cidade_vendedor.id_vendedor FROM cidade_vendedor WHERE cidade_vendedor.id_cidade = '$cidade')";

$qr = mysql_query($sql) or die(mysql_error());

if(mysql_num_rows($qr) == 0){
   echo 'Sem vendedor cadastrado'; }
else
{
   echo "<table>";
   
   $i = 1;
   while($ln = mysql_fetch_assoc($qr)){
     if ($i == 1) {
      echo "<tr class='tst2'><td>".utf8_encode($ln['nome'])."</td><td>".$ln['telefone']."</td></tr>";
	  $i = 2;
	 } else {
	 echo "<tr class='tst1'><td>".utf8_encode($ln['nome'])."</td><td>".$ln['telefone']."</td></tr>";
	 $i = 1;
	 }
   }
   echo "</table>";
}

?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Essa parte, tem como melhorar:

$i = 1;
   while($ln = mysql_fetch_assoc($qr)){
     if ($i == 1) {
      echo "<tr class='tst2'><td>".utf8_encode($ln['nome'])."</td><td>".$ln['telefone']."</td></tr>";
          $i = 2;
         } else {
         echo "<tr class='tst1'><td>".utf8_encode($ln['nome'])."</td><td>".$ln['telefone']."</td></tr>";
         $i = 1;
         }
   }
tem código repetido ai..

$i = 1;
	while($ln = mysql_fetch_assoc($qr)){
		$class =  ( $i%2==0 ) ? ' class="tst1"' : 'class="tst2"';
		
		echo '<tr'.$class.'><td>'.utf8_encode($ln['nome']).'</td><td>'.$ln['telefone'].'</td></tr>';
		$i++;
	}
em termos de código JS.. 'não é bom', trafegar toda essa tabela via AJAX.. seria 'mais rápido', trafegar apenas os dados, e ai sim montar as td, tr.. só que isso é mais complicado tb.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ah beleza, ja alterei aqui. Como trará no máximo uns 4 registros eu irei deixar assim mesmo, mas terei que fazer um relatório com esse mesmo raciocinio, entao precisarei aprender o jeito mais correto.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

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