Wat is de juiste manier om het volgende te doen?

ik heb een produktpagina. (tabel machine)
Ik wil een lijstje maken met een aantal opties (tabel opties)
vervolgens wil ik een lijst met alle opties maken met ee checkbox en per optie kijken of deze optie bestaat voor dit produkt (in de koppeltabel) om vervolgens bij elke checkbox t ekijken of hij aan of uit is.
Bedankt voor de mededeling mijn toestemming heb je :)
Doe wat je niet laten kan ;D

Maar volgens mij moet je het nog even wat duidelijker uitleggen, denk ik.
ja..ok.. is misschien wel zo duidelijk he..

maar ik ben al wat op weg...
ik wil een lijst genereren, van opties, elk met een id,
en vervolgens bij elke optie checken of er in een koppeltabel een record bestaat met hetzelfde id, vervolgens zet ik een checkbox aan of uit.

ik dacht t zo op te lossen
//// OPTIES
$sql = "select * from opties";
$result = mysql_query($sql);

$sql2 = "select * from machine_opties";
$result2 = mysql_query($sql2);

while ($data = mysql_fetch_array($result)) {


// de variabelen
$data2 = mysql_fetch_array($result2);
$search_array = $data2;

$key = $data['id'];

if (array_key_exists($key, $search_array)) {
$check = 'id bestaat';
}
else {
$check = 'id bestaat niet';
}
echo $check;
}
.en dit doet wel watt moet doen; er staat 1 record in d ekoppeltabel die overeenkomt en er zijn 7 opties.

dit is de output, echter nog wel met een error:
id bestaat
Warning: array_key_exists(): The second argument should be either an array or an object in
Je gaat in ieder geval hier de fout in:
<?php
$data2 = mysql_fetch_array($result2);
$search_array = $data2;
(...)
if (array_key_exists($key, $search_array))
?>
Allereerst, waarom hernoem je $data2 naar $search_array. Beetje overbodig in dit geval. Daarnaast bevat $search_array alleen de laatste rij van je resultset. En ik neem aan dat je alle rijen in die array wilt hebben.

Wat ik ook niet snap is dat je bij beide queries die je uitvoert alle resultaten uit een tabel ophaalt. Er is nu totaal geen relatie tussen deze twee result set en je gaat ze wel met elkaar gebruiken.

Ik zou zoiets doen:

SELECT
    opties.id,
    machine_opties.id
FROM
    opties
LEFT JOIN
    machine_opties
ON
    opties.id = machine_opties.optieID


machine_opties.optieID moet je even de juiste naam geven. Dit is de foreign key in de tabel machine_opties die naar de tabel opties verwijst.

Vervolgens krijg je een resultaat-set terug met alle id's uit de optie tabel. Als er een overeenkomstig id in de koppeltabel gevonden is, wordt dat ook teruggegeven. Zo niet, dat wordt er op die plaats 'null' terug gegeven.
mm ja.. maar ik krijg hier geen result mee:

<?

include 'includes/config.php';

$sql = "
SELECT
opties.id,
machine_opties.id <---- in koppeltabel gebruik ik machine_id en optie_id
FROM
opties
LEFT JOIN
machine_opties
ON
opties.id = machine_opties.optie_id";

while($r=mysql_fetch_array($sql)){

doe iets...

}
?>
Je voert je query ook nergens uit?
<?

include 'includes/config.php';

$sql = "
SELECT
opties.id,
machine_opties.id
FROM
opties
LEFT JOIN
machine_opties
ON
opties.id = machine_opties.optie_id";
$res=mysql_query($sql);
if(mysql_num_rows($res) > 0)
// er is resulaat
{
while($r=mysql_fetch_array($sql))
{
echo "doe iets...";
}
else
{
echo "er zijn geen resultataen";
}
}
?>
Ik mis de foutafhandeling nog, Klaasjan? Ook is de plaats van je { en } niet helemaal juist.
<?php
include 'includes/config.php';

$sql = "
SELECT
opties.id,
machine_opties.id
FROM
opties
LEFT JOIN
machine_opties
ON
opties.id = machine_opties.optie_id
";

if(!$res=mysql_query($sql))
{
trigger_error(mysql_errno().': '.mysql_error());
}
else
{
if(mysql_num_rows($res) > 0)
// er is resulaat
{
while($r=mysql_fetch_array($sql))
{
echo "doe iets...";
}
}
else
{
echo "er zijn geen resultataen";
}
}
?>

Reageren