Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

scpgirl28

problema em pesquisa

Mensagens Recomendadas

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>

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros 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)

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros 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

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros 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!

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros 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>";

?>

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros 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.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros 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

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros 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.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.