Jump to content

Recommended Posts

Posted

Boas,

este é o meu primeiro post aqui(desculpem estar já a pedir coisas) mais preciso urgentemente de ajuda... Eu e um meu outro companheiro estamos envolvidos na construção de um site de vendas online(que vende peças de automóvel) e a questão é esta:

Construímos um formulário(que estamos a tentar que seja um filtro de pesquisa rápida), onde quando seleciona-mos primeiro a marca, depois o modelo e de seguida o motor - este vá parar a página de produtos para cada modelo/marca especifica.(como por exemplo um que está neste site: http://www.mister-auto.pt/pt/ ).

O nosso grande problema é que queremos puxar da tabela os dados para cada select menu (por exemplo a audi para o primeiro select menu) e que estes vão impor condições quando seleccionados possamos ir buscar unicamente os modelos da audi(e não de todas as marcas, como acontece). Usamos recordset para ir buscar campos a base de dados, mas não estamos a conseguir efeito...

desde já convém referir que sou um principiante na programação,

obrigado pela vossa atenção

Rui(diesel10)

Posted (edited)

Viva,

Basicamente precisas de:

  • Um formulário HTML para permitir o input do utilizador
  • Ler os dados conforme o input do utilizador.
  • Mostrar os resultados em HTML

Exemplo super simples:

<?php

// Ler dados
$marcas = array('volvo', 'renault');
$modelos = array();
$resultados = array(); // Não existem resultados...

if (isset($_POST['marca'])) {
$modelos = array('laguna'); // ler modelos da marca seleccionada
$resultados = array(); // obter resultados, de uma base de dados ou XML, etc...
}
?>
<form method="post">
<label>Marca</label>
<select name="marca">
	<option value="volvo">Volvo</option>
</select>
<label>Modelo</label>
<select name="modelo"></select>
<input type="submit" value="Pesquisar" />
</form>

<h2>Resultados</h2>
<?php if (empty($resultados)) { ?>
<p>Não existem resultados</p>
<?php } else { ?>
<ul>
<?php foreach ($resultados as $item) { ?>
		<li><?php echo (string) $item; ?></li>
<?php } ?>
	</ul>
<?php } ?>
Edited by taviroquai
  • Vote 1
Posted

boas yoda,

tenho o form com um jumpmenumarca que está a receber os valores do campo CAR_BRANDS da tabela tablecars, seguido de um botão(que ao clicar está a ir para um url e não é o que quero(o probelma esta em onclick="MM_goToURL('parent','feito.php?<?php echo $row_rsmarca['CAR_BRANDS']; ?>=')), quero que ele passe o valor seleccionado para o jumpmenumodelo que está por baixo e que este vá buscar o modelo ao campo MODEL_CAR da mesma tabela, mas com a condição de que se por exemplo: se escolher AUDI em jumpmenumarca, em jumpmenumodelo irá ter de aparecer todos os modelos da audi ). Tenho ainda o jumpmenumotor(que também nao funciona e vai ter de depender do selecionado nos anteriores).

Obrigado pelo teu interesse, em baixo esta todo o código do form, qualquer coisa que esteja mal ou que falte para poderes me ajudar(podes ralhar à vontade 😁 ).

Abraço!!!

<?php require_once('Connections/con_site.php'); ?>
<?php require_once('Connections/con_site.php'); ?>
<?php require_once('Connections/con_site.php'); ?>
<?php
if (!function_exists("GetSQLValueString")) {
function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "")
{
if (PHP_VERSION < 6) {
$theValue = get_magic_quotes_gpc() ? stripslashes($theValue) : $theValue;
}
$theValue = function_exists("mysql_real_escape_string") ? mysql_real_escape_string($theValue) : mysql_escape_string($theValue);
switch ($theType) {
case "text":
 $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
 break;
case "long":
case "int":
 $theValue = ($theValue != "") ? intval($theValue) : "NULL";
 break;
case "double":
 $theValue = ($theValue != "") ? doubleval($theValue) : "NULL";
 break;
case "date":
 $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
 break;
case "defined":
 $theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue;
 break;
}
return $theValue;
}
}
mysql_select_db($database_con_site, $con_site);
$query_rsmarca = "SELECT DISTINCT CAR_BRANDS FROM tablecars";
$rsmarca = mysql_query($query_rsmarca, $con_site) or die(mysql_error());
$row_rsmarca = mysql_fetch_assoc($rsmarca);
$totalRows_rsmarca = mysql_num_rows($rsmarca);
$colname_Recordset1 = "0";
if (isset($_POST['CAR_BRANDS'])) {
$colname_Recordset1 = $_POST['CAR_BRANDS'];
}
mysql_select_db($database_con_site, $con_site);
$query_Recordset1 = sprintf("SELECT * FROM tablecars WHERE CAR_BRANDS = %s ORDER BY MODEL_CAR ASC", GetSQLValueString($colname_Recordset1, "text"));
$Recordset1 = mysql_query($query_Recordset1, $con_site) or die(mysql_error());
$row_Recordset1 = mysql_fetch_assoc($Recordset1);
$totalRows_Recordset1 = mysql_num_rows($Recordset1);
?>
<!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>Untitled Document</title>
<script type="text/javascript">
function MM_jumpMenuGo(objId,targ,restore){ //v9.0
var selObj = null; with (document) {
if (getElementById) selObj = getElementById(objId);
if (selObj) eval(targ+".location='"+selObj.options[selObj.selectedIndex].value+"'");
if (restore) selObj.selectedIndex=0; }
}
function MM_jumpMenu(targ,selObj,restore){ //v3.0
eval(targ+".location='"+selObj.options[selObj.selectedIndex].value+"'");
if (restore) selObj.selectedIndex=0;
}
function MM_goToURL() { //v3.0
var i, args=MM_goToURL.arguments; document.MM_returnValue = false;
for (i=0; i<(args.length-1); i+=2) eval(args[i]+".location='"+args[i+1]+"'");
}
</script>
</head>
<body>
<form name="form" id="form">
<p>
<select name="jumpMenuMarca" id="jumpMenuMarca" style="width:200px; height:30px; font-size:14px; font-family:Verdana, Geneva, sans-serif">
 <option value="">Selecionar marca</option>
 <?php
do {
?>
 <option value="<?php echo $row_rsmarca['CAR_BRANDS']?>"><?php echo $row_rsmarca['CAR_BRANDS']?></option>
 <?php
} while ($row_rsmarca = mysql_fetch_assoc($rsmarca));
$rows = mysql_num_rows($rsmarca);
if($rows > 0) {
 mysql_data_seek($rsmarca, 0);
$row_rsmarca = mysql_fetch_assoc($rsmarca);
}
?>
</select>
<input name="go_button" type="button" id= "go_button" style="width:30px; height:30px; font-size:18px; font-family:Verdana, Geneva, sans-serif" onclick="MM_goToURL('parent','feito.php?<?php echo $row_rsmarca['CAR_BRANDS']; ?>=');return document.MM_returnValue" value=">" />
</p>
<p>
<select name="jumpMenuModelo" disabled="disabled" id="jumpMenuModelo" style="width:200px; height:30px; font-size:14px; font-family:Verdana, Geneva, sans-serif">
 <?php
do {
?>
 <option value="<?php echo $row_Recordset1['MODEL_CAR']?>"><?php echo $row_Recordset1['MODEL_CAR']?></option>
 <?php
} while ($row_Recordset1 = mysql_fetch_assoc($Recordset1));
$rows = mysql_num_rows($Recordset1);
if($rows > 0) {
 mysql_data_seek($Recordset1, 0);
$row_Recordset1 = mysql_fetch_assoc($Recordset1);
}
?>
</select>
<input name="go_button2" type="button" disabled="disabled" id= "go_button2" style="width:30px; height:30px; font-size:18px; font-family:Verdana, Geneva, sans-serif" onclick="MM_jumpMenuGo('jumpMenu2','parent',0)" value=">" />
</p>
<p>
<select name="jumpMenuMotor" disabled="disabled" id="jumpMenuMotor" style="width:200px; height:30px; font-size:14px; font-family:Verdana, Geneva, sans-serif">
</select>
<input name="go_button3" type="button" disabled="disabled" id= "go_button3" style="width:30px; height:30px; font-size:18px; font-family:Verdana, Geneva, sans-serif" onclick="MM_jumpMenuGo('jumpMenu3','parent',0)" value=">" />
</p>
</form>
</body>
</html>
<?php
mysql_free_result($rsmarca);
mysql_free_result($Recordset1);
?>

boas taviroquai,,

obrigado pela tua simpatia e ajuda, amanha irei experimentar a tua sugestão e depois dou.te novidades!!

Abraço e boa noite!!

Posted (edited)

boas taviroquai,

muito obrigado pelo teu exemplo que me ajudou muito pois já consigo fazer o que pretendia, mas agora tenho uma dúvida.

Existe alguma forma de quando eu selecciono a marca, ele possa passar logo para o campo de seleccionar os modelos(ao mesmo tempo que me deixa visível o valor escolhido em marca sem o deixar o espaço em branco)? É que eu quando selecciono a marca ele não faz o submit automaticamente(tive que introduzir um botão que faz submit).

Abraço

<select name="marca"  style="width:300px; height:30px; font-size:18px;    font-family:Verdana, Geneva, sans-serif">
	    <option value=""></option>
	    <?php
do { 
?>
	    <option value="<?php echo $row_Recordset1['CAR_BRANDS']?>"><?php echo $row_Recordset1['CAR_BRANDS']?></option>
	    <?php
} while ($row_Recordset1 = mysql_fetch_assoc($Recordset1));
 $rows = mysql_num_rows($Recordset1);
 if($rows > 0) {
  mysql_data_seek($Recordset1, 0);
  $row_Recordset1 = mysql_fetch_assoc($Recordset1);
 }
?>
	  </select>
	  <input type="submit" name="botao1" class="btt" style="width:30px; height:30px; font-size:18px;    font-family:Verdana, Geneva, sans-serif" value=">" />
 </p>
 <p>
   <label class="selecionar">Selecionar o Modelo</label>
   <select name="modelo" style="width:300px; height:30px; font-size:18px;    font-family:Verdana, Geneva, sans-serif">
	    <?php
do { 
?>
	    <option value="<?php echo $row_Recordset2['MODEL_CAR']?>"><?php echo $row_Recordset2['MODEL_CAR']?></option>
	    <?php
} while ($row_Recordset2 = mysql_fetch_assoc($Recordset2));
 $rows = mysql_num_rows($Recordset2);
 if($rows > 0) {
  mysql_data_seek($Recordset2, 0);
  $row_Recordset2 = mysql_fetch_assoc($Recordset2);
 }
?>
   </select>
 <input type="submit" class="btt" style="width:30px; height:30px; font-size:18px;    font-family:Verdana, Geneva, sans-serif" value=">" /></p>
Edited by diesel10
Posted (edited)

Viva,

Basicamente precisas de:

  • Um formulário HTML para permitir o input do utilizador
  • Ler os dados conforme o input do utilizador.
  • Mostrar os resultados em HTML

Exemplo super simples:

<?php

// Ler dados
$marcas = array('volvo', 'renault');
$modelos = array();
$resultados = array(); // Não existem resultados...

if (isset($_POST['marca'])) {
$modelos = array('laguna'); // ler modelos da marca seleccionada
$resultados = array(); // obter resultados, de uma base de dados ou XML, etc...
}
?>
<form method="post">
<label>Marca</label>
<select name="marca">
	<option value="volvo">Volvo</option>
</select>
<label>Modelo</label>
<select name="modelo"></select>
<input type="submit" value="Pesquisar" />
</form>

<h2>Resultados</h2>
<?php if (empty($resultados)) { ?>
<p>Não existem resultados</p>
<?php } else { ?>
<ul>
<?php foreach ($resultados as $item) { ?>
		<li><?php echo (string) $item; ?></li>
<?php } ?>
	</ul>
<?php } ?>

Boas taviroquai,

Só para te dizer mais uma vez que a tua ajuda foi-me preciosa, e desculpa-me a pergunta, existe alguma forma de passar o valor ID especifico de cada carro/modelo/motor seleccionado directamente para uma página de categorias, manter até a página de produtos dependentes da categoria seleccionada, através do meu button <input type="submit">

<?php
// Ler dados
$marcas = array($row_Recordset1['CAR_BRANDS']);
$modelos = array();
$motores = array();
if (isset($_POST['marca'])) {
 $modelos = array('modelo'); // ler modelos da marca seleccionada
$motores = array('motor'); // ler motores da marca e modelo seleccionada

}
?>
Edited by diesel10

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.