Jump to content
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

Sign in to follow this  
scpgirl28

problema em pesquisa

Recommended Posts

scpgirl28

Boa noite a todos... eu estou a fazer um trabalho da escola e tou com algumas dificuldades neste codigo (da para ver plas horas a que tou aqui  :wallbash:) eu estava a realizar uma pesquisa a base de dados para que está me devolvesse as marcas e os modelos associados a cada carro... so que na list box aparecem as marcas mas não estou a conseguir chamar os modelos:   

<?php
$dbHost="****"; // ele existe, mas é para nao o divulgar
$dbUser="scpgirl";
$dbPass="******"; //tambem ela existe
$dbDatabase="stand_tsl";
$db=mysql_connect($dbHost, $dbUser, $dbPass) or die("Erro ao aceder ao servidor!!");
mysql_select_db("$dbDatabase", $db) or die( "Unable to select database");
echo '<form name=pesquisa action="pesquisa_carros.php" method=GET><p>';

$aux= mysql_query("select cod_marca,marca from marcas",$db);
//numero de marcas
$num_marcas= mysql_numrows($aux);

if($num_marcas>0)
{
$i=0;
echo 'Marca:<select name="marca" size="1" onChange="pesquisa.submit();">';
echo '<option value="0">Escolha uma Marca!</option>';
while($i<$num_marcas)
        {
          $marca=mysql_result($aux,$i,"marca");
          $cod_marca=mysql_result($aux,$i,"cod_marca");
  if (isset($_GET['cod_marca']) && !empty($_GET['marca']))
		{
		if($id_marca==$_GET['marca'])
			echo '<option selected ="true" value="'.$cod_marca.'">'.$marca."</option>"; 
		else			          
			echo '<option value="'.$cod_marca.'">'.$marca."</option>"; 
		}
  else			          
			echo '<option value="'.$cod_marca.'">'.$marca."</option>";       
 $i++;        
}
echo '</select> ';
if (isset($_GET['marca']) && !empty($_GET['marca']))
{	
	$aux=mysql_query("select cod_modelo,modelo from modelo where fkcod_marca=".$_GET['marca'],$db);	
	$num_modelos=mysql_numrows($aux);	
	if($num_modelos=0)
		{
			echo 'Nao Existem Modelos da Marca Seleccionada!!<br>Escolha Outra Marca';			
		}
	else
		{
			$i=0;				
echo 'Modelo:<select name="modelo" size="1" onChange="pesquisa.submit();">';
echo '<option value="0">Escolha um Modelo!</option>';
while($i<$num_modelos)
        {
          $modelo=mysql_result($aux,$i,"modelo");
          $cod_modelo=mysql_result($aux,$i,"cod_modelo");
  if (isset($_GET['cod_modelo']) && !empty($_GET['modelo']))
		{
		if($id_modelo==$_GET['modelo'])
			echo '<option selected ="true" value="'.$cod_modelo.'">'.$modelo."</option>"; 
		else			          
			echo '<option value="'.$cod_modelo.'">'.$modelo."</option>"; 
		}
  else			          
			echo '<option value="'.$cod_modelo.'">'.$modelo."</option>";       
 $i++;        
}
echo '</select> ';			}
}
echo '</p></form>';
}
//sem filtro
?>
<iframe src ="resultadoTabela.php?cod_marca=<?php echo $_GET['marca'];?>&cod_modelo=<?php echo $_GET['modelo'];?>" width="100%" height="300">
  <p>Your browser does not support iframes.</p>
</iframe>

Share this post


Link to post
Share on other sites
Cynary

O problema está nesta linha:

      if($num_modelos=0)

Isso atribui o valor zero ao $num_modelos. Como o valor zero corresponde à falsidade, e é isso que é devolvido ao if inicial, continua o programa no else.

Mas depois chega a esta linha:

while($i<$num_modelos)

Como colocaste $num_modelos a 0, e o $i a 0 antes, significa que $i = $num_modelos, logo essa condição é sempre falsa, e o conteúdo do while nunca é executado.

Basta alterares a linha que eu mencionei para:

      if($num_modelos==0)

ou

      if(!$num_modelos)

Share this post


Link to post
Share on other sites
scpgirl28

continua a dar erro... quando escolho a marca que quero utilizar ele faz um genero de refresh a pagina e nao exibe os campos que devia exibir

Share this post


Link to post
Share on other sites
scpgirl28

tipo ele mostra as marcas que existem assim como os modelos (em listBox) mas depois quando deve meter aquilo numa tabela não o faz!

Share this post


Link to post
Share on other sites
Cynary

Então o script que nos mostraste trabalha bem.

Tens de nos mostrar o das tabelas para podermos analisar.

Share this post


Link to post
Share on other sites
scpgirl28

aqui está:

<?php

echo "Resultado Tabela <br>";

echo "Marca:".$_GET['cod_marca']."<br>";

echo "Modelo:".$_GET['cod_modelo']."<br>";

if (isset($_GET['cod_marca']) && !empty($_GET['cod_marca']))

{

$query="select marca, modelo, usado_novo, preco from carros,modelos,marcas where cod_marca=fkcod_marca and cod_modelo=fkcod_modelo"." and cod_marca=".$_GET['cod_marca'];

//consulta com modelo e marca

if (isset($_GET['cod_modelo']) && !empty($_GET['cod_modelo']))

{

$query=$query." and cod_modelo=".$_GET['cod_modelo'];

}

}

?>

<?php

//phpinfo();

$dbHost="**";

$dbUser="**";

$dbPass="**";

$dbDatabase="**";

mysql_connect($Host,$dbUser,$dbPass);

@mysql_select_db($dbDatabase) or die( "Unable to select database");

$result=mysql_query($query);

$num=mysql_numrows($result);

mysql_close();

echo "<b><center>Base de Dados Stand TSL</center></b><br><br>";

?>

<table border="1" cellspacing="1" cellpadding="1">

<tr>

<th><font face="Arial, Helvetica, sans-serif">Marca</font></th>

<th><font face="Arial, Helvetica, sans-serif">Modelo </font></th>

<th><font face="Arial, Helvetica, sans-serif">usado_novo</font></th>

<th><font face="Arial, Helvetica, sans-serif">Preço </font></th>

</tr>

<?php

$i=0;

while ($i < $num) {

$marca=mysql_result($result,$i,"marca");

$modelo=mysql_result($result,$i,"modelo");

$usado_novo=mysql_result($result,$i,"usado_novo");

$preco=mysql_result($result,$i,"preco");

?>

<tr>

<td><font face="Arial, Helvetica, sans-serif"><?php echo $marca." ".$modelo; ?></font></td>

<td><font face="Arial, Helvetica, sans-serif"><?php echo $usado_novo; ?></font></td>

<td><font face="Arial, Helvetica, sans-serif"><?php echo $preco; ?></font></td>

</tr>

<?php

$i++;

}

echo "</table>";

?>

Share this post


Link to post
Share on other sites
Cynary

Esconde a pass e servidor, se forem reais.

O script não parece ter erro nenhum :/

O problema pode é estar no browser que o interpreta, pois visitei o teu site xD e funcionou o script que tinhas.

Share this post


Link to post
Share on other sites
scpgirl28

o meu stor teve a ver a base de dados e nao vale a pena.. obrigado pela ajuda... isto nao tem remedio! a base de dados ta lixada

Share this post


Link to post
Share on other sites
Cynary

Algumas sugestões: usa menos tabelas, para este trabalho bastava-te uma, no máximo duas. Em vez de mysql_result usa mysql_fetch_array.  Usa queries mais simples. No query da tabela, perdi-me xd (isto é conseguido ao usares menos tabelas). Um erro grave que fizeste foi usar input externo não tratado no teu query que abre as portas a sql injection.

Share this post


Link to post
Share on other sites

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.