PFZ.nl - PHP Community: Hoe dubbele klant aan te pakken - Databases - Forum - PFZ.nl - PHP Community

Je kunt niet antwoorden op dit topic
#1 02-09-2012 20:31
Hallo,

ik heb voor mijn 1-product webshop (dagdeal) een kassa systeem gemaakt.
Bij bestellen wordt er automatisch een wachtwoord aan het email adres van de klant gekoppeld en deze komt in de tabel "klanten".

Tabel klanten ziet er dan zo uit:

Voornaam
Achternaam
Straatnaam
Postcode
Huisnummer
emailadres
wachtwoord


Het bestelde product komt in de tabel Orders.


Nu kunnen klanten bij een vervolg aankoop dus gewoon inloggen waardoor ze niet alles weer opnieuw hoeven in te vullen.
Echter, nu weet ik uit eigen ervaring dat je ooit vergeet dat je ergens iets besteld hebt, of je kan zo snel niet meer herinneren welk emailadres / wachtwoord je daar had.
Dus je kiest ervoor toch alles opnieuw in te vullen.

Op dit punt wil ik dus heel graag jullie advies.
Zouden jullie dit opvangen met een error 1062 dubbele invoer en de order dus gewoon aan die klant koppelen, of zouden jullie de klant gewoon als nieuwe klant laten invoeren?

Ikzelf denk eigenlijk aan optie 2, maar is dit verstandig?

#2 02-09-2012 20:47
Direct koppelen nooit doen. Stel dat een klant per ongeluk een typfout maakt in zijn e-mail adres? En dus in plaats van jan.smit@outlook.com, jansmit@outlook.com typt?

Dan zou je opeens je bestelling onder een andere klant vallen!

Zorg er gewoon voor dat je een goede implementatie hebt van 'wachtwoord vergeten' (volgens mij is dit ook verplicht te hebben?), zodat de gebruiker een nieuw wachtwoord aangeleverd krijgt en dus netjes opnieuw kan inloggen voor zijn oude account (en daarmee dus ook zijn bestelhistorie kan bekijken).

#3 02-09-2012 20:50
Hoi Sjaak,

ik zou dan sowieso controleren op alle velden, want stel de klant is verhuisd, sinds zijn vorige bestelling en ik zou direct koppelen, dan zou het ook mis gaan.

Een goede implementatie van wachtwoord vergeten is aanwezig, alleen wil ik het nog afdekken dat een klant vergeten is dat hij of zij een account heeft bij mij.

Naar mijn inziens kan ik er, als meest veilige optie, beter voor kiezen dan een klant toch als nieuwe klant in te voeren, maar ik zou graag weten hoe jullie dit aanpakken / zouden pakken.

#4 02-09-2012 20:56
En hoe kun jij dan een "nieuwe" klant aanmaken als hij hetzelfde email adres gebruikt? En vanwaar de neiging om een nieuwe klant aan te maken, als volgens jou duidelijk is dat het een al bekende klant welke gewoon het wachtwoord is vergeten?

Wat is er mis met een berichtje "Hee! Je bent al eens hier geweest, wil je toevallig je oude account openen en daarmee verdergaan?". Al helemaal als je al een wachtwoord vergeten functie hebt.

Denk er aan dat jij verplicht bent informatie over een gebruiker te kunnen overhandigen, en dan maak je het jezelf heel erg moeilijk als je meerdere accounts voor één persoon hebt.

#5 02-09-2012 20:56
Het kan inderdaad nooit zo zin dat iemand een nieuw account maakt met het email adres van een bestaand account. Als iemand het e-mail adres niet meer weet dan is dat jammer, dan komt er een nieuw account met een nieuw e-mail adres. Als iemand een nieuw account maakt en een bestaand e-mail adres invoert; ook jammer, dan activeert hij zijn oude account maar via de wachtwoord-reset.
DELETE FROM world WHERE dbms='mysql';
http://www.yapf.net - http://yapf.blogspot.com/

#6 03-09-2012 18:55
ik wil een nette query-afhandeling uitvoeren, alleen wil ik hier ook een controle op dubbele invoer inbouwen.

Nu weet ik dat ik de controle kan doen met dit script:

1
2
3
4
 if( mysql_errno( ) == 1062 )
  {
      $Bericht['err_dubbel'] = "Dubbel";
  }


Maar om de query te controleren gebruik ik dit script:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
 if (($result_insert_klanten = mysql_query($sql_insert_klanten)) === false)
                    {
                        # als de query fout is -> foutafhandeling
                        echo showSQLError($sql_insert_klanten,mysql_error(),'Fout bij het invoegen van het product.');
                        $Bericht['fout'] = 'Er ging iets mis bij het invoeren van de gegevens in de database..';
                    }
                    else
                    {
                        # De query is geluk! :)
                        
                        $Bericht['gelukt'] = 'U bent toegevoegd als nieuwe klant!';
                        $klant_id = mysql_insert_id();
                    }
        }


Maar hoe voeg ik deze 2 samen?
Want nu krijg ik alleen de melding dat er iets mis ging met het invoeren van de gegevens, maar ik wil apart kunnen afvangen wanneer het gaat om een dubbele invoer.

#7 03-09-2012 19:02
Als je query lukt, dan is het invoeren dus gelukt. Gaat je query mis, dan ga je opvragen waarom het mis is gegaan a.d.h.v. de errorcode. In jouw code moet je dat dus in de if inbouwen.


Inloggen wachtwoord vergeten? Aanmelden