Archiv verlassen und diese Seite im Standarddesign anzeigen : mehrfachabfrage db
Knisterkarl
01.10.2005, 00:23:28
hallo zusammen,
ich steh mal wieder vor einer haerausforderung und weiß nicht so recht, wie ich die geschichte umsetzen soll.
es soll eine db durchsucht werden. der user hat die möglichkeit ein formular zu durchsuchen. dabei kann er email, plz, name etc. abfragen. wenn z.b. alle suchkriterien erfüllt wurden, dann soll er eine meldung bekommen, dass eine 100% übereinstimmung vorliegt. sollten nur der name und die email übereinstimmen, soll er eine entsprechende meldung bekommen, dass in diesem fall halt nur eine übereinstimmung von x% vorliegen....
hat jemand nen tip für mich?? hab es grade mit if und switch versucht, wollte aber nicht so richtig hinhauen...
vielen dank und gru´ß knistrkarl
Dann zeig mal Deine if()- und switch()-Versuche!
Knisterkarl
01.10.2005, 11:08:25
ich hab mir gedacht, dass eine abfrage mit allen suchkriterien gestratet wird. wenn diese zu keinem erfolg führt, dann halt weiter in der switch() anweisung...allerdings hab ich da nen denkfehler drin...hier mal der code:
include ('config.php');
$i=0;
switch($i){
case 0:
$res2 = mysql_query("SELECT * FROM $table_po WHERE
name like '$nachname' and vorname like '$vorname'
and plz like '$plz'
and handy like '$handy' and email like
'$email' and bdate like '$bdate' " );
$num2 = mysql_num_rows($res2);
if($num2==0){
$i=2;
}
break;
case 2:
$res2 = mysql_query("SELECT * FROM $table_po WHERE
name like '$nachname' and vorname like '$vorname'
and plz like '$plz' and handy like '$handy' and
email like '$email'");
$num2 = mysql_num_rows($res2);
if($num2==0){
$i=4;
}
break;
case 4:
$res2 = mysql_query("SELECT * FROM $table_po WHERE
name like '$nachname' and vorname like '$vorname'
and plz like '$plz' and handy like '$handy'");
$num2 = mysql_num_rows($res2);
if($num2==0){
$i+6;
}
break;
case 6:
$res2 = mysql_query("SELECT * FROM $table_po WHERE
name like '$nachname' and vorname like '$vorname'
and plz like '$plz'");
$num2 = mysql_num_rows($res2);
if($num2==0){
}
break;
case 8:
$res2 = mysql_query("SELECT * FROM $table_po WHERE
name like '$nachname' and vorname like
'$vorname'");
$num2 = mysql_num_rows($res2);
if($num2==0){
$i=10;
}
break;
}
und anschließend dachte ich halt, dass ich dann einfach sagen kann "wenn $i==2 dann mach das...."
war allerdings nen satz mit x....
gruß knisterkarl
Stevie B.
01.10.2005, 12:42:19
So wird das auch nichts. Die Switch-Anweisung wählt immer den ersten Eintrag (switch -> case 0) und bricht dann ab. Wenn also mit der SQL-Abfrage kein Treffer erzielt wird, geht er auch nicht weiter.
Nimm stattdessen eine if-Anweisung - ungefähr so:
$sql = @mysql_query("SELECT * FROM $table_po" );
$i = 0;
if (@mysql_num_rows($sql) > 0) {
while ($tmp = @mysql_fetch_array($sql)) {
if ($tmp[name] == $nachname) $i++;
if ($tmp[vorname == $vorname) $i++;
if ($tmp[plz] == $plz) $i++;
.
.
.
}
} else {
print "Leider kein Treffer";
}
Ich denke, zumindest mal ein Ansatz...
Gruß,
Stevie B.
Knisterkarl
01.10.2005, 14:24:33
ja, das werde ich mal so ausprobieren....
vielen dank erstmal für eure hilfe!!
gruß knisterkarl
vBulletin® v3.8.3, Copyright ©2000-2024, Jelsoft Enterprises Ltd.