Ich habe eine Seite, die Gigs aus der Datenbank zeigt. Erstes Laden zeigt nur den Titel jedes Eintrags und eine Schaltfläche zum Anzeigen der vollständigen Details und eine Schaltfläche zum Löschen (noch nicht verwendet)Weitergabe ID-Feld von einer foreach-Schleife in einem Formular
Ich habe Probleme bei der Weitergabe der ID-Wert für jeden Eintrag meiner foreach-Schleife. Es gibt immer die ID-Nummer des letzten Eintrags weiter, egal auf welchen ich klicke. So sehe ich immer die Details des zweiten Gigs, auch wenn ich auf den ersten klicke. (Ich habe gerade zwei Gigs in der Datenbank für jetzt)
Irgendwelche Vorschläge, wie man die ID desjenigen weitergibt, auf den ich die SHOW-Taste anklicke?
Dies ist mein Code
require_once "gigPDO.php";
//Show button is pressed
if (isset ($_POST ["show"])) {
$id = $_POST ["id"];
//$id = 5;
try {
$dbase = new gigPDO();
$result = $dbase->searchGig($id);
//print_r($result);
foreach($result as $gig){
print("<p>Title: " . $gig->getTitle());
print ("<br>Venue: " . $gig->getVenue());
print ("<br>Date: " . $gig->getDate());
print ("<br>Time: " . $gig->getTime());
print ("<br>Country: " . $gig->getCountry());
print ("<br>Address: " . $gig->getAddress());
print ("<br>Postcode: " . $gig->getPostcode());
print ("<br>City: " . $gig->getCity());
print("<br>Description: " . $gig->getDescription() . "</p>");
echo "<br />";
unset($_POST ["show"]);
echo "<a href='searchGigs.php'>Back to list</a>";
exit();
}
exit();
} catch (Exception $error) {
print("<p>Error: " . $error->getMessage());
exit();
}
}
//First load, shows all gigs
try {
$dbase = new gigPDO();
$result = $dbase->allGigs();
foreach($result as $gig){
print("<p>". $gig->getTitle(). "<p>");
print ("<input type='hidden' name='id' value='".$gig->getId() ."'>");
print('<input type="submit" name="show" class="next show-button" value="Show" />');
print(' <input type="submit" name="delete" class="next show-button" value="Delete" />');
echo "<br />";
echo "<br />";
}
if ($dbase->getRows() == 0){
print("There are no gigs in the database yet");
}else{
print("<p>Total " . $dbase->getRows() . " gigs</p>");
}
} catch (Exception $error) {
print("<p>Error: " . $error->getMessage());
}
Ich habe vergessen, dies in meiner Antwort zu erwähnen, aber Sie werden auf das gleiche Problem stoßen, wenn Sie auf die Schaltfläche zum Löschen kommen. Hoffentlich habe ich es richtig erklärt. Bitte lassen Sie mich wissen, wenn ich etwas klären muss. –
In diesem Q & A wird die Auswirkung mehrerer Eingaben mit demselben Namen erläutert: http://stackoverflow.com/questions/452066/html-form-with-multiple-hidden-control-elements-of-the-same-name –
I bin mir nicht sicher, wie deine foreach-Schleife funktionieren soll, da du sie nach der ersten Iteration bereits verlässt - du hast 'exit()' ohne Bedingung drin! – CherryDT