Toon posts:

Mysql Update als Row al bestaat

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik ben bezig met een eigen easy webshop, het gaat al perfect! Maar nu zit ik met een probleem, die is alsvolgt

Als de user op een product klikt, dan wordt dat product in de database gezet.
Ok dat is mooi, vervolgens keert hij automatisch terug naar de producten pagina.

Als de user op een ander product klikt, dan voegt hij die ook toe, MAAR in een nieuwe ROW en dat wil ik dus niet, ik wil dat hij de vorige ROW gewoon update, dus het laatste product dat de user aangeklikt heeft toevoegt in de zelfde row.

Tot nu toe heb ik deze code voor alleen het toevoegen:

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
<?
// Database-connectie maken

      $db = mysql_connect("localhost", "root", "");

      mysql_select_db("ecommerce", $db);

       $sql = "INSERT INTO bestellingen (producten) VALUES ('$naam')";
             
            mysql_query($sql) or die("Oops...");


?>


Wat hij nu dus doet, is voor elk product een andere row aanmaken. Terwijl het van de zelfde user is. Ik wil dus dat alles wat die user besteld, in row komt.

De database bevat 3 tabellen waarvan:

- Bestelling
- Klanten
- Producten

Tabel Bestellingen bestaat uit:

Id Klant Producten

Ik heb de search gebruikt, er waren zat andere topics maar ik heb niet gevonden waar ik naar zocht.. of kon er niet uit komen.

Degeen die het weet? -> _/-\o_

  • DeverauX
  • Registratie: Februari 2002
  • Niet online

DeverauX

Focus is everything

Als de user op een ander product klikt, dan voegt hij die ook toe, MAAR in een nieuwe ROW en dat wil ik dus niet, ik wil dat hij de vorige ROW gewoon update, dus het laatste product dat de user aangeklikt heeft toevoegt in de zelfde row.
Bij het bestellen van meerdere producten worden deze gegevens in één row vastgelegd? Waarom zou je dat willen? Je zou toch voor elk product wat besteld wordt een nieuwe row kunnen aanmaken? (je legt vervolgens alleen de ID van de klant vast en de ID van het product wat deze klant wilt bestellen.)

Mocht je dit niet willen dan zal je alvorens een product toe te voegen moeten controleren of er niet al een record aanwezig is met de ID van de klant ;)
Is dit het geval dan moet er een update plaatsvinden, zoniet dan moet er een nieuw record worden aangemaakt :)

PHP:
1
2
3
4
5
6
7
8
9
<?
$result = mysql_query($sql);

    if (mysql_num_rows($result) != 0) {
        // bestaand record updaten
    } else {
        // nieuw record toevoegen
    }
?>

[ Voor 11% gewijzigd door DeverauX op 30-05-2003 08:26 ]

...whatever was distasteful or unpleasant or uncomfortable or painful - music could always soothe that.
All you have to do is reach out to beauty.
Quincy Jones


  • Alex
  • Registratie: Juli 2001
  • Laatst online: 28-02 19:26
Wat je kunt doen is de gebruiker via bijv. een session een unieke ID mee te geven.
Je zet deze in een veld in de database erbij. En dan UPDATE je zo:
PHP:
1
$sql = "UPDATE bestellingen SET producten = '" .$naam. "' WHERE sid = '" .$session_id. "'";

Deze post is bestemd voor hen die een tegenwoordige tijd kunnen onderscheiden van een toekomstige halfvoorwaardelijke bepaalde subinverte plagiale aanvoegend intentioneel verleden tijd.
- Giphart


  • ggvw
  • Registratie: September 2001
  • Laatst online: 15-12-2024
Op een of andere manier moet je denk ik "onthouden" welke gebruiker wat heeft toegevoegd.

Dit kan via:
- sessies
- cookies
- url

Als de bezoeker later een tweede keer op hetzelfde product klikt dan doe je zo'n query als:
select * from bestellingen where productid=1234 and gebruiker=.....
als deze query resultaat geeft doe dan een update, anders insert

Maar ipv van een shopping cart bij te houden in mysql kan je dit ook doen in cookies en sessies.

Vooral die laatste is erg handig en, vind ik, eenvoudiger dan in mysql.
Bovendien is het altijd handig om wat van sessies af te weten.

http://www.php.net/manual/nl/ref.session.php
en op devshed staan ook hele handige tutorials...

edit:

ow nee... verkeerd gelezen.. het ging niet om een shopping cart |:(
het is nog vroeg... :z

[ Voor 12% gewijzigd door ggvw op 30-05-2003 09:02 ]


  • Siliakus
  • Registratie: November 2000
  • Laatst online: 22-08 14:41
eh geen antwoord op de vraag, maar zou een kolom 'datum' ook niet handig zijn in de tabel bestellingen? Ik wil zelf nml nog wel eens wat dingen in een winkelwagentje mikken om te zien hoeveel het samen kost, waarna ik het niet wil bestellen en dus gewoon het venster wegklikt.

Nu is bij jou dus het idee dat de volgende keer als die persoon inlogt/de shop bezoekt zijn winkelwagentje gevuld wordt met de producten die hij de vorige sessie erin gestopt heeft?

Zo ja, ik zou er als klant echt niet op zitten te wachten om een winkelwagentje van 3 weken terug weer aan te treffen (dus iets van een stored procedure maken waarmee je de tabel om de zoveel tijd kan opschonen? -> op grond van datum waarop het record is aangemaakt).

Hm, het is beetje warrig verhaal geworden, maar ik hoop dat je er iets aan hebt.

  • Gert
  • Registratie: Juni 1999
  • Laatst online: 05-12-2025
Ik zou als ik het zo als jou zou doen zodra een klant zich identificeert, misschien is dat alleen maar de site openen, een lege row maken met alleen id en klant, en daarna updaten waar nodig.

Kan je af en toe een script runnen dat rijen met 0 producten verwijdert mocht het nodig zijn.

Verwijderd

Topicstarter
Hoi, ja datum etc zit er ook nog bij ;) en nee geen cookies, als ik ergens een hekel aan heb is het daaraan!
Mensen bedankt! ik zal vanavond even kijken of alles gaat, zo niet dan horen jullie het wel hier :) Ik moet namelijk zo werken tot 9 dus ben de heledag weg,

Kzal alles eens ff grondig doorlezen!
Pagina: 1