Liebe Freunde der PHP-Progammierung
Ich bin sehr neu was PHP-Programmierung angeht. Ich bin recht bewant in der VBA-Programmierung und habe gedacht ich versuchs jetzt mal mit PHP.
Ich habe mir diverse Bücher gekauft und die meisten Dinge klappen schon recht gut. Jetzt habe ich mit einem Projekt begonnen und bin auf Schwirigkeiten gestossen.
Leider geht es um grundlegende Verstädnisfragen, die ich aber trotz lesen und probieren mir selber nicht erklären konnte. Konkret:
Ich habe mir eine MySQL Datenbank erstellt. Diese ist simpel gemacht. Es gibt eine Kolonne "first_name", eine Kolonne "last_name" und eine Kolonne "ranking" (heisst bei mir 3y_al_vs_in, weil es ein 3 jahres ranking ist).
Die Verbindung zur DB klappt problemlos.
Ich mache dann die Abfrage:
Wenn ich das ganz über: echo "<tr><td>" . htmlspecialchars($zeile["last_name"]) . "</td>" . "<td>" . htmlspecialchars($zeile["first_name"]) . "</td>" . "<td>" . htmlspecialchars($zeile["3y_al_vs_in"]) . "</td>" . "</tr>\n"; aufrufe, klappt das tip top. Er spuckt mir alle Werte aus. Leider sind einige Namen doppelt vertreten, weisen aber dasselbe Ranking auf. Das heisst ich brauche diese nur einmal. Habe ich dann gelöst mit:
und da ich gelesen hatte, dass ich eine foreach schleife verwenden muss, wenn Lücken im Array bestehen:
Soweit klappt alles.
Was mit am ganzen gar nicht gefiel ist, dass ich einen zusammenhängen String mit: $array[] = $zeile["last_name"] ." " . $zeile["first_name"] ." " . $zeile["3y_al_vs_in"]; erzeugt habe. mit first_name, last_name ist das ja noch ok aber das Ranking wollte ich in eine separaten Spalte. Ich habe dann folgendes versucht (noch ohne array_unique, da ich testen wollte was dabei rauskommt):
und nun zeigt er mir gerade nur einen Datensatz an und zwar spielt es keine Rolle ob ich print_r durch ein foreach Schleife ersetze. Warum?
Ganz generell würde ich die Endausgabe sowieso lieber mit while machen, da ich da die einzelnen Spalten ansteuern kann. Dafür müsste ich vermutlich erst ein neues array mit der foreach schleife befüllen und dann würde die Indexierung wieder stimmten, oder?
Also, was ich ganz gerne wissen möchte, wenn sich den jemdand die Zeit nimmt und das liest und sich auch noch die Mühe für eine Antwort macht:
Wie kriege ich aus einer Datenbank ein assoziatives Array, dass man von Doppeineinträgen bereinigen kann und danach trotzdem alle Spalten ("first_name", "last_name") separat ausgeben kann.
Ich wäre um Hilfe und auch Ratschläge sehr dankbar.
Liebe Grüsse
Stefan
Ich bin sehr neu was PHP-Programmierung angeht. Ich bin recht bewant in der VBA-Programmierung und habe gedacht ich versuchs jetzt mal mit PHP.
Ich habe mir diverse Bücher gekauft und die meisten Dinge klappen schon recht gut. Jetzt habe ich mit einem Projekt begonnen und bin auf Schwirigkeiten gestossen.
Leider geht es um grundlegende Verstädnisfragen, die ich aber trotz lesen und probieren mir selber nicht erklären konnte. Konkret:
Ich habe mir eine MySQL Datenbank erstellt. Diese ist simpel gemacht. Es gibt eine Kolonne "first_name", eine Kolonne "last_name" und eine Kolonne "ranking" (heisst bei mir 3y_al_vs_in, weil es ein 3 jahres ranking ist).
Die Verbindung zur DB klappt problemlos.
Ich mache dann die Abfrage:
PHP-Code:
$ergebnis = $mysqli->query("SELECT first_name, last_name, raking from `overview` Order By CAST(3y_al_vs_in AS SIGNED) DESC;");
while($zeile = $ergebnis->fetch_assoc()) {
}
PHP-Code:
$ergebnis = $mysqli->query("SELECT first_name, last_name, raking from `overview` Order By CAST(3y_al_vs_in AS SIGNED) DESC;");
while($zeile = $ergebnis->fetch_assoc()) {
}
$array[] = $zeile["last_name"] ." " . $zeile["first_name"] ." " . $zeile["3y_al_vs_in"];
PHP-Code:
$regex = "/NC/";
foreach ($arrayneu as $key => $value) {
if(!preg_match($regex, $value)) {
echo "<tr><td>" .$value. "</td>" . "</tr>\n";
}
}
Was mit am ganzen gar nicht gefiel ist, dass ich einen zusammenhängen String mit: $array[] = $zeile["last_name"] ." " . $zeile["first_name"] ." " . $zeile["3y_al_vs_in"]; erzeugt habe. mit first_name, last_name ist das ja noch ok aber das Ranking wollte ich in eine separaten Spalte. Ich habe dann folgendes versucht (noch ohne array_unique, da ich testen wollte was dabei rauskommt):
PHP-Code:
while($zeile = $ergebnis->fetch_assoc()) {
$array = array("last_name" => $zeile["last_name"], "first_name" => $zeile["first_name"], "3y_al_vs_in" => $zeile["3y_al_vs_in"]);
}
$arrayneu = array_unique($array);
print_r ($arrayneu);
Ganz generell würde ich die Endausgabe sowieso lieber mit while machen, da ich da die einzelnen Spalten ansteuern kann. Dafür müsste ich vermutlich erst ein neues array mit der foreach schleife befüllen und dann würde die Indexierung wieder stimmten, oder?
Also, was ich ganz gerne wissen möchte, wenn sich den jemdand die Zeit nimmt und das liest und sich auch noch die Mühe für eine Antwort macht:
Wie kriege ich aus einer Datenbank ein assoziatives Array, dass man von Doppeineinträgen bereinigen kann und danach trotzdem alle Spalten ("first_name", "last_name") separat ausgeben kann.
Ich wäre um Hilfe und auch Ratschläge sehr dankbar.
Liebe Grüsse
Stefan

Kommentar