Jump to content
GC90PT

Dúvida Obter Resultados Combobox

Recommended Posts

GC90PT

Boas, estou a desenvolver um site(stand online) em php mas estou encalhado , pois estou a começar em php e ainda não pesco muito disto. Basicamente selecciono a marca e modelo de um automóvel nas combo e quero que me aparecam os resultados dessa pesquisa noutra página .

  Para implementar a combobox utilizei os scripts php + jquery postados num tópico parecido :

http://www.inovador.net/scripts_para_demo/combos.rar

Desde já obrigado  :)

Share this post


Link to post
Share on other sites
brunoais

Experimenta o método submit()

Experimenta o método addEventListner() OU o atributo onchange do select (suponho que qd falas em combo box que falas em select box)

Experimenta ver sobre a tag form


"[Os jovens da actual geração]não lêem porque não envolve um telecomando que dê para mirar e atirar, não falam porque a trapalhice é rainha e o calão é rei" autor: thoga31

Life is a genetically transmitted disease, induced by sex, with death rate of 100%.

Share this post


Link to post
Share on other sites
ruimcosta

Boas, estou a desenvolver um site(stand online) em php mas estou encalhado , pois estou a começar em php e ainda não pesco muito disto. Basicamente selecciono a marca e modelo de um automóvel nas combo e quero que me aparecam os resultados dessa pesquisa noutra página .

  Para implementar a combobox utilizei os scripts php + jquery postados num tópico parecido :

http://www.inovador.net/scripts_para_demo/combos.rar

Desde já obrigado  :P

Viva,

Precisas de submeter esse formulário para obteres a selecção noutra página?

Efectua estas alterações no script:

<form action="outrapagina.php" method="post">
<div>Distritos</div>
<?php
$sql = "select * from distritos order by distrito asc";
    $rs  = mysql_query($sql);
    $row = mysql_fetch_array($rs);
    //Primeiro distrito seleccionado
    $idd = $row['nid'];
    
   	$sql = "select * from distritos order by distrito asc";
    $rs  = mysql_query($sql);
    
    echo '<select id="cmbdistritos">'."\r\n";
    
    if( mysql_num_rows($rs) > 1 ){
    	while( $row = mysql_fetch_array($rs) ){
     	   echo '<option value="'.$row['nid'].'">'.$row['distrito'].'</option>'."\r\n";
        }
}
    
    echo '</select>';
        
?>
<br /><br />
<div>Concelhos</div>
<?php
$sql = "select * from concelhos where nid_distrito = '$idd' order by concelho asc";
    $rs  = mysql_query($sql);
    
    echo '<select id="cmbconcelhos">'."\r\n";
    
    if( mysql_num_rows($rs) > 1 ){
    	while( $row = mysql_fetch_array($rs) ){
     	   echo '<option value="'.$row['nid'].'">'.$row['concelho'].'</option>'."\r\n";
        }
}
    
    echo '</select>';
        
?>
<input type="submit" value="Enviar" />
</form>

Adicionei as linhas <form></form> e o input type="submit"


Abraços e beijinhos,Rui Costa

Share this post


Link to post
Share on other sites
GC90PT

Boas,estou com dificuldade em obter os resultados preenchidos na combo box na segunda página,apresento o código abaixo, o primeiro script faz uma query às tabelas marcas e modelos para mostrar as marcas e respectivos modelos e o segundo vai buscar a informação dos automóveis de uma outra tabela e despejá-los na pesquisa2.php consoante os dados introduzidos

require_once "connect.php";
<form action="pesquisa2.php" method="post">
            <div>Marcas</div>
<?php
$sql = "select * from marcas order by desc_marca asc";
    $rs  = mysql_query($sql);
    $row = mysql_fetch_array($rs);

    $idd = $row['cod_marca'];
    
    $sql = "select * from marcas order by desc_marca asc";
    $rs  = mysql_query($sql);
    
    echo '<select id="cmbdesc_marca">'."\r\n";
    
    if( mysql_num_rows($rs) > 1 ){
    	while( $row = mysql_fetch_array($rs) ){
     	   echo '<option value="'.$row['cod_marca'].'">'.$row['desc_marca'].'</option>'."\r\n";
        }
}
    
    echo '</select>';
        
?>
<br /><br />
<div>Modelos</div>
<?php

$sql = "select * from modelos where cod_marca = $idd order by desc_modelo asc";
    $rs  = mysql_query($sql);
    
    echo '<select id="cmbdesc_modelo">'."\r\n";
    
    if( mysql_num_rows($rs) > 1 ){
    	while( $row = mysql_fetch_array($rs) ){
     	   echo '<option value="'.$row['cod_marca'].'">'.$row['desc_modelo'].'</option>'."\r\n";
        }
}
    
    echo '</select>';
?>

<br>
<input type="submit" value="Obter Resultados">
</form>

<script language="javascript">
$(document).ready(function() {  

    //Aqui começa a magia do jquery
    // Vamos precisar de outro ficheiro php que obtenha apenas os modelos
    // este ficheiro será invocado via AJAX
    
    // Evento change sobre a combo das marcas
    $("#cmbdesc_marca").change(function(){
        var id_marca = $(this).val();
                
        $.post(
            "get_modelos.php",
            {id: id_marca},
            function(data) {
                // Aqui irão surgir os dados retornados pelo ficheiro get_modelos.php
                // Esvaziamos a combo dos modelos e enchemos com os dados retornados
                
                $("#cmbdesc_modelo").empty().html(data);
               
            }
        );
    });
});
</script>

pesquisa2.php

<?php
mysql_connect("localhost","root","");
mysql_select_db("svirtual");
$cod_marca=$_POST['cod_marca'];
$cod_modelo=$_POST['cod_modelo'];
//$cod_marca=1;
//$cod_modelo=1;
$result=mysql_query("select * from viaturas where cod_marca=$cod_marca and cod_modelo=$cod_modelo");

?>
<table align="center" border=1>
<tr>
<th>Matricula</th>
<th>Numero de Kilómetros </th>
<th>Preço </th>
<th>Cor </th>
<th>Modelo</th>
<th>Marca </th>
<th>Ano</th>
<th>Categoria</th>
<th>Imagem</th>
</tr>
<?php
    while($row=mysql_fetch_array($result))
       {
        echo '<tr><td>'.$row["cod_viatura"].'</td>';
        echo '<td>'.$row['n_kilometros'].'</td>';
        echo '<td>'.$row['preco'].'</td>';
        echo '<td>'.$row["cor"].'</td>';
        echo '<td>'.$row["modelo"].'</td>';
        echo '<td>'.$row["marca"].'</td>';
        echo '<td>'.$row['ano'].'</td>';
        echo '<td>'.$row["categoria"].'</td>';
echo "<td><img src='$row[9]' width=223 height=100></td></tr>";

       }
        mysql_free_result($result)
?>

aqui está o problema,ele não reconhece o $ post das marcas e modelos , ou seja o que o user introduziu na combobox e dá-me o seguinte erro abaixo , mas se definir o modelo e marca num valor fixo ele funciona,

errors:

Notice: Undefined index: cod_marca in C:\wamp\www\pesquisa2.php on line 52

Notice: Undefined index: cod_modelo in C:\wamp\www\pesquisa2.php on line 53

Matricula Numero de Kilómetros  Preço  Cor  Modelo Marca  Ano Categoria Imagem

Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in C:\wamp\www\pesquisa2.php on line 72

Warning: mysql_free_result() expects parameter 1 to be resource, boolean given in C:\wamp\www\pesquisa2.php on line 85

Se pudessem ajudar agradecia  :)

Share this post


Link to post
Share on other sites
mjamado

Os elementos de formulário têm que ter definida a propriedade name, se quiseres que os seus valores cheguem ao servidor; o valor estará disponível num dos arrays, $_GET ou $_POST, consoante o método de envio do formulário, na chave com o mesmo nome do name.

Resumindo: coloca name nos select.


"Para desenhar um website, não tenho que saber distinguir server-side de client-side" - um membro do fórum que se auto-intitula webdesigner. Temo pelo futuro da web.

Share this post


Link to post
Share on other sites
GC90PT

Os elementos de formulário têm que ter definida a propriedade name, se quiseres que os seus valores cheguem ao servidor; o valor estará disponível num dos arrays, $_GET ou $_POST, consoante o método de envio do formulário, na chave com o mesmo nome do name.

Resumindo: coloca name nos select.

já fiz isso mas não funcou.Não sei se é erro meu , apenas adicionei name aos select dentro do form

Share this post


Link to post
Share on other sites
ruimcosta

biba,

Põe aí o código e informa o que acontece e o como querias que funcionasse.

Abraço,


Abraços e beijinhos,Rui Costa

Share this post


Link to post
Share on other sites
GC90PT

boas,aqui vai o código então,

<form action="pesquisa2.php" method="post">
            <div>Marcas</div>
<?php
$sql = "select name * from marcas order by desc_marca asc";
    $rs  = mysql_query($sql);
    $row = mysql_fetch_array($rs);

    $idd = $row['cod_marca'];
    
    $sql = "select name * from marcas order by desc_marca asc";
    $rs  = mysql_query($sql);
    
    echo '<select id="cmbdesc_marca">'."\r\n";
    
    if( mysql_num_rows($rs) > 1 ){
    	while( $row = mysql_fetch_array($rs) ){
     	   echo '<option value="'.$row['cod_marca'].'">'.$row['desc_marca'].'</option>'."\r\n";
        }
}
    
    echo '</select>';
        
?>
<br /><br />
<div>Modelos</div>
<?php

$sql = "select name * from modelos where cod_marca = $idd order by desc_modelo asc";
    $rs  = mysql_query($sql);
    
    echo '<select id="cmbdesc_modelo">'."\r\n";
    
    if( mysql_num_rows($rs) > 1 ){
    	while( $row = mysql_fetch_array($rs) ){
     	   echo '<option value="'.$row['cod_marca'].'">'.$row['desc_modelo'].'</option>'."\r\n";
        }
}
    
    echo '</select>';
?>

<br>
<input type="submit" value="Obter Resultados">
</form>

<script language="javascript">
$(document).ready(function() {  

    //Aqui começa a magia do jquery
    // Vamos precisar de outro ficheiro php que obtenha apenas os modelos
    // este ficheiro será invocado via AJAX
    
    // Evento change sobre a combo das marcas
    $("#cmbdesc_marca").change(function(){
        var id_marca = $(this).val();
                
        $.post(
            "get_modelos.php",
            {id: id_marca},
            function(data) {
                // Aqui irão surgir os dados retornados pelo ficheiro get_modelos.php
                // Esvaziamos a combo dos modelos e enchemos com os dados retornados
                
                $("#cmbdesc_modelo").empty().html(data);
               
            }
        );
    });
});
</script>

dá-me este erro:

Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in C:\wamp\www\pesquisa.php on line 71

o que eu queria é que o user seleccionasse a marca e modelo e de seguida ao submeter ele fosse buscar ás tabela das viaturas todos os campos  e os despejasse na outra página consoante a pesquisa feita,imaginemos que ele selecciona marca:bmw e modelo:320d ,esses mesmos correspondentes a um cod_marca e cod_modelo , é executada uma query á tabela ,e ai está o problema, como já disse se eu associar o cod_marca/modelo a um valor fixo ,funciona, mas  quando é uma variável não reconhece os valores do $post

Espero ter sido explicito

Share this post


Link to post
Share on other sites
brunoais

O erro faz todo o sentido. O mysql_query() retorna false. Agora pq é q retorna false? bem...

$sql = "

select name * from marcas order by desc_marca asc

";

Acho q na parte entre o select e o from tem um erro de sintaxe.....


"[Os jovens da actual geração]não lêem porque não envolve um telecomando que dê para mirar e atirar, não falam porque a trapalhice é rainha e o calão é rei" autor: thoga31

Life is a genetically transmitted disease, induced by sex, with death rate of 100%.

Share this post


Link to post
Share on other sites
GC90PT

O erro faz todo o sentido. O mysql_query() retorna false. Agora pq é q retorna false? bem...

$sql = "

select name * from marcas order by desc_marca asc

";

Acho q na parte entre o select e o from tem um erro de sintaxe.....

isso foi a solução que me sugeriram,colocar name de seguida dos selects , se quiseres dar uma olhadela no prblema inicial está descrito acima  ;)

Share this post


Link to post
Share on other sites
mjamado

isso foi a solução que me sugeriram,colocar name de seguida dos selects , se quiseres dar uma olhadela no prblema inicial está descrito acima  ;)

OMG!  :)

Nestes select:

echo '<select name="cmbdesc_marca" id="cmbdesc_marca">'."\r\n";


"Para desenhar um website, não tenho que saber distinguir server-side de client-side" - um membro do fórum que se auto-intitula webdesigner. Temo pelo futuro da web.

Share this post


Link to post
Share on other sites
taviroquai

isso foi a solução que me sugeriram,colocar name de seguida dos selects , se quiseres dar uma olhadela no prblema inicial está descrito acima  ;)

Essa foi boa  :)

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

×
×
  • Create New...

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.