Jump to content


Photo

Resultado De Busca Em Tabela


  • Faça o login para participar
3 replies to this topic

#1 renatagramos

renatagramos

    Novato no fórum

  • Usuários
  • 17 posts
  • Sexo:Feminino
  • Localidade:São Paulo

Posted 19/03/2011, 00:23

Pessoal,

Estou com dois problemas em meu código de busca ao banco de dados:

1. A tela inicial já vem com o resultado do primeiro if, mesmo antes de clicar no botão "Consultar".

2. Se não houver resultado, ele monta a tabele do mesmo jeito, sem nenhuma linha, e não mostra o último else.

Deve ser bem simples. Alguém pode me ajudar?Attached File  form_consultar.php   2.65KB   0 downloads


Segue meu código:

<?php
include "../config.php";
?>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<link rel="stylesheet" type="text/css" href="estilos.css"/>
</head>

<body>

<form id="consulta_cliente" name="consulta_cliente" method="post" action="form_consultar.php">

<table align="center" width="700" border="5" bordercolor="#536A78" width="100%" bordercolordark="#536A78" bordercolorlight="#536A78" cellspacing="5" cellpadding="5">

<tr>
<td valign="middle" align="left"><font face="arial" size="2">Argumento de Busca:</td>
<td width="400"><input name="cli_razao" type="text" id="cli_razao" size="100" maxsize="50"></td>
</tr>

<tr>
<td colspan="2" align="center"><p>
<input name="limpar" type="reset" id="limpar" value="Limpar" />
<input name="consultar" type="submit" id="consultar" value="Consultar"/>

</td>
</tr>

</table>
</form>
</body>
</html>

<?php

$razao = trim($_POST['cli_razao']);
if ($razao == ""){
echo "<p align=\"center\"><font face=arial size=2 color=#ff0000>Sem argumentos para a consulta!</font>";
}
else {
//Consulta ao Mysql
$qry = mysql_query("SELECT cli_id as 'ID', cli_razao as 'RAZÃO SOCIAL', cli_fantasia as 'NOME FANTASIA', cli_cnpj as 'CNPJ', cli_end as 'ENDEREÇO', cli_bairro as 'BAIRRO', cli_cep as 'CEP', cli_cidade as 'CIDADE', cli_uf as 'ESTADO' FROM cad_cliente WHERE cli_razao LIKE '%".$razao."%' ORDER BY cli_id");

//Pegando os nomes dos campos
$num_fields = mysql_num_fields($qry);//Obtém o número de campos do resultado

// consulta quantas linhas foram encontradas
$cont = mysql_num_rows($qry);

if ($num_fields != 0) {

for($i = 0;$i<$num_fields; $i++){//Pega o nome dos campos
$fields[] = mysql_field_name($qry,$i);
}
//Montando o cabeçalho da tabela
$table = '<table border="1" bordercolor=#cecece cellspacing="0" cellpadding="2" bgcolor="#f9f9f9"><tr>';

for($i = 0;$i < $num_fields; $i++){
$table .= '<th><font size=1 face=arial>'.$fields[$i].'</th>';
}
//Montando o corpo da tabela
$table .= '<tbody>';
while($r = mysql_fetch_array($qry)){
$table .= '<tr>';
for($i = 0;$i < $num_fields; $i++){
$table .= '<td><font size=1 face=arial>'.$r[$fields[$i]].'</td>';
}
$table .= '</tr>';
}
//Finalizando a tabela
$table .= '</tbody></table></font>';

//Imprimindo a tabela
echo "".$table."<p align=\"left\"><font face=arial size=1>Total de cliente encontrados: " .$cont."</font>";
}
else {
echo "Nenhum cliente foi encontrado com a palavra ".$razao."";// ESTA LINHA NÃO ESTÁ FUNCIONANDO
}
}
?>
<p align="center"><a href="javascript:history.go(-1)"><img src="../imagens/voltar.jpg" alt="Voltar" border="0" align="center"></a>

#2 Bruno Vinicius

Bruno Vinicius

    Novato no fórum

  • Usuários
  • 1 posts
  • Sexo:Masculino
  • Localidade:Contagem, MG

Posted 19/03/2011, 14:02

Renata, boa tarde!

inclui a linha if(isset($_POST['consultar'])) que executa os códigos apenas quando o usuário clicar em consultar.
alterei tambem o while para exibir os resultados, se não der certo, sempre quando registros do banco de dados não forem exibidos, escreva echo $sql, onde $sql é o comando SQL que você está tentando executar, e jogue o resultado no banco de dados para ver se o erro é na SQL que você escreveu.

segue o código (Não há como saber se está rodando pois não tenho as tabelas criadas no meu computador para poder testar).


<?php
include "../config.php";
?>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<link rel="stylesheet" type="text/css" href="estilos.css"/>
</head>

<body>

<form id="consulta_cliente" name="consulta_cliente" method="post" action="form_consultar.php">

<table align="center" width="700" border="5" bordercolor="#536A78" width="100%" bordercolordark="#536A78" bordercolorlight="#536A78" cellspacing="5" cellpadding="5">

<tr>
<td valign="middle" align="left"><font face="arial" size="2">Argumento de Busca:</td>
<td width="400"><input name="cli_razao" type="text" id="cli_razao" size="100" maxsize="50"></td>
</tr>

<tr>
<td colspan="2" align="center"><p>
<input name="limpar" type="reset" id="limpar" value="Limpar" />
<input name="consultar" type="submit" id="consultar" value="Consultar"/>

</td>
</tr>

</table>
</form>
</body>
</html>

<?php
if (isset($_POST['consultar'])) //faz com que o que está dentro do if, só seja executado se o usuário clicar em 'Consultar'
{
$razao = trim($_POST['cli_razao']);
if ($razao == ""){
echo "<p align=\"center\"><font face=arial size=2 color=#ff0000>Sem argumentos para a consulta!</font>";
}
else {
//Consulta ao Mysql
$qry = mysql_query("SELECT cli_id as 'ID', cli_razao as 'RAZÃO SOCIAL', cli_fantasia as 'NOME FANTASIA', cli_cnpj as 'CNPJ', cli_end as 'ENDEREÇO', cli_bairro as 'BAIRRO', cli_cep as 'CEP', cli_cidade as 'CIDADE', cli_uf as 'ESTADO' FROM cad_cliente WHERE cli_razao LIKE '%".$razao."%' ORDER BY cli_id");

//Pegando os nomes dos campos
$num_fields = mysql_num_fields($qry);//Obtém o número de campos do resultado

// consulta quantas linhas foram encontradas
$cont = mysql_num_rows($qry);

if ($num_fields != 0) {

for($i = 0;$i<$num_fields; $i++){//Pega o nome dos campos
$fields[] = mysql_field_name($qry,$i);
}
//Montando o cabeçalho da tabela
$table = '<table border="1" bordercolor=#cecece cellspacing="0" cellpadding="2" bgcolor="#f9f9f9"><tr>';

for($i = 0;$i < $num_fields; $i++){
$table .= '<th><font size=1 face=arial>'.$fields[$i].'</th>';
}
//Montando o corpo da tabela
$table .= '<tbody>';
while($r = mysql_fetch_array($qry)){
echo "<td>".$r['0']."</td><td>".$r['1']."</td><td>".$r['2']."</td><td>".$r['3']."</td><td>".$r['4']."</td><td>".$r['5']."</td><td>".$r['6']."</td><td>".$r['7']."</td><td>".$r['8']."</td><td>";
}
echo "</tr>";
}
//Finalizando a tabela
$table .= '</tbody></table></font>';

//Imprimindo a tabela
echo "".$table."<p align=\"left\"><font face=arial size=1>Total de cliente encontrados: " .$cont."</font>";
}
else {
echo "Nenhum cliente foi encontrado com a palavra $razao";// ESTA LINHA NÃO ESTÁ FUNCIONANDO
}
}
}//fecha o if(isset(...))
?>
<p align="center"><a href="javascript:history.go(-1)"><img src="../imagens/voltar.jpg" alt="Voltar" border="0" align="center"></a>



Qualquer coisa, estou à disposição

#3 renatagramos

renatagramos

    Novato no fórum

  • Usuários
  • 17 posts
  • Sexo:Feminino
  • Localidade:São Paulo

Posted 21/03/2011, 11:22

Olá, Bruno!

O primeiro problema foi resolvido perfeitamente. Muito obrigada pela ajuda!!!!

O segundo não deu certo. Tentei seguir suas instruções, mas não consegui.

De qualquer forma o problema maior era mesmo a falta do if isset.


Obrigada!!!!

#4 renatagramos

renatagramos

    Novato no fórum

  • Usuários
  • 17 posts
  • Sexo:Feminino
  • Localidade:São Paulo

Posted 04/06/2011, 19:21

[RESOLVIDO]

Consegui!!!

O código ficou assim:

if (isset($_GET['consultar'])) 
{

$razao = trim($_GET['cli_razao']);
if ($razao == ""){
echo "<p align=\"center\"><font face=arial size=2 color=#ff0000>Sem argumentos para a consulta!</font>";
	  }
	  else {

$qry = mysql_query("SELECT cli_id as 'ID', cli_razao as 'RAZÃO SOCIAL', cli_fantasia as 'NOME FANTASIA', concat(cli_cpf, cli_cnpj) as 'CPF / CNPJ', concat(cli_end, ', ', cli_end_num) as 'ENDEREÇO', cli_bairro as 'BAIRRO', cli_cep as 'CEP', cli_cidade as 'CIDADE', cli_uf as 'ESTADO' FROM cliente WHERE (cli_razao LIKE '%".$razao."%') AND (contrato_status_cli <> 'CANCELADO') ORDER BY cli_id");
$num_fields = mysql_num_fields($qry);
$cont = mysql_num_rows($qry);

if($cont==0 or empty($cont)) { // O PROBLEMA ESTAVA AQUI! [RESOLVIDO]
echo "<p align=\"center\"><br><font face=arial size=2>Nenhum cliente foi encontrado com o argumento: '".$razao."'</font>";   
} else {

for($i = 0;$i<$num_fields; $i++){
	$fields[] = mysql_field_name($qry,$i);
}
$table = '<table border="1" bordercolor=#cecece cellspacing="0" cellpadding="2" bgcolor="#f9f9f9"><tr>';

for($i = 0;$i < $num_fields; $i++){
	$table .= '<th><font size=1 face=arial>'.$fields[$i].'</th>';
}

$table .= '<tbody>';
while($r = mysql_fetch_array($qry)){
	$table .= '<tr>';
	for($i = 0;$i < $num_fields; $i++){
		$table .= '<td><font size=1 face=arial>'.$r[$fields[$i]].'</td>';
	}
	$table .= '</tr>';
}

$table .= '</tbody></table></font>';


echo "<p align=\"center\"><font face=arial size=2>Resultado da busca para: '".$razao."'</font><br>";
echo "<p align=\"center\"><br>".$table."<br><font face=arial size=1>Total de clientes encontrados: " .$cont."</font>";
   }
	}
	}

Edição feita por: renatagramos, 04/06/2011, 19:22.





1 user(s) are reading this topic

0 membro(s), 1 visitante(s) e 0 membros anônimo(s)

IPB Skin By Virteq