データベースからのギグを表示するページがあります。最初の読み込みでは、各エントリのタイトルと完全な詳細を示すボタンと、削除するボタン(未使用)を表示します。私は、いつでも最後のエントリのID番号を渡します。だから私は最初の曲をクリックしても、いつも第2のギグの詳細を見る。 (私はちょうど今データベースの2つのギグを持っています)フォームのforeachループからIDフィールドを渡す
私はどのように私はSHOWボタンをクリックしてIDを渡すための提案?
これはあなたの代わりにinput type="submit"
のbutton
を使用する場合は、あなたの代わりに隠し入力を使用してのボタンにIDを埋め込むことができます私のコード
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());
}
私はこれを私の答えで言及するのを忘れましたが、削除ボタンを押すと同じ問題が発生します。うまくいけば私はそれを適切に説明しました。私が何かを明確にする必要があるかどうか私に教えてください。 –
このQ&Aには、複数の入力を同じ名前で持つことの影響について説明しています。http://stackoverflow.com/questions/452066/html-form-with-multiple-hidden-control-elements-of-the-same-name –
あなたのforeachループは、既に最初の反復の後に終了しているので、あなたのforeachループがどのように動作するはずかわかりません - あなたは 'exit()'を持っています! – CherryDT