2016-05-05 2 views
0

データベースからのギグを表示するページがあります。最初の読み込みでは、各エントリのタイトルと完全な詳細を示すボタンと、削除するボタン(未使用)を表示します。私は、いつでも最後のエントリの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()); 

} 
+0

私はこれを私の答えで言及するのを忘れましたが、削除ボタンを押すと同じ問題が発生します。うまくいけば私はそれを適切に説明しました。私が何かを明確にする必要があるかどうか私に教えてください。 –

+0

このQ&Aには、複数の入力を同じ名前で持つことの影響について説明しています。http://stackoverflow.com/questions/452066/html-form-with-multiple-hidden-control-elements-of-the-same-name –

+0

あなたのforeachループは、既に最初の反復の後に終了しているので、あなたのforeachループがどのように動作するはずかわかりません - あなたは 'exit()'を持っています! – CherryDT

答えて

0

です。

echo '<button type="submit" name="id" class="next show-button" value="'.$gig->getId().'" /> 
     Show 
     </button>'; 

あなたが現在でし仕事を、それをやっている方法がありますが、入力の各セットの周りの別々のformタグが必要になります。現在、フォームを送信すると、隠れた入力はすべて送信され、同じ名前のため最後の値が取得されます。私が提案したように、あなたがクリックしたボタンの値だけが提出されます。

+0

返事をありがとう。私はそれをこのように働かせようとしているが、何かが正しくない。それが間違っているかどうかは分かりませんが、私のPHPdesignerにその行を置くと、それは赤色になり、どこに問題があるのか​​は分かりません。私はちょっと編集しようとしましたが、うまくいくように見えましたが、私はそれをこの1つのギグだけを見せたいと思っているトップパートに移したように見えませんでした。私は、 "ボタン"から転送された情報が違っていると思いますか? – Boogiewoogie

+0

申し訳ありません!私はただタイプミスを修正しました。ボタンから転送された情報は同じになるはずです。あなたは '$ _POST ['id']'からそれを得ることができるはずです。しかし、私のボタン提案を使用している場合は、 "show"という名前の入力がなくなりますので、 'if(isset($ _POST [" show "])){ if(isset($ _POST ["id"])){'。 –

+0

素晴らしい!それはそれを修正した。ちょうどPHPとPDOとそのすべてを知っているだけです。それはそれをつかむために少しトリッキーにすることができます。しかし、あなたに歓声! – Boogiewoogie

関連する問題