Ten einde raad.

Wat ik tot hiertoe heb.

$sql = "SELECT DISTINCT CatId, SubcatId0, SubcatId1, SUbcatId2,Omschrijving,Omschrijving0,Omschrijving1,Omschrijving2
FROM Artikelen_Categorie,Artikelen_Subcategorie0,Artikelen_Subcategorie1,Artikelen_Subcategorie2 ORDER BY Omschrijving DESC";
$result = $con->query($sql);

if ($result->num_rows > 0) {
    // output data of each row
	
    while($row = $result->fetch_array()) {
	$hoofdcat = [
    $row["CatId"] =>
    $row["Omschrijving"] 
	];	
		foreach ($hoofdcat1 as $k => $v ) {	
			
  echo " <option Id=".$k." value=".$k.">".$v."</option>";
			
}	
}		
$con->close();
}


Wat ik wil verwezenlijken is een option selectbox (meerdere) maar beginnen met 1 waarbij de output van mijn query ook als Unique word getoond per selectbox.

autos
-<volvo>
-<bmw>

kleur
-<wit>
-<rood>

enz.

Ik kan de output niet uniek krijgen met array_unique waardoor ik een lange lijst krijg.
Tevens kan ik de foreach niet gebruiken buiten de while loop. Hoe kan ik dat het beste oplossen?
Euh, staat die afsluitende accolade van de while niet op de verkeerde plaats?
Thomas van den Heuvel op 02/02/2019 23:43:20

Euh, staat die afsluitende accolade van de while niet op de verkeerde plaats?


De accolade verplaatsen was de eerste stap. Vervolgens heb ik binnen men while loop alle gegevens. Het probleem is echter wanneer ik deze gegevens buiten men while loop wil gaan gebruiken toont hij me het eerste record.

Hoe gebruik je het buiten je while?
- Ariën - op 03/02/2019 16:18:40

Hoe gebruik je het buiten je while?

Letterlijk zo


<?php
	foreach ($hoofdcat as $k => $v ) {	
			
  echo " <option Id=".$k." value=".$k.">".$v."</option>";
			
	
}	
	?>


Waarbij ik veronderstel dat de while loop alle gegevens als array in $hoofdcat heeft geduwd.

Echter wanneer ik dat doe krijg ik slechts 1 item te zien.
$hoofdcat = [
$row["CatId"] =>
$row["Omschrijving"] 
];

Nee, elke stap van de loop overschrijf je $hoofdcat. Dus hij toont overigens niet het eerste record, maar het laatste record :).
Thomas van den Heuvel op 03/02/2019 16:28:43

$hoofdcat = [
$row["CatId"] =>
$row["Omschrijving"] 
];

Nee, elke stap van de loop overschrijf je $hoofdcat. Dus hij toont overigens niet het eerste record, maar het laatste record :).


Daar vreesde ik al voor.

Hoe kan ik deze array vullen met de nodige gegevens uit de DB en gebruiken ergens anders op dezelfde pagina ?
Maak van $hoofdcat een array?
Zoals $hoofdcat[].

Volgens mij bedoel je dat?
- Ariën - op 03/02/2019 16:51:44

Maak van $hoofdcat een array?
Zoals $hoofdcat[].

Volgens mij bedoel je dat?


Als ik $hoofdcat[] gebruik op deze manier krijg ik als output array, array enz

Laatste aanpassing

<?php
$sql = "SELECT DISTINCT CatId, SubcatId0, SubcatId1, SUbcatId2,Omschrijving,Omschrijving0,Omschrijving1,Omschrijving2
FROM Artikelen_Categorie,Artikelen_Subcategorie0,Artikelen_Subcategorie1,Artikelen_Subcategorie2 ORDER BY Omschrijving DESC";
$result = $con->query($sql);

if ($result->num_rows > 0) {
    // output data of each row
    
    while($row = $result->fetch_array()) {
    $hoofdcat[]= [
    $row["CatId"] =>
    $row["Omschrijving"]
    ];   
		}
        foreach ($hoofdcat as $k => $v ) {    
            
  echo " <option Id=".$k." value=".$k.">".$v."</option>";
            
}    
        
$con->close();
}
?>
Klopt, want die moet je dan nog uitlezen.
- Ariën - op 03/02/2019 17:15:11

Klopt, want die moet je dan nog uitlezen.


Voor het uitlezen van de array heb ik deze code.


      foreach ($hoofdcat as $ka => $va ) { 
			
			foreach($va as $k =>$v ){
            
  echo " <option Id=".$k." value=".$k.">".$v."</option>";
			}
} 


Helaas geeft deze mij de resultaten niet weer zoals het zou moeten. Blijkbaar herhaalt hij zijn lus ergens in een lus waardoor ik deze output krijg:



A
A
A
A
A
A
B
B
B
B
B
C
C
C
C

Reageren