Nun muss ich herausfinden, ob die Funktion person_suchen() oder die Schleife(n), die die Ergebnisse der Funktion verarbeiten fehlerhaft sind :-|
Ich bin ein Stück weiter: Es liegt an der Funktion person_suchen().
Ich habe den Code etwas modifiziert, um die Ausgaben zu verfolgen:
function person_suchen($such_arr){
$big_arr = split('[#]',$such_arr);
$x=0;
echo "BIGARR : ".count($big_arr)."\n\r________________________________________\n\r\n";
for($n=0;$n<count($big_arr);$n++){
$arr = split('[,. ;]',$big_arr[$n],3);
//echo $arr[0]."Arr0 Scleif: ".$n."";
if (count($arr)==1){
$sql=
"SELECT personen.lfd, personen.nachname,personen.vorname,
personen.geburtstag, personengruppe.gruppe, personen.kennung
FROM personen,personengruppe,chron_personengruppe
WHERE personen.nachname LIKE '".$arr[0]."'
AND (chron_personengruppe.fk_personen=personen.lfd
AND personengruppe.lfd = chron_personengruppe.fk_personengruppe
AND ISNULL(chron_personengruppe.bis))
";
}
elseif(count($arr)==2){
$sql=
"SELECT personen.lfd, personen.nachname,personen.vorname,
personen.geburtstag, personengruppe.gruppe, personen.kennung
FROM personen,personengruppe,chron_personengruppe
WHERE chron_personengruppe.fk_personen=personen.lfd
AND personengruppe.lfd = chron_personengruppe.fk_personengruppe
AND ISNULL(chron_personengruppe.bis)
AND personen.nachname LIKE '".$arr[0]."'
AND personen.vorname LIKE '".$arr[1]."'
";
}
elseif(count($arr)==3){
$sql=
"SELECT personen.lfd, personen.nachname,personen.vorname,
personen.geburtstag, personengruppe.gruppe, personen.kennung
FROM personen,personengruppe,chron_personengruppe
WHERE chron_personengruppe.fk_personen=personen.lfd
AND personengruppe.lfd = chron_personengruppe.fk_personengruppe
AND ISNULL(chron_personengruppe.bis)
AND personen.nachname LIKE '".$arr[0]."'
AND personen.vorname LIKE '".$arr[1]."'
AND personen.geburtstag LIKE '".datum_eu2us($arr[2])."'
";
}
if (isset($sql)){
$db = mySQL_ini();
$result = mysql_query($sql,$db);
$i=0;
While ($zeile= mysql_fetch_row($result)){
echo "Ergebnisse bei durchgagn ".$n."Schleife ".$i." ".$zeile[5]."\n\r".
$erg_arr[$i]=$zeile;
$i++;
$x++;
}
$big_erg_arr[$n]=$erg_arr;
echo "Zeilen bei durchgagn ".$n." :".count($erg_arr)."\n\r".
" zu suchen: ".$arr[0]."\n\r".
"SQL: ".$sql."\n\r -->BIGarr .".$n."& ".$i.": ".$big_erg_arr[$n][$i][5]."\n\r------------\n\r";
}
}
echo "while: ".$x."\n\n\n\r";
if(count($big_erg_arr)==0){
return false;
}
else
{
//echo $big_erg_arr[1][0][2];
return $big_erg_arr;
}
}
person_suchen("ro%#testmann");
Die Ausgabe sieht folgender Maßen aus:
BIGARR : 2
________________________________________
Ergebnisse bei durchgagn 0Schleife 0 gono2
ArrayErgebnisse bei durchgagn 0Schleife 1 gono8
ArrayErgebnisse bei durchgagn 0Schleife 2 gono9
ArrayErgebnisse bei durchgagn 0Schleife 3 gono11
ArrayErgebnisse bei durchgagn 0Schleife 4 gono12
ArrayErgebnisse bei durchgagn 0Schleife 5 gono13
ArrayErgebnisse bei durchgagn 0Schleife 6 gono14
ArrayZeilen bei durchgagn 0 :7
zu suchen: ro%
SQL: SELECT personen.lfd, personen.nachname,personen.vorname,
personen.geburtstag, personengruppe.gruppe, personen.kennung
FROM personen,personengruppe,chron_personengruppe
WHERE personen.nachname LIKE 'ro%'
AND (chron_personengruppe.fk_personen=personen.lfd
AND personengruppe.lfd = chron_personengruppe.fk_personengruppe
AND ISNULL(chron_personengruppe.bis))
-->BIGarr .0& 7:
------------
MERKWÜRDIG IST; DASS BEI DER SCHLEIFE n=1 NUR EIN ERGEBNIS ZURÜCKGEGEBEN WIRD, DIE WHILE SCHLEIFE ABER DENNOCH 7 MAL DURCHLAUFEN WIRD. WEITERHIN IST AUFFÄLLIG, DASS DIE ANZAHL DER WHILE DURCHLÄUFE BEIM DURCHGANG n=1 IDENTISCH IST MIT DER ANZAHL DER DURCHLÄUFE BEIM DURCHGANG n=0. PERSONEN MIT DEM ANFANG DES NACHNAMENS ro% SIND AUCH TATSÄCHLICH 7 MAL IN DER DB VORHANDEN. PERSONEN MIT NACHNAME testmann SIND ABER NUR 1 MAL IN DER DB VORHANDEN.
::::::::::::::::::::::::::::::::::::::::
Ergebnisse bei durchgagn 1Schleife 0 gono15
ArrayZeilen bei durchgagn 1 :7
zu suchen: testmann
::::::::::::::::::::::::::::::::::::::::::::
SQL: SELECT personen.lfd, personen.nachname,personen.vorname,
personen.geburtstag, personengruppe.gruppe, personen.kennung
FROM personen,personengruppe,chron_personengruppe
WHERE personen.nachname LIKE 'testmann'
AND (chron_personengruppe.fk_personen=personen.lfd
AND personengruppe.lfd = chron_personengruppe.fk_personengruppe
AND ISNULL(chron_personengruppe.bis))
-->BIGarr .1& 1: gono8
------------
while: 8