PHP & SQl

madherby
Ich habe mich nach langer Zeit mal wieder dem Duo PHP & SQL angenommen.
Die Forderung war folgende: Jemand gibt seine email an und seine kundennummer ($email & $kundennummer). Es wird geprft ob diese in der Datenbank in den Spalten email und kundennummer vorhanden sind und dann kommt der Kunde auf eine Bestellseite. Sollte die email oder die Kundennummer nicht in der Datenbank vorhanden sein, so bekommt der Kunde eine Seite mit einer Fehlermeldung zu sehen.
Da der Kunde nicht viel zahlen möchte, habe ich ein recht einfaches Script entworfen. Es funktioniert auch, werden eine bekannte Kundennummer und eine bekannte email eingegeben kommt der Kunde auf die Formularseite. Nur gibt der Kunde eine richtige Kundennummer ein und eine falsche email so kommt er auch dahin. Ist aber die Kundennummer falsch, so bekommt er eine Fehlermeldung. Es scheint mir so, als ob nur die Kundennummer abgefragt wird und die email unter den Tisch fällt. Habe ich mein Script doch zu einfach gestrickt? Ich hielt die Option das nur bei $c==2 die Weiterleitung zum Formular geht für tja narrensicher.

Hier der Code, bin über Feedback dankbar.

<?php
include("funktion.php");

if($action=="senden")
{
$dbhost="xxx";
$dblogin="xxx";
$dbpw="xxx";
$dbname="xxx";
mysql_connect($dbhost,$dblogin,$dbpw) or die("Kein Connect!");
mysql_select_db($dbname);

$a=0;
$b=0;
$c=0;

$sql="select * from allekundendaten where kundennummer='$kundennummer'";

$kunde=mysql_query($sql)or die(mysql_error());

$row=mysql_fetch_assoc($kunde);



if ($row['kundennummer']==$kundennummer)
{

$a=1;

}

$sql1=" select * from allekundendaten where email='$email'";

$emailadresse=mysql_query($sql1)or die(mysql_error());

$row1=mysql_fetch_assoc($emailadresse);

if ($row1['email']==$email)
{

$b=1;

}

$c=$a+$b;

if ($c==2)

{

//Kundennummer und eMail Adresse richtig.
echo "<meta http-equiv='refresh' content='0; URL=../Shop2.html'>";

}
else

{

//Kundennummer und eMail Adresse falsch.

echo "<meta http-equiv='refresh' content='0; URL=../eMail2.html'>";

}

?>

Danke im Voraus.

Madherby
e-phy
Schon mal was von AND bzw. && gehört? Ganz netter Operator sag ich dir. Solltest die Abfrage koppeln, da so nur eine Abfrage ausgeführt wird!
madherby
Du meinst so in der Art?

$sql="select * from allekundendaten where kundennummer='$kundennummer'" and email='$email' bzw.

$sql="select * from allekundendaten where kundennummer='$kundennummer'"&& email='$email'

Hatte ich auch schon im Script, mit dem Ergebnis, das auch nur eine Abfrage statt gefunden hat. Die Sache mit den Zahlen war ehr zur Kontrolle. Ich habe mir die Werte $a,$b und $c ausgeben lassen (echo) um zu sehen was berücksichtigt wird.

Nun weshalb wird in meinem script nur eine Abfrage ausgeführt. Das will mir nicht einleuchten. Wenn ich 2 Querys zum auslesen habe und nur wissen will ob die eingegebenen $kundennummer und $email in der Datenbank vorhanden sind, erscheint mir das Script oder auch eines mit etwas abgewandelten If/else Befehl oder and richtig. Ich fürchte es mangelt mir hier an Verständis oder Logik.

Eine etwas ausführlichere Antwort zu meinem Script wäre nett, ggf. komme ich dann auch auf die Lösung ;-)

Schönes Wochenende
Andi
ganz einfach, weil der nur die letzte abfrage bearbeitet

musst den befehl "mysql_fetch_assoc" in ne schleife einbaun.

zB
php:
1:
2:
3:
while($row=mysql_fetch_assoc($kunde)) {
...
}


hab mir jetz den script ned so genau angeschaut, aber aufn ersten blick fällt mir nur des auf
madherby
Über eine Schleife habe ich auch nachgedacht, aber es geht ja nur um ein Ergebnis. Ein Kunde mit einer Kundennummer. Macht eine Schleife hier Sinn?
Andi
aso

hast mich mit deinen mehreren antworten im letzten beitrag wohl a bisl verwirrt
madherby
Mehrere Antwortet? Dabei bin ich ehr der schweigsame Typ. Nein es gibt pro Kunde nur eine Kundennummer und ein eMail Adresse in der Datenbank. Es hat den Anschein als ob, egal ob ich mit Schleifen oder verschachtelten If Anweisungen oder einem and arbeite, nur die Kundennummer abgefragt wird, ich kann nur nicht nach vollziehen weshalb.