ik gebruik de volgende foreach loop voor een listing met onderdelen

<ul>
	<?php foreach ( $onderdelen as $onderdeel ): 
	<li>
		<form action="" method="post" name="onderdeel-form" id="onderdeel-form" class="onderdeel-form">
         	<input name="onderdeel_id" type="hidden" value="<?php echo $onderdeel['onderdeel_id']; ?>">
           	<h3><?php echo $onderdeel['onderdeel_naam']; ?><span>&#8364;&nbsp;<?php echo $onderdeel['onderdeel_prijs']; ?></span></h3>
            <?php include "modellen.php"; ?>        	
            <p class="onderdeel_prijs">&#8364;&nbsp;&nbsp;<?php echo $onderdeel['onderdeel_prijs']; ?>
            <span><button type="submit" class="btn"><i class="fa fa-cart-plus"></i></button></span></p>
        </form>
    </li>
	<?php endforeach; ?>
</ul>


Zoals je ziet heb ik in de loop een include voor (snorfiets) modellen waar dit onderdeel op past. In de include heb ik het volgende:


$sql = "SELECT *
	      FROM modellen M
	 LEFT JOIN onderdeel_modellen OM ON M.model_id = OM.model_id
		 WHERE OM.onderdeel_id = ?";
			 
	$stmt = $pdo->prepare($sql);
	$stmt->execute(array($onderdeel_id));
	
	$results = $stmt->fetchAll();


en de html


<ul>
	<?php foreach($results as $model): ?>
    <li><?php echo $model['model']; ?></li>
    <?php endforeach; ?>
</ul>

Maar ik blijf de foutmelding krijgen:

Undefined variable: onderdeel_id in C:\wamp\www\Tomossloop\private\templates\modellen.php on line 24

Maar zoals je in het foreach loop kunt zien bestaat onderdeel_id wel degelijk
In bovenstaande code bouw je de HTML op voordat je de gevens uit de database inleest middels PHP.

Die index is dus inderdaad nog niet bekend.
Pipo Clown op 12/12/2015 21:33:15

In bovenstaande code bouw je de HTML op voordat je de gevens uit de database inleest middels PHP.

Die index is dus inderdaad nog niet bekend.

Hi Pipo Clown. Bedankt voor je reactie. Hier raak ik je kwijt.Als ik in de pagina bron kijk staat onderdeel_id er wel degelijk. Hoe zou ik het dan moeten doen?

Alvast bedankt
Waar komt $onderdelen vandaan? doe eens
<?php
print_r($onderdelen);
?>
voor de foreach loop en kijk wat de output is.
Bo Ter Ham op 12/12/2015 21:48:34

Waar komt $onderdelen vandaan? doe eens
<?php
print_r($onderdelen);
?>
voor de foreach loop en kijk wat de output is.

Hoi Bo bedankt voor de reactie. $onderdelen komt uit mijn controller. Ik heb zojuist gedaan wat je zei en dit is de uitkomst:

Array ( [0] => Array ( [onderdeel_id] => 121 [0] => 121 [categorie_id] => 5 [1] => 5 [modellen] => [2] => [categorie_naam] => [3] => [artikel_nummer] => 117 [4] => 117 [onderdeel_naam] => Koplamp beschermer [5] => Koplamp beschermer [onderdeel_omschrijving] => Koplampbeschermer rond zwart [6] => Koplampbeschermer rond zwart [bouwjaar] => [7] => [onderdeel_prijs] => 10.00 [8] => 10.00 [aanbieding_prijs] => [9] => [onderdeel_status] => nieuw [10] => nieuw [aantal] => 2 [11] => 2 [isAanbieding] => 0 [12] => 0 [foto] => ad97a4777c02dd81efb5851a5d9337b4.jpg [13] => ad97a4777c02dd81efb5851a5d9337b4.jpg ) [1] => Array ( [onderdeel_id] => 122 [0] => 122 [categorie_id] => 5 [1] => 5 [modellen] => [2] => [categorie_naam] => [3] => [artikel_nummer] => 118 [4] => 118 [onderdeel_naam] => Koplamp beschermer [5] => Koplamp beschermer [onderdeel_omschrijving] => Koplamp beschermer chroom [6] => Koplamp beschermer chroom [bouwjaar] => [7] => [onderdeel_prijs] => 10.00 [8] => 10.00 [aanbieding_prijs] => [9] => [onderdeel_status] => nieuw [10] => nieuw [aantal] => 1 [11] => 1 [isAanbieding] => 0 [12] => 0 [foto] => e102da6d927460f1c194221b167ce66e.jpg [13] => e102da6d927460f1c194221b167ce66e.jpg ) [2] => Array ( [onderdeel_id] => 123 [0] => 123 [categorie_id] => 5 [1] => 5 [modellen] => [2] => [categorie_naam] => [3] => [artikel_nummer] => 119 [4] => 119 [onderdeel_naam] => Spatbord [5] => Spatbord [onderdeel_omschrijving] => Spatbord achter S25 A3 A35 [6] => Spatbord achter S25 A3 A35 [bouwjaar] => [7] => [onderdeel_prijs] => 20.00 [8] => 20.00 [aanbieding_prijs] => [9] => [onderdeel_status] => nieuw [10] => nieuw [aantal] => 1 [11] => 1 [isAanbieding] => 0 [12] => 0 [foto] => 87fe84cd43859897fedcb75a47bf5d88.jpg [13] => 87fe84cd43859897fedcb75a47bf5d88.jpg ) [3] => Array ( [onderdeel_id] => 131 [0] => 131 [categorie_id] => 5 [1] => 5 [modellen] => [2] => [categorie_naam] => [3] => [artikel_nummer] => 127 [4] => 127 [onderdeel_naam] => Achterbrug as [5] => Achterbrug as [onderdeel_omschrijving] => Achterbrug as S25 A3 A35 Flexer tot 2007 [6] => Achterbrug as S25 A3 A35 Flexer tot 2007 [bouwjaar] => [7] => [onderdeel_prijs] => 10.00 [8] => 10.00 [aanbieding_prijs] => [9] => [onderdeel_status] => nieuw [10] => nieuw [aantal] => 10 [11] => 10 [isAanbieding] => 0 [12] => 0 [foto] => a8003c55a114cc6205f291864042cabd.jpg [13] => a8003c55a114cc6205f291864042cabd.jpg ) [4] => Array ( [onderdeel_id] => 133 [0] => 133 [categorie_id] => 5 [1] => 5 [modellen] => [2] => [categorie_naam] => [3] => [artikel_nummer] => 129 [4] => 129 [onderdeel_naam] => Remhendel [5] => Remhendel [onderdeel_omschrijving] => Gashendel compleet  Rechts [6] => Gashendel compleet  Rechts [bouwjaar] => [7] => [onderdeel_prijs] => 15.00 [8] => 15.00 [aanbieding_prijs] => [9] => [onderdeel_status] => nieuw [10] => nieuw [aantal] => 2 [11] => 2 [isAanbieding] => 0 [12] => 0 [foto] => bdd313dd13e9b9d8dc494651204b5e49.jpg [13] => bdd313dd13e9b9d8dc494651204b5e49.jpg ) [5] => Array ( [onderdeel_id] => 134 [0] => 134 [categorie_id] => 5 [1] => 5 [modellen] => [2] => [categorie_naam] => [3] => [artikel_nummer] => 130 [4] => 130 [onderdeel_naam] => Remhendel [5] => Remhendel [onderdeel_omschrijving] => Remhendel compleet Links [6] => Remhendel compleet Links [bouwjaar] => [7] => [onderdeel_prijs] => 15.00 [8] => 15.00 [aanbieding_prijs] => [9] => [onderdeel_status] => nieuw [10] => nieuw [aantal] => 1 [11] => 1 [isAanbieding] => 0 [12] => 0 [foto] => 61ca30af3d43ac7f8453001416d39ef4.jpg [13] => 61ca30af3d43ac7f8453001416d39ef4.jpg ) )



Dus de onderdelen op de pagina!!




Zie ik nu op regel 2
dat je forms in een lijst plaatst ?
En dat dan ook nog alle forms dezelfde name en id heeft ?
Pipo Clown op 12/12/2015 23:17:59

Zie ik nu op regel 2
dat je forms in een lijst plaatst ?
En dat dan ook nog alle forms dezelfde name en id heeft ?


Hi Pipo Clown. Bedankt voor de reactie. Je hebt gelijk ik had inderdaad de zelfde id voor ieder formulier. Stom dat heb ik nu veranderd maar dat geeft nog steeds geen oplossing voor het eigenlijke probleem



Toevoeging op 13/12/2015 13:35:35:

Ik heb inmiddels de structuur enigsinds aangepast.

Model:

public function get_modellen(array $ids)
{
	$ids = implode(', ', $ids);
	$sql = "SELECT *
			  FROM modellen M
		 LEFT JOIN onderdeel_modellen OM ON M.model_id = OM.model_id
		     WHERE OM.onderdeel_id IN ($ids) ";
				  
	$stmt = $this->pdo->query($sql);		
	return $stmt->fetchAll();		
}


Controller

$onderdelen      = $this->artikelen->get_onderdelen($categorie,$conditie,$start,$per_page);
$ids             = array();
foreach ($onderdelen as $onderdeel)
{
	$ids[]		 = $onderdeel['onderdeel_id'];
}	
$modellen        = $this->artikelen->get_modellen($ids );


HTML

<ul>
	<?php foreach ($modellen as $model): ?>
    <li><?php echo $model['model']; ?></li>
    <?php endforeach; ?>
</ul>

Nu krijg ik niet meer die undefined index fout maar nu hebben alle onderdelen de exact zelfde modellen aan zich gekoppeld terwijl dat in de database niet het geval is.

Reageren