PHP mysql Zeile (ID) via URL übergeben

Hallo Zusammen

Ich komme im Moment mit meinem Code nicht weiter und hoffe, dass mir jemand weiterhelfen kann.

Situation:
Lese via mysql eine Tabelle aus, aus einer DB. Dies klappt alles soweit. Die letzte Kolonne in der Tabelle heisst „Aktion.“ In dieser Tabelle möchte ich zwei Links definieren „Update“ und „Delete“. Später möchte ich dann die gewünschte Zeile mittels Update updaten oder mittels Delete löschen können. Bis hier hin alles ok.

Nun das Problem:
Bei der Übergabe der ID von der betroffenen Zeile über die URL habe habe ich ein Problem. Folgend der Code:

<table cellpadding="5" cellspacing="0" border="1">
   <tr>
       <th>ID</th>
       <th>Name</th>
       <th>Vorname</th>
       <th>Telefon</th>
       <th>Aktion</th>
   </tr>
<?php require('connectDB.php'); $db_res = mysqli_query($db_link, "SELECT * FROM kontakte") or die("Fehler: " . mysqli_error($db_link)); while($row = mysqli_fetch_array($db_res)) { echo ""; echo "" . $row['ID'] . ""; echo "" . $row['Name'] . ""; echo "" . $row['Vorname'] . ""; echo "" . $row['Telefon'] . ""; echo " Update ¦ Delete "; echo ""; } ?>

Beim Link delete habe ich schon auf hunderte Arten versucht die ID an die seite delete.php zu übergeben, erhalte jedoch immer wieder Fehlermeldungen, dass etwas mit der Syntax nicht stimmt.

Kann mir hier jemand weiterhelfen?

Grüsse
LetsDOIT

Update:
Wenn ich auf den Delete Link klicke, werde ich auf die delete.php seite geleitet. Der Wert ID in der URL ist jedoch leer. Ich glaube es braucht nicht mehr viel zur Lösung. Wie übergebe ich den Wert ID aus der Tabelle an die URL?

Grüsse
LetsDOIT

Ich hab mir den Code gerade mehrmals angeschaut - ich sehe ehrlich gesagt keinen Fehler. Du hast das richtig gemacht. Wenn Du mit der Maus über den Link „Delete“ fährst, siehst Du dann die URL im Browser (Firefox: unten links) - ist dort der Parameter enthalten?

Tipp:
Beim Einsatz von SQL-Datenbanken sollte das Abrufen aller Spalten eines Datensatzes per SELECT * vermieden werden. Stattdessen sollten die gewünschten Spaltennamen explizit aufgelistet werden (SELECT col1, col2 FROM …). Einige Vorteile:
[ul]
[li]Häufig werden in einer Abfrage nicht alle Spalten benötigt, die aktuell existieren oder in Zukunft existieren könnten, sodass unnötige Daten übertragen werden.[/li][li]Eine Auflistung der Spaltennamen macht den Code verständlicher, da die Tabellenstruktur nicht erst im Datenbankschema nachgelesen werden muss.[/li][li]Bei Änderungen am Datenbankschema (etwa bei Entfernung oder Umbenennung einer Spalte) schlägt eine Query, die kein SELECT * nutzt, sofort fehl. Probleme können so schneller identifiziert werden.[/li][/ul]

Guten Abend

erst mal vielen Dank bdt600 für deine wertvolle Information.

Zu meinem Problem, nein der Paramter ist unten Links nicht ersichtlich, wenn ich mit der Maus über den Delelte Link fahre. Unten links wird folgendes angezeigt:

http://localhost/Projekte/Kontaktmanager/delete.php?id=

Grüsse
LetsDOIT

Gibt es denn eine Spalte namens „ID“ in der Tabelle? Genau so geschrieben.

Ja, die heisst ID. Kann es sein, dass es daran liegt, dass ich auf delete.php noch kein GET definierte habe? Wobei, eigentlich sollte die Variable doch einfach an die URL übergeben werde, unabhängig was danach damit passieren soll.

Stimmt genau.

Ergänze mal vor

[php]echo „“;[/php]

diese Zeile:

[php]var_dump($row);[/php]

Damit solltest Du sehen was pro Zeile tatsächlich aus der Datenbank ausgelesen wird.

hab ich gemacht. Folgend ein Ausschnit, von dem was dabei rauskommt:

array(8) { [0]=> string(1) „2“ [„ID“]=> string(1) „2“ [1]=> string(9) „Francisco“ [„Name“]=> string(9) „Francisco“ [2]=> string(7) „Vanessa“ [„Vorname“]=> string(7) „Vanessa“ [3]=> string(10) „0785653232“ [„Telefon“]=> string(10) „0785653232“ } array(8) { [0]=> string(1) „4“ [„ID“]=> string(1) „4“ [1]=> string(7) „Thomens“ [„Name“]=> string(7) „Thomens“ [2]=> string(6) „Gustaf“ [„Vorname“]=> string(6) „Gustaf“ [3]=> string(10) „0568565858“ [„Telefon“]=> string(10) „0568565858“ } array(8) { [0]=> string(1) „5“ [„ID“]=> string(1) „5“ [1]=> string(7) „Theiler“ [„Name“]=> string(7) „Theiler“ [2]=> string(4) „Marc“ [„Vorname“]=> string(4) „Marc“ [3]=> string(10) „0112525252“ [„Telefon“]=> string(10) „0112525252“ } array(8) { [0]=> string(1) „7“ [„ID“]=> string(1) „7“ [1]=> string(5) „Finor“ [„Name“]=> string(5) „Finor“ [2]=> string(5) „Bugar“ [„Vorname“]=> string(5) „Bugar“ [3]=> string(10) „0447474747“ [„Telefon“]=> string(10) „0447474747“ } array(8) { [0]=> string(1) „8“ [„ID“]=> string(1) „8“ [1]=> string(7) „Borgoni“ [„Name“]=> string(7) „Borgoni“ [2]=> string(6) „Talima“ [„Vorname“]=> string(6) „Talima“ [3]=> string(10) „0336565656“ [„Telefon“]=> string(10) „0336565656“ } array(8) { [0]=> string(1) „9“ [„ID“]=> string(1) „9“ [1]=> string(6) „Lugner“ [„Name“]=> string(6) „Lugner“ [2]=> string(4) „Alex“ [„Vorname“]=> string(4) „Alex“ [3]=> string(10) „0558565656“ [„Telefon“]=> string(10) „0558565656“ } array(8) { [0]=> string(2) „10“ [„ID“]=> string(2) „10“ [1]=> string(7) „Jackson“ [„Name“]=> string(7) „Jackson“ [2]=> string(4) „Huli“ [„Vorname“]=> string(4) „Huli“ [3]=> string(10) „0552523263“ [„Telefon“]=> string(10) „0552523263“ } array(8) { [0]=> string(2) „11“ [„ID“]=> string(2) „11“ [1]=> string(0) „“ [„Name“]=> string(0) „“ [2]=> string(0) „“ [„Vorname“]=> string(0) „“ [3]=> string(0) „“ [„Telefon“]=> string(0) „“ } array(8) { [0]=> string(2) „12“ [„ID“]=> string(2) „12“ [1]=> string(0) „“ [„Name“]=> string(0) „“ [2]=> string(0)

Sieht völlig ok aus. Warum dort keine Ausgabe passiert kann ich daher leider nicht nachvollziehen. :frowning:

ok :(. Aber vielen Dank für deine Unterstützung bis jetzt. Vielleicht hat ja sonst wer noch ne Idee.

Grüsse
LetsDOIT

Äh, ist das I wirklich ein großes i oder ein kleines L?

Habs auf der DB nochmals überprüft, war ein grosss i. Und nirgends finde ich eine entsprechene Anleitung oder Video dazu. Ich verzweifle echt langsam.

Ich habe neue Erkenntnise.

Wenn ich bei der Codezeile für den Löschlink ein \ einfüge, dann wird zwar die ID in der URL angezeigt, aber die Seite delete.php wird nicht mehr gefunden.

<a href='delete.php?id=‚„.$row[‚ID‘].“‘>Delete

ICh versteh echt nichts mehr und hoffe, dass mir jemand auf die Sprünge helfen kann.

Habs hingekriergt. So muss die gute Zeile aussehen:

<a href=‚delete.php?id=„.$row[‚ID‘].“‘>Delete

:slight_smile:

Greets und schönes Wochenende
LetsDOIT

Argh, stimmt. Da war ein Anführungszeichen zu viel -.-