[PHP/SQL] Hoe variabelen doorgeven naar zelfde pagina.*

Pagina: 1
Acties:
  • 123 views sinds 30-01-2008
  • Reageer

Onderwerpen


Acties:
  • 0 Henk 'm!

Anoniem: 95215

Topicstarter
Ik wil graag het volgende bereiken. Ik heb tot nu toe het volgende kunnen bouwen: http://www.deviswereld.nl/webshoptesting. Nu is het de bedoeling, dat wanneer op het winkelwagentje wordt geklikt, dat desbetreffende artikel aan het winkelwagentje wordt toegevoegd.
Dat winkelwagentje is nu nog niet gebouwd, maar dat komt dus op dezelfde pagina te staan.

Wat ik zelf denk dat moet gebeuren is het volgende: Klikken op winkelwagen --> Een variabele (ik denk een Array welke is opgebouwd uit productID's, daarvan wordt het juiste productID met 1 opgehoogd) wordt verstuurd met behulp van POST of GET en opnieuw wordt deze zelfde pagina geladen. --> Een scriptje in het begin van de pagina kijkt of de waarde van de array is veranderd en doet daarna een aanpassing aan de winkelwagen.

Denk ik zo goed en zo ja, hoe kan ik ervoor zorgen dat die variabele ook daadwerkelijk goed wordt verstuurd. (Met een form of met een sessievariabele of op een andere manier?)

Acties:
  • 0 Henk 'm!

  • messi
  • Registratie: Oktober 2001
  • Laatst online: 19:41
Als je in de link het product id zet en deze vang je af op de volgende pagina dan heb je toch in principe voldoende?

je maakt per bezoeker een sessie aan en die koppel je dmv een koppeltabel aan de producten die hij in zijn " mandje" heeft. Eventueel kun je dan nog aantallen aapassen (die zet je in diezelfde tabel)

dus zoiets

sesid1 > product 2 > aantal 2
sesid1 > product 5 > aantal 1
sesid2 > product 2 > aantal 10
enz. enz.

Als een klant dan wat besteld koppel je het klantid aan je sessie id en voila :)

En als het helemaal shiny wilt doen, moet je mbv Javascript/Ajax de pagina dynamisch laden enz.
offtopic:
Topic wijzigingen kun je het beste doen door een topic report aan te maken (handje links boven je post)

[ Voor 26% gewijzigd door messi op 26-06-2006 11:54 ]

Onze excuses voor het ontbreken van de ondertiteling.


Acties:
  • 0 Henk 'm!

  • NoepZor
  • Registratie: Maart 2003
  • Laatst online: 19:52
Of je koppelt hem aan een sessie waar je de producten in opslaat. Je kunt dan bijv een product.php maken en een winkelwagen.php waarin je dan in product.php de producten hebt en winkelwagen.php de items weergeeft van de winkelwagen en vanaf de product.php naar bijv. winkelwagen.php?add=productid linken om dat product ID toe te voegen.

De wijzen komen uit het Oosten!


Acties:
  • 0 Henk 'm!

  • messi
  • Registratie: Oktober 2001
  • Laatst online: 19:41
NoepZor schreef op maandag 26 juni 2006 @ 11:54:
Of je koppelt hem aan een sessie waar je de producten in opslaat. Je kunt dan bijv een product.php maken en een winkelwagen.php waarin je dan in product.php de producten hebt en winkelwagen.php de items weergeeft van de winkelwagen en vanaf de product.php naar bijv. winkelwagen.php?add=productid linken om dat product ID toe te voegen.
Hehe dit bedoelde ik ook, maar jouw uitleg is makkelijker :P

Onze excuses voor het ontbreken van de ondertiteling.


Acties:
  • 0 Henk 'm!

  • BtM909
  • Registratie: Juni 2000
  • Niet online

BtM909

Watch out Guys...

trancemaniak schreef op maandag 26 juni 2006 @ 11:50:
Kan er nog een aanpassing gedaan worden aan de topictitel: [PHP/SQL] Hoe variabelen doorgeven naar zelfde pagina.
Dat kan je voortaan ook via de Afbeeldingslocatie: http://gathering.tweakers.net/global/templates/tweakers/images/icons/icon_hand.gif knop aanvragen ;)

Ace of Base vs Charli XCX - All That She Boom Claps (RMT) | Clean Bandit vs Galantis - I'd Rather Be You (RMT)
You've moved up on my notch-list. You have 1 notch
I have a black belt in Kung Flu.


Acties:
  • 0 Henk 'm!

Anoniem: 95215

Topicstarter
Om iets te versturen via die linkjes werkt nu. Nu is het de bedoeling dat alle producten in een array worden geplaatst. Er wordt uitgelezen welke productID wordt meegestuurd (de 1e keer bij openen wordt niets meegestuurd en wordt dus ook niets op het scherm getoond). Op de plaats van het productID in de $Session-array zou dan de teller 1 opgehoogd moeten worden. Ik echo de verschillende producten om te zien wat er gebeurt, maar hij echoot op dat moment maar 1 item terug, terwijl ik vele malen heb geklikt om hetzelfde product maar toe te voegen. Ik snap niet wat ik verkeerd doe.

<?php
session_start();

if (!empty ($_GET['add']))
{
$ProductID = $_GET['add'];
$_SESSION[$ProductID] = $_SESSION[$ProductID] + 1;
echo $_SESSION['0'];
echo $_SESSION['1'];
echo $_SESSION['2'];
echo $_SESSION['3'];
echo $_SESSION['4'];
echo $_SESSION['5'];
}
?>

Acties:
  • 0 Henk 'm!

  • Psychokiller
  • Registratie: Oktober 2001
  • Niet online
Je vult de sessie met de naam $productid (wat lijkt me best 1000 of welk ander getal dan ook kan zijn), en je toont met de echo de sessie met de naam '0' en niet sessie positie 0 of 1 zoals je wellicht hoopte.

In plaats van het echo $_SESSION['0'] zou je beter kunnen doen:
PHP:
1
2
3
echo "<pre>";
print_r($_SESSION);
echo "</pre>";


Dan zie je de inhoud van je sessie wel. Vanuit daar moet je wel verder kunnen denk ik.

[ Voor 28% gewijzigd door Psychokiller op 26-06-2006 14:17 ]


Acties:
  • 0 Henk 'm!

Anoniem: 95215

Topicstarter
Psychokiller schreef op maandag 26 juni 2006 @ 14:16:
Je vult de sessie met de naam $productid (wat lijkt me best 1000 of welk ander getal dan ook kan zijn), en je toont met de echo de sessie met de naam '0' en niet sessie positie 0 of 1 zoals je wellicht hoopte.

In plaats van het echo $_SESSION['0'] zou je beter kunnen doen:
PHP:
1
2
3
echo "<pre>";
print_r($_SESSION);
echo "</pre>";
Bij het product met ProductID = 1 krijg ik dan onderstaande code opeens in beeld, wanneer ik nog een keer daarop klik, dan wordt de plek niet met nog 1 verhoogt.

Dit krijg ik dan te zien: Array ( [1] => 1 )

[ Voor 14% gewijzigd door Anoniem: 95215 op 26-06-2006 14:36 ]


Acties:
  • 0 Henk 'm!

Anoniem: 95215

Topicstarter
<?php
session_start();

if (!empty ($_GET['add']))
{
$winkelwagenItem = $_GET['add'];
//haal winkelwagen array uit de sessie
//bewerk de winkelwagen
$winkelwagen[$winkelwagenItem] = $winkelwagen[$winkelwagenItem] + 1;
$_SESSION[$ProductID] = $winkelwagen;
print_r($_SESSION);
}

include ("config.php");
mysql_connect ($dbhost, $dbuname, $dbpass) or die ('foutje namelijk: ' . mysql_error());
mysql_select_db ($dbname);

include ("articleshow.php");

session_write_close();
?>


Deze code heb ik nu gebruikt, maar het lijkt wel dat wanneer elke keer dat een artikel wordt toegevoegd de array winkelwagen weer wordt gereset, ik snap niet hoe dat kan.
Het resultaat is te zien op http://www.deviswereld.nl/webshoptesting

[ Voor 6% gewijzigd door Anoniem: 95215 op 27-06-2006 10:51 ]


Acties:
  • 0 Henk 'm!

Anoniem: 95215

Topicstarter
Niemand die het weet?

Acties:
  • 0 Henk 'm!

Anoniem: 121205

Is dit niks?

PHP:
1
2
3
4
5
6
7
8
9
session_start();


if($_GET['add']) {
    $_SESSION['winkelwagen'][$_GET['add']]++;
}


print_r($_SESSION);

Acties:
  • 0 Henk 'm!

  • trinite_t
  • Registratie: Maart 2003
  • Laatst online: 12-06 14:14
Ik heb zelf zoiets geschreven dat gebruikt maakt van een winkelwagen object. die dump je gewoon in een sessie variabele, en bij het toevoegen roep je gewoon
PHP:
1
$_SESSION['winkelwagen']->add($product id, $aantal);
aan. In de winkelwagen klasse wordt dan alles onderwater afgehandeld... (nu kan deze klasse wel wat meer dan alleen producten toevegen, maar het blijft ook bij alleen kleine scripts wel de meest overzichtelijk manier van werken (vind ik), en dan zit ik op m'n werk ook nog steeds vast aan php 4 :'( ).

The easiest way to solve a problem is just to solve it.


Acties:
  • 0 Henk 'm!

  • Scr33x0r
  • Registratie: September 2004
  • Laatst online: 11-06 10:18
Ik zou er in iedergeval voor zorgen dat je, niet zoals hierboven, alle items in een "apparte" session gaat zetten, maar een array maken die bijvoorbeeld winkelwagen heet, en hierin items. Bijvoorveeld:

PHP:
1
2
3
4
5
6
7
8
9
10
11
<?
session_start();

if($_GET['add'])
{
   $_SESSION['winkelwagen'][count($_SESSION['winkelwagen'])] = $_GET['add']; //Product_id
}
echo "<pre>";
print_r($_SESSION);
echo "</pre>";
?>

[ Voor 26% gewijzigd door Scr33x0r op 27-06-2006 13:06 ]


Acties:
  • 0 Henk 'm!

Anoniem: 121205

Scr33x0r schreef op dinsdag 27 juni 2006 @ 13:05:
Ik zou er in iedergeval voor zorgen dat je, niet zoals hierboven, alle items in een "apparte" session gaat zetten, maar een array maken die bijvoorbeeld winkelwagen heet, en hierin items. Bijvoorveeld:

PHP:
1
2
3
4
5
6
7
8
9
10
11
<?
session_start();

if($_GET['add'])
{
   $_SESSION['winkelwagen'][count($_SESSION['winkelwagen'])] = $_GET['add']; //Product_id
}
echo "<pre>";
print_r($_SESSION);
echo "</pre>";
?>
Hoe krijg jij daar meedere items in dan?


[edit]
Dit werkt wel:
PHP:
1
2
3
4
5
6
7
8
9
10
11
<?
session_start();

if($_GET['add'])
{
   $_SESSION['winkelwagen'][count($_SESSION['winkelwagen']) + 1] = $_GET['add']; //Product_id
}
echo "<pre>";
print_r($_SESSION);
echo "</pre>";
?>

[ Voor 26% gewijzigd door Anoniem: 121205 op 27-06-2006 13:18 ]


Acties:
  • 0 Henk 'm!

  • JochemK
  • Registratie: Maart 2003
  • Laatst online: 10-06 15:00
Waarom ga je je hele pagina opnieuw bouwen als je iets toevoegd aan de cart, waarom niet gewoon met een iframe ofzo?
Pagina: 1