Hoi,

Ik wil graag voor mijn site een uitgebreide zoek/selecteer pagina bouwen, denk aan bv hoe je op 'autotrader' een geschikte auto kiest, alleen dan niet voor auto;s..
:)

Alleen, t lijkt me nogal een lastig verhaal..maar misschien denk ik nu te moeilijk,
ik loop nu in ieder geval al tegen t volgende aan en volgen smij doe ik nu te veel met php, en kan dat veel beter met sql.

Ik heb een tabel met machines en een tabel met opties welke aan elkaar gekoppeld zij met een tabel machine_opties.Als test doe k nu het volgende:

Als ik nu een lijstje met alle opties maak, welke bijv. d.m.v een checkbox aangevinkt kunnen worden, verstuur ik het formulier, en vervolgens moet ik in de tabel machine_opties gaan kijken welke machine(s) voldoen aan deze opties, en vervolgens kan ik daar weer wat mee doen...

alleen aangezien alle opties binnenkomen als
optie[1]
optie[2]
etc

Moet ik lastige loop trucken uithalen met als resultaat dubbele resultaten,
en dan kijk ik nog maar naar 1 ding (opties), terwijl daar straks -als het goed is -
nog veel meer dingen bijkomen....

Kan iemand me uitleggen wat de beste manier is om zoiets aan te pakken?

Dit is waar ik nu mee zit te testen:
------------------------------

<? 
include "includes/config.php" ;
?>
<form name="form1" method="post" action="<? echo $PHP_SELF; ?>">
  <?
if (isset ($_POST["Submit"])) { // als er op opslaan is geklikt
echo "Zoekresultaat <br>";

if (isset ($_POST["optie"])) { // als er op opslaan is geklikt

foreach ($_POST["optie"] as $optie) { // voor elke aangevinkte optie

$sql = "
SELECT * FROM 
machine_opties AS mo
WHERE
mo.optie_id= $optie"; 

echo mysql_error();
$result = mysql_query($sql); 
while($r=mysql_fetch_array($result)){
echo $r['machine_id'] . '<br>';
}
}
}
}
?>
        <?
//// OPTIES
$sql=mysql_query("SELECT * FROM opties");
echo mysql_error();
while($r=mysql_fetch_array($sql)){
?>
        
  <p>
    <input type="checkbox" name="optie[]" value="<? echo $r['id'] ?>"/>
    <? echo $r['naam'] ?><br />
    <?
}
?>
  </p>
  <p>
    <input type="submit" name="Submit" value="Submit">
  </p>
</form>
<br>

--------
Dit kan bijv. als resultaat hebben:
Zoekresultaat
5
6
5

Waarbij id=5 nu twee keer voorkomt, terwijl ik id=5 (als advies) maar 1 keer wil tonen
Effen chillen...;-)))

Dat kan natuurlijk niet. EN 1 zijn en tegelijkertijd OOK 2 zijn.

Ik moet even weg. Misschien later weer.
SanThe.
ja..reutel..dat kan idd niet...

>:-#
ja.. ik zit te kijken, en in princiepe is dit wel wat ik zoek denk ik ik krijg alleen n error, maar snap niet zo goed waarom:

Zoekresultaat:
SELECT * FROM machine_opties WHERE optie_id = ALL (1)
You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'ALL (1)' at line 1
ja.. ik zit te kijken, en in princiepe is dit wel wat ik zoek denk ik ik krijg alleen n error, maar snap niet zo goed waarom:

Zoekresultaat:
SELECT * FROM machine_opties WHERE optie_id = ALL (1)
You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'ALL (1)' at line 1
Ik denk dat het je niet gaat lukken op deze manier aangezien optie_id natuurlijk maar 1 waarde kan hebben. Met ALL zeg je dat optie_id gelijk moet zijn aan alle waarden en dat klopt niet.
nee idd,.. zo doet ie het in princiepe wel:
Nu moet ik m alleen nog gaan combineren met een tweede selectie...
:)

<?
if ($_SERVER['REQUEST_METHOD'] == 'POST') // Is er op verstuur of enter geklikt?
{
echo "Zoekresultaat <br> --------------------<br>"; // kopje

if (isset($_POST["optie"]))
{
$alleopties = implode(', ', $_POST["optie"]);
$sql = "SELECT
machine_id,
count(*) AS opties
FROM machine,
machine_opties
WHERE machine.id=machine_opties.machine_id
AND optie_id IN (".$alleopties.")
GROUP BY machine_id
ORDER BY opties DESC,machine_id
";
echo $sql . "<br>";
echo "--------------------<br>"; // kopje

$result = mysql_query($sql);
echo mysql_error();
while($r=mysql_fetch_array($result))
{
if(sizeof($_POST['optie'])==$r['opties'])
{
echo 'Machine id: '.$r['machine_id'].' Opties:'.$r['opties'] . '<br>';
}
}
}
}
echo "--------------------<br>"; // kopje

?>

Reageren