Waarden Dropdownbox onthouden met optgroup

Status
Niet open voor verdere reacties.

Ruultje

Gebruiker
Lid geworden
16 okt 2007
Berichten
39
Ik heb een vrij grote productenlijst die onderverdeeld is in verschillende categorieën. In de dropdownbox moet deze dan ook onderverdeeld worden bij de de categorie. Nu lukt dit allemaal. Alleen wanneer ik de ingevoerde waarde wil onthouden (bij het bewerken nadat het is ingevoerd in de database) dan komt het niet helemaal goed. Hij laat wel de categorieën zien maar de producten die onder die categorieën moeten staan zijn niet te zien. Wat ik zie zijn lege rijen. In principe zie ik dus de categorie staan en daaronder een heel wit gedeelte. Daarna weer een categorie en weer een wit gedeelte. De lengte van het witte gedeelte klopt wel. Dus op de één of andere manier zullen die producten er wel staan. Wat doe ik verkeerd?

De $tabelrij is een query die bovenin het script staat en hieronder niet is meegegeven. Wanneer ik de optgroup eruit haal dan zie ik wel alle producten. Maar dat is het zoeken naar een ander product een stuk lastiger.

PHP:
        <?php
$sql = "SELECT * FROM
        producten
	INNER JOIN
		categorieen
	ON 
		producten.categorie_id = categorieen.id
	GROUP BY productcode
	 ";

$result = mysql_query($sql);
$group = array();
 while ($row = mysql_fetch_assoc($result))
 {
     $group[$row['productgroep']][] = $row;
 }
 foreach ($group as $key => $values)
 {
     echo '<optgroup label="'.$key.'">';
     foreach ($values as $value) 
     {
          if(isset($tabelrij['product_id']) && $tabelrij['product_id'] == $row['productcode'])  {
 
echo '<option value = '. $row['productcode'] .' selected="selected" >'. $row['productnaam'] .'</option>';
 } else {
  echo '<option value = '.$row['productcode'].'>'. $row['productnaam'] .'</option>';
 }
}
     echo '</optgroup>';
 }

?>
 
Je verwijst onderaan je pagina weer rechtstreeks naar de variabele $row, maar die is niet meer van toepassing, omdat je een paar regels eerder alle $row variabelen in een nieuwe array hebt gestopt en $row hebt leeggemaakt.

Dit soort dingen zie je overigens zelf ook vrij snel als je je error_reporting opkrikt:

PHP:
error_reporting( E_ALL );
 
Hij gaf overigens geen foutmelding.

Bedankt voor de tip! Ik dacht inderdaad al dat ik er iets anders zou moeten voorzetten ipv $row. Maar verder heb ik daar niets mee gedaan. Door de tip toch er naar gekeken en er nu $value ipv $row gepakt en dit werkt. Het is nu dus goed.

Nogmaals bedankt!
 
Het kan heel goed kloppen dat ie geen fout geeft, fouten van dit type ( E_NOTICE ) worden namelijk standaard onderdrukt, maar ze geven je wel veel inzicht in wat je PHP precies probeert te doen.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan