2016-04-08 14 views
0

私はデータベースからすべてのメニュー名を取り出し、それらに近いボタンでsearchresult.phpファイルを用意しています。変数$ nameofmenuを使用してメニューの名前を指定します。 >ボタン(メニューを参照)

メニュー2 - - >ボタン(メニューを参照)

MENU3 -

メニュー1のようなもの>ボタン(メニューを参照)

<?PHP 
while($myrow = pg_fetch_assoc($result)) { 
    $nameofmenu = $myrow[name]; 
    echo $nameofmenu; //It prints correctly the name of the menu 
    echo '<form name"formname" method="post" action="resultsmenu.php">'; 
echo "<input type='hidden' name='menuname' value=' $nameofmenu ' />"; 
echo "<input type='submit' name='submit' value='See Menu' />"; 
} 
?> 

それから私は、いずれかのボタンをクリックすると開くresultsme​​nu.phpファイルがあります。

<?php 
    $nameofmenu = $_POST['menuname']; 
    $db = pg_connect('host=localhost dbname=test user=myuser password=mypass'); 

    $query = "SELECT * FROM menu where name='$nameofmenu'"; 
    $result = pg_query($query); 
    if (!$result) { 
     echo "Problem with query " . $query . "<br/>"; 
     echo pg_last_error(); 
     exit(); 
    } 
    $myrow = pg_fetch_assoc($result); 
    $description = $myrow[description]; 
?> 

私は2つの問題を持っている:

  1. まず問題:searchresult.phpで、でもそれは私が、ボタン、すべてのボタンのいずれかをクリックすると、正しくすべての異なるメニュー名をプリントアウト同じメニューを返します(最後の例、例:$ name_menu = $ _POST ['menuname']; menu 3のresultmenu.phpファイル)。

  2. 2番目の問題:この問題は結果メニューに表示されます.phpファイル。メニュー3の場合でも、変数内の値を認識したことを示します。私はクエリから結果や値を返さない:$ query = "SELECT * FROM menu where name = '$ nameofmenu'"; しかし、私が手動で$ nameofmenu = "Menu3"のように値を設定した場合、それは動作します。 私はこのコードを使って、$ _POST ['menuname']から渡された値に異なる値があるかどうかを調べ、手動で入力した値と同じ値になるようにしました。 "両方の変数は同じです"

    $nameofmenu2 = "Menu3"; 
    $nameofmenu = $_POST['menuname']; //where the value in menuname is Menu3 
    if ($nameofmenu2 = $nameofmenu){echo "Both variables are the same";} 
    

あなたは、再びその唯一の「最後の」上書きが利用可能/返された同じ入力フィールド(=名)を超えるとオーバーを上書きそんなに

+1

等価比較は '='ではなく '='で行われます。代入演算は常に 'true'と評価されます。 – David

+1

初心者の方には、フォームを閉じているようには見えません。 – Marcus

+0

私はこの問題がhtmlであると思っています。あなたの入力はすべて同じ名前のプロパティを持っているので、データをPHPに送り返すときに問題を引き起こす可能性があります –

答えて

0

ありがとうございます。これを回避するには、(また、あなたの引用符を切り替える)このようなPOST-配列などのデータを置く:

echo '<input type="hidden" name="menuname[]" value="'.$nameofmenu.'" />'; 

提出した後、あなたは今$_POST['menuname']arrayであることがわかります!例えば

var_dump($_POST['menuname']); 
0

Davidが述べたように、あなたはnameofmenu2にnameofmenuを割り当てています。しかしさらに、あなたがエコーしたとき:

echo "<input type='hidden' name='menuname' value=' $nameofmenu ' />"; 

あなたは$ nameofmenuの両側に空白を入れました。これにより、クエリを作成するときに問題が発生する可能性があります。次のコードを使用してください:

var_dump($_POST['menuname']); 

予想される投稿データを確認してください。

関連する問題