holt nicht passenden Wer
Christoph
- php
allo,
ich habe da ein Problem. Und zwar habe ich eine normale Datei und wenn man diese Datei aufruft mit einem entsprechenden Parameter wie z.B. index.php?d=i1o dann soll ein bestimmter Text angezeigt werden. Der Parameter wird zusammengesetzt vom ersten Buchstaben des Vor- und Familiennamen und in der Mitte mit der User_ID die alle aus der DB kommen. Nur leider zeigt er mir nur immer den letzten Eintrag in der DB an, also das zusammengesetzte Namenskürzel. Aber wenn ich z.B. index.php?d=n2s oder so abfrage, auch wenn es diesen Eintrag gibt, dann zeigt er mir nichts an.
Mit echo $code; habe ich mir schon alle Kürzel ausgegeben lassen aber wie gesagt, er zeigt nur beim letzten Eintrag mir den richtigen Text an.
Worin liegt mein Denkfehler? Ich seh irgendwie vor lauter Buchstaben und Zahlen den Quellcode nicht...
Grüße
cg
hier mein Code:
$kunden = dbcom_db_query("SELECT * FROM tbl_kunden");
$num_rows = dbcom_db_num($kunden);
for($i=0; $i<$num_rows; $i++)
{
$kunden_arr = dbcom_db_array($kunden);
$user_id = strtolower($kunden_arr["kunden_id"]);
$vorname = strtolower($kunden_arr["vorname"]);
$nachname = strtolower($kunden_arr["nachname"]);
$umlaute = array(
"ä" => "ae",
"ö" => "oe",
"ü" => "ue",
"Ä" => "ae",
"Ö" => "oe",
"Ü" => "ue"
);
$str = strtr($vorname, $umlaute);
$str2 = strtr($nachname, $umlaute);
$code = $str{0}.$user_id.$str2{0};
echo $code;
echo "<br><br>";
}
if($_GET['d'] == $code)
{
echo "<strong>Herzlich Willkommen ".$kunden_arr["anrede"]." ".$kunden_arr["vorname"]." ".$kunden_arr["nachname"]." :)</strong>";
}
else
{
echo "Herzlich Willkommen Unbekannter :/";
}
Also abgesehen davon, dass ich das Problem auch nicht finde: Diese sSkript ist ja nicht dein Ernst, oder?
Zum einen ist es nicht grade skalar, zum anderen steigt mit wachsender User-Anzahl auch deine Serverlast extrem an. Mit 10 Usern ist das ja nicht schlimm, aber mit 1000 schon.
Mein vorschlag: Entweder speichere dir in der DB einen normalen Benutzernamen, den du dann suchst und der eindeutig ist
ODER
Du hast als Parameter nur die ID und SUCHST danach in der DB, statt alle Datensätze damit zu vergleichen *schauder*
ODER
wenn du an deinem System festhalten willst so speichere um Himmels willen deinen Code in die DB in eine Spalte und suche nach dem Datensatz, wo der Code drinsteht.
Aber mal ehrlich: Warum ahst du eine Bentuzer-ID in der DB, wenn du sie nicht benutzt? Weil es nicht sicher ist? Glaubst du, dass dein Zusammengebastelter Pseudo-Benutzername irgendwen aufhält?
Aber das ist dein Problem. Wie gesagt, ich kann den Fehler in deinem Originalscript nicht finden, aber ich finde hier einfach einen schrecklichen Designfehler. Wie du das löst ist deine Sache...
Michael H.
Hallo Michael,
das ist vollkommend egal, wie die Struktur aussieht oder ähnliches. Das ist nur ein Testscript ohne Bedeutung. Ich hab den Fehler jetzt selber gefunden, und das andere drumherum sollte so sein. Wie gesagt das ist alles nur für mich zum testen gewesen.
Fakt ist, dass in der DB ca. 150 User drin stehen.
Fakt ist, dass der Code bestimmt auch in die DB reingeschrieben wird, nur wollte ich das nur mal so testen obs auch anders geht.
Fakt ist, dass mein Script nicht super toll ist, aber das mit dem Parameter von meinem Chef so verlangt wurde. Ist ja auch egal, ich hab den Fehler gefunden, es funktioniert so wie ich das wollte, auch wenn ich am Ende es wohl wieder umschreiben werde.
Grüße
Christoph