Ik ben relatief nieuw in de wereld van PHP en MySQL en ben druk bezig om van alles uit te proberen. Nu ben ik op het volgende probleem gestuit:
Ter oefening heb ik geprobeerd gegevens op te vragen uit een database en deze vervolgens netjes weer te geven, zoals dit zou gebeuren bij bijvoorbeeld een webwinkel. Dit heb ik natuurlijk gedaan met behulp van een mysql query, om zo de juiste producten uit de database te halen. Maar de producten moeten natuurlijk ook weergegeven worden. Dit heb ik gedaan met behulp van een while-loop. Alle producten worden nu netjes in een rijtje weergegeven. Ik wil echter nog een stap verder gaan. Net zoals bij webwinkels meestal te zien is kan de bezoeker meer informatie over een bepaald product opvragen door op dit product te klikken (dmv afbeelding of link). Dit is ook wat ik wil simuleren in mijn test.
De resultaten uit de query worden dus weergegeven dmv een while-loop. Bij het doorlopen van deze while-loop wordt bij ieder product ook een link meegegeven waarmee de bezoeker doorgestuurd wordt naar een pagina die meer informatie biedt over een dat specifieke product. De informatie weergegeven door de while-loop wordt vervolgens dmv een session doorgestuurd naar deze pagina met meer informatie. Dit gaat goed zolang er uit de query slechts één product wordt opgevraagd, maar zodra er meer dan één product uit de query komt wordt de informatie van alleen het laatste resultaat door de session opgeslagen waardoor elke link naar de pagina gevuld wordt met informatie van het laatst opgevraagde resultaat, terwijl de bedoeling natuurlijk is dat de informatie van ieder specifiek product wordt doorgestuurd.
Ik heb geprobeert de session buiten de while-loop te plaatsen, maar dit levert logischerwijs niks op. Ook heb ik geexperimenteerd met de foreach functie, maar mijn beperkte kennis van MySQL en PHP verhindert mij om het probleem zelf logischerwijs op te lossen. Vandaar dit topic, ik hoop dat jullie me verder kunnen helpen.
Ik hoop dat in dit lange verhaal enigszins duidelijk is geworden wat ik wil bereiken. Hieronder de code. Ik het het geheel geprobeerd terug te brengen tot de basis en ik heb sommige delen samengevat.
Dit is het script waarmee ik de gegevens opvraag en weergeef in een lijstje:
Dit is de pagina die de doorgestuurde informatie weergeeft en zo meer moet vertellen over het product:
Ter oefening heb ik geprobeerd gegevens op te vragen uit een database en deze vervolgens netjes weer te geven, zoals dit zou gebeuren bij bijvoorbeeld een webwinkel. Dit heb ik natuurlijk gedaan met behulp van een mysql query, om zo de juiste producten uit de database te halen. Maar de producten moeten natuurlijk ook weergegeven worden. Dit heb ik gedaan met behulp van een while-loop. Alle producten worden nu netjes in een rijtje weergegeven. Ik wil echter nog een stap verder gaan. Net zoals bij webwinkels meestal te zien is kan de bezoeker meer informatie over een bepaald product opvragen door op dit product te klikken (dmv afbeelding of link). Dit is ook wat ik wil simuleren in mijn test.
De resultaten uit de query worden dus weergegeven dmv een while-loop. Bij het doorlopen van deze while-loop wordt bij ieder product ook een link meegegeven waarmee de bezoeker doorgestuurd wordt naar een pagina die meer informatie biedt over een dat specifieke product. De informatie weergegeven door de while-loop wordt vervolgens dmv een session doorgestuurd naar deze pagina met meer informatie. Dit gaat goed zolang er uit de query slechts één product wordt opgevraagd, maar zodra er meer dan één product uit de query komt wordt de informatie van alleen het laatste resultaat door de session opgeslagen waardoor elke link naar de pagina gevuld wordt met informatie van het laatst opgevraagde resultaat, terwijl de bedoeling natuurlijk is dat de informatie van ieder specifiek product wordt doorgestuurd.
Ik heb geprobeert de session buiten de while-loop te plaatsen, maar dit levert logischerwijs niks op. Ook heb ik geexperimenteerd met de foreach functie, maar mijn beperkte kennis van MySQL en PHP verhindert mij om het probleem zelf logischerwijs op te lossen. Vandaar dit topic, ik hoop dat jullie me verder kunnen helpen.
Ik hoop dat in dit lange verhaal enigszins duidelijk is geworden wat ik wil bereiken. Hieronder de code. Ik het het geheel geprobeerd terug te brengen tot de basis en ik heb sommige delen samengevat.
Dit is het script waarmee ik de gegevens opvraag en weergeef in een lijstje:
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
44
| /*Allereerst natuurlijk verbinding maken met de server en de database*/ /*De sessie starten*/ session_start(); /*De query*/ $opvragen = mysql_query("SELECT * FROM product WHERE type='$type' AND maat1='$maat1' AND maat2='$maat2' AND maat3='$maat3'" )or die(mysql_error()); /*Opgevraagde gegevens weergegeven in een lijstje*/ if(mysql_num_rows($opvragen)>0){ while($resultaten = mysql_fetch_array($opvragen)) { print '<dl class="zoekresultaten"> <dt class="titel"><a style="font-size:11px;" href="meerinformatie.php">'.$resultaten['merk'].' '.$resultaten['naam'].'</a></dt> <dt class="prijs">€ '.str_replace('.',',',$resultaten['prijs']).'</dt> <dt class="informatie"> <table> <tr> <td class="zoekres_indent">Type:</td><td>'.$resultaten['type'].'</td> </tr> <tr> <td class="zoekres_indent">Maten:</td><td>'.$resultaten['maat1'].'/'.$resultaten['maat2'].'/'.$resultaten['maat3'].'/'.$resultaten['id'].'</td> </tr> </table> <a class="meerinfo" href="meerinformatie.php">Meer Informatie</a> </dt> <dt><a href="meerinformatie.php"><img width="60px"src="afbeeldingen/'.$resultaten['merk'].'.jpg"/></a></dt> </dl>'; $_SESSION = $resultaten; } } else { print $error; } |
Dit is de pagina die de doorgestuurde informatie weergeeft en zo meer moet vertellen over het product:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
| /*De sessie starten*/ session_start(); print '<dl class="zoekresultaten"> <dt class="titel">'.$_SESSION['merk'].' '.$_SESSION['naam'].'</dt> <dt class="prijs">€ '.str_replace('.',',',$_SESSION['prijs']).'</dt> <dt class="informatie" style="margin-left:160px;"> <table> <tr> <td class="zoekres_indent">Type:</td> <td>'.$_SESSION['type'].'</td> </tr> <tr> <td class="zoekres_indent">Maten:</td> <td>'.$_SESSION['maat1'].'/'.$_SESSION['maat2'].'/'.$_SESSION['maat3'].'</td> </tr> </table> </dt> <dt><img style="height:auto;margin-left:3px;" src="afbeeldingen/'.$_SESSION['merk'].'G.jpg"/></dt> </dl>'; |