Hallo,

Ik heb een probleem. Ik heb een database met caravans en informatie daar over. Deze caravans hebben meerdere accessoires.

De database is als volgt opgebouwd.

Caravantabel.. met een CID (auto increment) en nog meer informatie die nu niet voor belang is.
Accessoirestabel met de naam van de accessoires en een aid (uniek).
Daar tussen zit een relatie tabel met twee kolommen AID en CID.

Ik heb een pagina hier die die informatie opvraagt en die informatie weer in een HTML forumulier zet zodat de gebruiker de bestaande informatie kan aanpassen.

Nou voor de textinvoer is het allemaal wel gelukt, maar waar ik vast blijf zitten is de checkboxen. Deze worden gebruikt om de accessoiresen aan de caravan te linken.

Mijn vraag is dus hoe kan ik de opgehaalde informatie van de accesoires weer omzetten naar gecheckte checkboxen afhankelijk aan hoe ze ingevoerd zijn?

Mijn code:


<?php

$referentienummer = $_GET['referentienummer'];

$result = mysql_query("SELECT * FROM caravan WHERE referentienummer = $referentienummer") or die(mysql_error());
$result = mysql_fetch_assoc($result);

$caravan_naam = stripslashes($result['naam']);
$caravan_type = stripslashes($result['soort']);
$caravan_prijs = stripslashes($result['vraagprijs']);
$referentienummer = stripslashes($result['referentienummer']);
$caravan_cid = stripslashes($result['cid']);

$caravan_lengte = stripslashes($result['lengte']);
$caravan_slaapplaatsten = stripslashes($result['slaapplaatsen']);
$caravan_actieprijs = stripslashes($result['actieprijs']);
$caravan_bovag = stripslashes($result['bovaggarantie']);
$caravan_chassisnummer = stripslashes($result['chassisnummer']);
$caravan_breedte = stripslashes($result['breedte']);
$caravan_kenteken = stripslashes($result['kenteken']);
$caravan_nieuwprijs = stripslashes($result['nieuwprijs']);
$caravan_luifel = stripslashes($result['luifel']);
$caravan_maxgewicht = stripslashes($result['maximaalgewicht']);
$caravan_afgiftekenteken = stripslashes($result['kentekenafgifte']);
$caravan_voortent = stripslashes($result['voortent']);
$caravan_bouwjaar = stripslashes($result['bouwjaar']);
$caravan_leeggewicht = stripslashes($result['leeggewicht']);
$caravan_afbeelding = stripslashes($result['afbeelding']);

$caravan_zitsoort = stripslashes($result['zitsoort']);
$caravan_keuken = stripslashes($result['keuken']);
$caravan_bed = stripslashes($result['bed']);
$caravan_toilet = stripslashes($result['toilet']);

$result_categorie = mysql_query("SELECT * FROM categorie WHERE cid = $caravan_cid") or die(mysql_error());
$result_categorie = mysql_fetch_assoc($result_categorie);
$caravan_categorie = stripslashes($result_categorie['categorie']);

$result_merk = mysql_query("SELECT * FROM caravanmerk WHERE cid = $caravan_cid") or die(mysql_error());
$result_merk = mysql_fetch_assoc($result_merk);
$caravan_merk = stripslashes($result_merk['merk']);

$result_zit = mysql_query("SELECT * FROM zit WHERE cid = $caravan_cid") or die(mysql_error());
$result_zit = mysql_fetch_assoc($result_zit);
$caravan_zit = stripslashes($result_zit['zitsoort']);

$result_keuken = mysql_query("SELECT * FROM keuken WHERE cid = $caravan_cid") or die(mysql_error());
$result_keuken = mysql_fetch_assoc($result_keuken);
$caravan_keuken = stripslashes($result_keuken['keukensoort']);

$result_bed = mysql_query("SELECT * FROM bed WHERE cid = $caravan_cid") or die(mysql_error());
$result_bed = mysql_fetch_assoc($result_bed);
$caravan_bed = stripslashes($result_bed['bedsoort']);

$result_toilet = mysql_query("SELECT * FROM toilet WHERE cid = $caravan_cid") or die(mysql_error());
$result_toilet = mysql_fetch_assoc($result_toilet);
$caravan_toilet = stripslashes($result_toilet['toiletsoort']);


$query = "SELECT * FROM relatietabel WHERE cid = $caravan_cid";
if($result = mysql_query($query)) {
$array = array();
while($row = mysql_fetch_assoc($result)){
$array[] = $row['aid'];
}
}
$count = mysql_num_rows($result);

?>


<form action="caravans.php" method="POST">
<?php echo $error; ?>
<table cellpadding="7">

<h3>Accessoires:</h3>
<table cellpadding="1">
<tr>
<td><input type="checkbox" name="accessoires[]" value="1" <?php echo $checked?>> Accu<td>
<td><input type="checkbox" name="accessoires[]" value="2"> Afzuigkap<td>
<td><input type="checkbox" name="accessoires[]" value="3"> Airmix<td>
<td><input type="checkbox" name="accessoires[]" value="4"> Boiler<td>
<td><input type="checkbox" name="accessoires[]" value="5"> Caravan mover<td>
</tr>

<tr>
<td><input type="checkbox" name="accessoires[]" value="6"> Cassette toilet<td>
<td><input type="checkbox" name="accessoires[]" value="7"> Circulatie verwarming<td>
<td><input type="checkbox" name="accessoires[]" value="8"> Combi cassettes<td>
<td><input type="checkbox" name="accessoires[]" value="9"> Dakluik<td>
<td><input type="checkbox" name="accessoires[]" value="10"> Decoder<td>
</tr>

<tr>
<td><input type="checkbox" name="accessoires[]" value="11"> Disselafdekking<td>
<td><input type="checkbox" name="accessoires[]" value="12"> Disselslot<td>
<td><input type="checkbox" name="accessoires[]" value="13"> Douche<td>
<td><input type="checkbox" name="accessoires[]" value="14"> Fietsenrek<td>
<td><input type="checkbox" name="accessoires[]" value="15"> Hefdak<td>
</tr>

<tr>
<td><input type="checkbox" name="accessoires[]" value="16"> Heki dakluik<td>
<td><input type="checkbox" name="accessoires[]" value="17"> Hordeur<td>
<td><input type="checkbox" name="accessoires[]" value="18"> Imperiaal<td>
<td><input type="checkbox" name="accessoires[]" value="19"> Kachel<td>
<td><input type="checkbox" name="accessoires[]" value="20"> Kluis<td>
</tr>

<tr>
<td><input type="checkbox" name="accessoires[]" value="21"> Koelkast<td>
<td><input type="checkbox" name="accessoires[]" value="22"> Ladder<td>
<td><input type="checkbox" name="accessoires[]" value="23"> Licht metalen velgen<td>
<td><input type="checkbox" name="accessoires[]" value="24"> Magnetron<td>
<td><input type="checkbox" name="accessoires[]" value="25"> Omvormer<td>
</tr>

<tr>
<td><input type="checkbox" name="accessoires[]" value="26"> Openslaande ramen<td>
<td><input type="checkbox" name="accessoires[]" value="27"> Oven<td>
<td><input type="checkbox" name="accessoires[]" value="28"> Potta potty<td>
<td><input type="checkbox" name="accessoires[]" value="29"> Radio<td>
<td><input type="checkbox" name="accessoires[]" value="30"> Reservewiel<td>
</tr>

<tr>
<td><input type="checkbox" name="accessoires[]" value="31"> Ringverwarming<td>
<td><input type="checkbox" name="accessoires[]" value="32"> Satelliet antenne<td>
<td><input type="checkbox" name="accessoires[]" value="33"> Schokbrekers<td>
<td><input type="checkbox" name="accessoires[]" value="34"> Serviceluik<td>
<td><input type="checkbox" name="accessoires[]" value="35"> Tv antenne<td>
</tr>

<tr>
<td><input type="checkbox" name="accessoires[]" value="36"> Uitbouw voortent<td>
<td><input type="checkbox" name="accessoires[]" value="37"> Verzwaarde steunen <td>
<td><input type="checkbox" name="accessoires[]" value="38"> Vloerverwarming<td>
<td><input type="checkbox" name="accessoires[]" value="39"> Voortent lamp<td>
<td><input type="checkbox" name="accessoires[]" value="40"> Vaste watertank<td>
</tr>

<tr>
<td><input type="checkbox" name="accessoires[]" value="41"> Zonnepaneel<td>
</tr>
</table>


Afbeelding: <br> <input type="text" name="afbeelding" size="60" value="<?php echo $caravan_afbeelding;?>"></td>
<input type="submit" name="submit" value="Opslaan">
</form>


</body>
</html>

goed, wat betreft de array: hij neemt de eerste nu ook mee. kwestie van de goede vergelijking maken.
ook heb ik er een tabel van gemaakt zoals je wilt. inline style is uit de tijd. probeer je code dus ook je tabel op te maken met css.
tevens door een if statement op de teller te plaatsen na elke vijf checkboxen een nieuwe regel in de tabel.

<?php 
	$array = array(1,7,8,9,13,26,29,30,32,38,39,40);

    $opties = array(' Accu', ' Afzuigkap', ' Airmax', ' Boiler', ' Caravan Mover', ' Cassete toilet', 
       ' Circulatie verwarming', ' Combi casettes', ' Dakluik', ' Decoder', ' Disselafdekking', 
         ' Disselslot', ' Douche', ' Fietsenrek', ' Hefdak', ' Heki dakluik', ' Hordeur', ' Imepriaal', 'Kachel', 
          ' Kluisje', ' Koelkast', ' Ladder', ' Licht metalen velgen', ' Magnetron', ' Omvormer', 
          ' Openslaande ramen', ' Oven', ' Potta potty', ' Radio', ' Reserve wiel', ' Ringverwarming',
           ' Satelliet antenne', ' Schokbrekers', ' Serviceluik', ' TV antenne', ' Uitbouw voortent', 
            ' Verzwaarde steunen', ' Vloerverwarming', ' Voortent lamp', ' Vaste watertank', ' Zonnepaneel');

?>
<table cellpadding="1"><tr>
<?php
$teller = 1;
foreach($opties as $optie) {
    $checked = '';
    if(array_search($teller, $array) !== false){
         $checked = ' checked="checked"'; 
    } 
	if(($teller-1) % 5 == 0)	 
       echo "</tr><tr>";  
    echo '<td><input type="checkbox"'.$checked.' name="accessoires[]" value="'.$teller.'">'.$optie.'</td>';
    $teller++;
}  
?>
</tr></table>
Mijn dank is groot frank! Wat betreft vergelijkingen in loopjes is nog niet mijn sterkste kant. Enige tips om dat makkelijk te leren?
Tom Verassing op 26/03/2013 08:13:47

Mijn dank is groot frank! Wat betreft vergelijkingen in loopjes is nog niet mijn sterkste kant. Enige tips om dat makkelijk te leren?

Google eens op php array om te kijken welke array functies er zoal bestaan.
en gewoon nieuwsgierig zijn en kleine progjes schrijven die de werking demonstreren.

succes.
Zal ik doen! Dank je, het werkt prima!

[size=xsmall]Toevoeging op 26/03/2013 10:02:22:[/size]

Kan je me alleen nog vertellen waarom die eerste checkbox het niet deed?

[size=xsmall]Toevoeging op 26/03/2013 11:29:56:[/size]

Oke nou heb ik nog een probleem. Nou heb ik dus degene gecheckt die gecheckt moeten zijn.

Ze kunnnen dus nu aangepast worden bijvoorbeeld als er accesoires bijgekomen zijn of weggehaald.

Dus moet ik werken met een update query. Ik had het zo
<?php
$arr = $_POST['accessoires'];
$count = count($arr);

for ($i=0; $i < $count ; i++){
$result = $arr[$i];
mysql_query("UPDATE relatietabel set aid = '$result' WHERE cid= '$caravan_cid'") or die("forlus " .mysql_error());
}
?>

Maar dit werkt niet :( Hulp?

[size=xsmall]Toevoeging op 26/03/2013 14:23:39:[/size]

Het is al gelukt :)

<?php
mysql_query("DELETE FROM relatietabel WHERE cid = '$caravan_cid'") or die ("18 " . mysql_error());
$arr = $_POST['accessoires'];
$count = count($arr);
for ($i=0; $i < $count ; $i++) {
$result = $arr[$i];
mysql_query("INSERT INTO relatietabel (aid, cid) VALUES ('$result', '$caravan_cid')") or die(mysql_error());

?>

Reageren