• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Frage PHP mysql Zeile (ID) via URL übergeben

LetsDOIT

Neues Mitglied
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 "<tr>";
echo "<td>" . $row['ID'] . "</td>";
echo "<td>" . $row['Name'] . "</td>";
echo "<td>" . $row['Vorname'] . "</td>";
echo "<td>" . $row['Telefon'] . "</td>";
echo "<td>
<a href='#'>Update</a> ¦
<a href='delete.php?id='".$row['ID']."'>Delete</a>
</td>";
echo "</tr>";
}
?>
</table>

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
 
Zuletzt bearbeitet von einem Moderator:
Werbung:
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:
  • 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.
  • Eine Auflistung der Spaltennamen macht den Code verständlicher, da die Tabellenstruktur nicht erst im Datenbankschema nachgelesen werden muss.
  • 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.
 
Werbung:
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.
 
Werbung:
Stimmt genau.

Ergänze mal vor

PHP:
echo "<tr>";

diese Zeile:

PHP:
var_dump($row);

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. :(
 
Werbung:
ok :(. Aber vielen Dank für deine Unterstützung bis jetzt. Vielleicht hat ja sonst wer noch ne Idee.

Grüsse
LetsDOIT
 
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</a>

ICh versteh echt nichts mehr und hoffe, dass mir jemand auf die Sprünge helfen kann.
 
Zuletzt bearbeitet von einem Moderator:
Werbung:
Habs hingekriergt. So muss die gute Zeile aussehen:

<a href='delete.php?id=".$row['ID']."'>Delete</a>

:)

Greets und schönes Wochenende
LetsDOIT
 
Zurück
Oben