productvergelijkings pagina
Als eerste wil ik me even voorstellen. Ik ben Ronald van Nielen en 34 jaar. Ik ben bezig met het maken van een pagina die 3 producten (die opgeslagen zijn in de database)naast elkaar moet zetten (op een nieuwe pagina) zodat het makkelijk is om de waarden met elkaar te vergelijken.
De producten moeten dmv een knop te selecteren zijn op verschillende pagina's. zelf dacht ik dit te kunnen doen dmv sessies echter krijg ik dit niet voor elkaar. kan iemand mij helpen aub. Ik ben zelf geen php deskundige en doe dit volledig uit hobby en heb verder ook geen andere programeer ervaring.
alvast super bedankt voor jullie medewerking
Als je concrete vragen hebt, kun je die hier plaatsen. Als je op zoek bent naar iemand die je in persoon kan helpen, kun je beter een vacature plaatsen...
Was eigelijk op zoek naar tips waarmee ik verder kon, het proberen en uitzoeken op zich vind ik al leuk dus als iemand mij een tip kan geven dan graag. Wat ik tot nu toe heb is een pagina die nu een sessie start en de volgende pagina pakt deze sessie op en haalt hiermee de gegevens uit de database. Dit lukt tot zover. Ik weet alleen niet hoe je een tweede sessie uit kan lezen, hij zal waarschijlijk eerst moeten kijken of er een tweede sessie is en indien truetype dan de tweede query met de database maken. Dus graag zou ik tips willen en niet directe kant en klare code aangezien ik hier dan ook niet van leer. Mocht dit toch niet zo werken hoor ik het graag van je Joran.
Sla het id van de producten die geselecteerd zijn voor vergelijking op in een sessievariabele. Dat kan gewoon een array zijn waar dus meerdere id's in zitten. Op de vergelijkingspagina lees je deze sessievariabele uit en selecteer je voor elk product de benodigde gegevens uit de database...
op de pagina waar je op de knop kan drukken voor de functie vergelijken, heb ik nu onderstaande code staan:
<form name="vergelijk" method="post" action=" "/>
<input type="submit" name="submit" value="vergelijk">
op de ontvangende pagina (vergelijkfunctie.php) staat de volgende code:
Code (php)
1
2
3
4
5
6
2
3
4
5
6
<?
if (isset ($_SESSION['test'])){
$y = mysql_query("SELECT * FROM products WHERE pid = '".$_SESSION['test']."' ");
while($product = mysql_fetch_array($y)) {
?>
if (isset ($_SESSION['test'])){
$y = mysql_query("SELECT * FROM products WHERE pid = '".$_SESSION['test']."' ");
while($product = mysql_fetch_array($y)) {
?>
en op de plaats waar ik de informatie wil laten zien staat de volgende regel:
dit werkt, zodra ik een product kies en op de knop druk, dan zie ik op de 2e pagina de gegevens van dat product. echter ik loop nu vast hoe ik een 2e en 3e sessie moet starten en de gegevens daarvan laten zien. ik hoop dat je me in de juiste richting kan sturen.
alvast bedankt voor de moeite
Verder lijkt de action van je formulier me erg vreemd. Daar verwacht ik juist de naam van het script dat ervoor zorg dat het product aan de sessievariabele toegevoegd wordt. Dus iets als:
Code (php)
1
2
3
4
2
3
4
<form method="post" action="add_product.php">
<input type="hidden" name="product_id" value="..." />
<input type="submit" value="vergelijk" />
</form>
<input type="hidden" name="product_id" value="..." />
<input type="submit" value="vergelijk" />
</form>
De waarde op de ... komt uit een PHP variabele die het product id bevat.
Het script add_product.php controleert vervolgens of er een formulier gepost is en of er een geldig product id gepost is. Zo ja, dan voegt hij het toe aan de sessievariabele $_SESSION['products'] op deze manier:
Uiteraard heb je de inhoud van die variabele wel gecontroleerd voordat je dit doet.
En tenslotte kun je op de vergelijkpagina de array $_SESSION['products'] uitlezen en de producten weergeven...
Bedankt voor je snele reactie. Je uitleg begrijp ik, echter wat ik dan nog niet begrijp is hoe ik ook op jouw manier 3 verschillende sessievariabele aan kan maken. Misschien moet ik de volgende uitleg nog even geven (bedacht ik me zojuist). De pagina waarop het product zichtbaar is en waar je dus de knop "vergelijk" hebt staan is 1 pagina, die aan de hand van id's de opgevraagde informatie laat zien. op deze pagina moet ik dus kijken of er al een eerdere post is en dan een tweede of derde post maken (met andere naam ??). ik hoop dat je mijn uitleg nog kan volgen.
Ik ga in ieder geval mijn code alvast aanpassen naar deze versie, is een stuk duidelijker.
Je hoeft niet meerdere sessievariabelen aan te maken, eentje is voldoende als je zorg dat het een array is. In een array kun je meerdere waarden kwijt, en dat is precies wat jij wilt. Elke keer als je het formulier om een product aan de vergelijking toe te voegen verstuurt, voeg je gewoon een nieuw id aan die array toe...
Even een bijkomende vraag voor Ronald. Kan er ingelogd worden op je website? Anders zou het misschien wel een interessant kunnen zijn om deze waardes in je database op te slaan. Zodat een ingelogde gebruiker, volgende keer dat hij inlogt zijn vergelijking ook nog heeft.
Joren, bedankt voor je bericht ik ga ermee aan de slag.
Database omvang? Daar ga je echt geen problemen mee hebben hoor als je database een beetje goed in elkaar steekt.
Mijn teller moet stoppen als er drie producten gekozen zijn en dan moet er een melding komen dat er al drie keuzes gemaakt zijn en dat er eerst een product eruit gehaald moet worden.
Het feit is nu dat hij doorloopt tot 4 en niet stopt bij 3. misschien heeft iemand een oplossing of een tip.
alvast bedankt voor de moeite
Toevoeging op 03/08/2011 22:25:48:
sorry ik was vergeten de code toe te voegen, dus bij deze:
foreach($_SESSION['vergelijk'] as $pid => $aantal){
if ($aantal > 0) {
$products = mysql_query("SELECT * FROM products WHERE pid = '".$pid."'");
$rowcheck = 0;
while($obj = mysql_fetch_array($products))
{
if($rowcheck == 0)
{
echo "<td>";
}
echo "
<td valign='top'>
".$obj['processor']." <br>
".$obj['snelheid']." <br>
".$obj['geheugen']." <br>
".$obj['typegeheugen']." <br>
".$obj['maxgeheugen']." <br>
".$obj['opslaghd']." <br>
".$obj['aantalhd']." <br>
".$obj['snelheidhd']." <br>
".$obj['schermdiag']." <br>
".$obj['resolutie']." <br>
".$obj['schermtype']." <br>
".$obj['typevideo']." <br>
".$obj['videogeheugen']." <br>
".$obj['opticaldrive']." <br>
".$obj['wifi']." <br>
".$obj['lan']." <br>
".$obj['bluetooth']." <br>
".$obj['rj11']." <br>
".$obj['vga']." <br>
".$obj['usb']." <br>
".$obj['firewire']." <br>
".$obj['esata']." <br>
".$obj['cardreader']." <br>
".$obj['webcam']." <br>
".$obj['windows']." <br>
".$obj['winversie']." <br>
".$obj['fabriekgar']." <br>
".$obj['gartype']." <br>
</td>
";
$rowcheck++;
if($rowcheck==3)
{
echo "</td>";
$rowcheck = 0;
}
}
}
}
echo "</table>";
?>
Bedankt voor je hulp. Ik ga vanavond na het werk gelijk even proberen. Als dit werkt kan ik op naar de volgende klus, het maken van een PC configurator.