Undefined variable: product_id
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
<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>[code]<?php echo $onderdeel['onderdeel_naam']; ?><span>€ <?php echo $onderdeel['onderdeel_prijs']; ?></span></h3>
<?php include "modellen.php"; ?>
<p class="onderdeel_prijs">€ <?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
<?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>[code]<?php echo $onderdeel['onderdeel_naam']; ?><span>€ <?php echo $onderdeel['onderdeel_prijs']; ?></span></h3>
<?php include "modellen.php"; ?>
<p class="onderdeel_prijs">€ <?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
Gewijzigd op 12/12/2015 21:23:15 door Donald Boers
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.
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
Gewijzigd op 12/12/2015 21:48:33 door Donald Boers
Bo Ter Ham op 12/12/2015 21:48:34:
Waar komt $onderdelen vandaan? doe eens
voor de foreach loop en kijk wat de output is.
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:
Code (php)
1
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!!
Gewijzigd op 12/12/2015 22:01:52 door Donald Boers
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 ?
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:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
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();
}
{
$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
Code (php)
1
2
3
4
5
6
7
2
3
4
5
6
7
$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 );
$ids = array();
foreach ($onderdelen as $onderdeel)
{
$ids[] = $onderdeel['onderdeel_id'];
}
$modellen = $this->artikelen->get_modellen($ids );
HTML
Code (php)
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.
Gewijzigd op 13/12/2015 13:36:38 door Donald Boers