2017-09-12 4 views
0

私はmysqlデータのいくつかの行を保持するPHPフォームを更新しようとしています。各行の横にボタンがあり、その行をクリックするとその行を更新します。以下の問題は、IDが最後の行としてのみ設定されていることです。 IDにボタンを押し込むにはどうすればよいですか?だから基本的にどんなボタンを押しても、私は常にロードする最後のIDと同じIDを取得します。ボタンでPHPフォームからmysql datarowを更新

if($result){ 
     while($row = mysqli_fetch_array($result)){ 
      $id = $row["ID"]; 
      $beername = $row["BeerName"]; 
      $beertype = $row["BeerType"]; 
      $beerpercent = $row["BeerPercent"]; 
      $beerdescription = $row["BeerDescription"]; 
      $nowpouring = $row["NowPouring"] =='0' ? '' : 'checked=\"checked\"'; 
      $glutenreduced = $row["GlutenReduced"] =='0' ? '' : 'checked=\"checked\"'; 
      $beertogo = $row["BeerToGo"] =='0' ? '' : 'checked=\"checked\"'; 

      echo "<form action='' method='POST'>"; 
      echo "<tr><td><h6><input type=\"text\" size=\"5\" name=\"id\" value=\"$id\"></h6></td>"; 
      echo "<td><h6><input type=\"text\" size=\"30\" name=\"BeerName\" value=\"$beername\"></h6></td>"; 
      echo "<td><h6><input type=\"text\" size=\"30\" name=\"BeerType\" value=\"$beertype\"></h6></td>"; 
      echo "<td><h6><textarea size=\"90\" style=\"width:250px;height:150px;\" name=\"BeerDescription\" value=\"\">$beerdescription</textarea></h6></td>"; 
      echo "<td><h6><input type=\"text\" size=\"5\" name=\"Percent\" value=\"$beerpercent\"></h6></td>"; 
      echo "<td><h6><input type=\"checkbox\" name=\"NowPouring\" value=\"true\" $nowpouring></h6></td>"; 
      echo "<td><h6><input type=\"checkbox\" name=\"GlutenReduced\" value=\"true\" $glutenreduced></h6></td>"; 
      echo "<td><h6><input type=\"checkbox\" name=\"BeerToGo\" value=\"true\" $beertogo></h6></td>"; 
      #echo "<td><h6> <a href=\". $_SERVER["PHP_SELF"] .?id=".mysql_result($result,$j,'id')."\" onclick=\"\"></h6></td>"; 
      echo "<td><h6> <button name=\"submit\" type=\"submit\" value=\"$id\">Save</button></h6></td>"; 
      echo "</tr>"; 
      echo "</form>"; 
     } 
    } 



if (isset($_POST['submit'])) { 
    $user = $_POST['submit']; 
    echo "<p style=\"color:#ffffff\">$id</p>"; 
    #$delet_query = mysqli_query($mysqli, "UPDATE NowPouring SET NowPouring = '1' WHERE ID = '4'") or die(mysql_error()); 

    if ($delet_query) { 
     echo '<p style="color:#ffffff">Beer with id '.$id.' is updated. To refresh your page, click ' . ' <a href=' . $_SERVER["PHP_SELF"] . ' > here </a></p>'; 
    } 
} 


?> 
+0

私はすべてのこれらの提案を試してみて、あなたに戻って取得します。..配列に格納することができます。すべての提案に感謝します。 – madscientest

+0

cantは私の元​​のコードを編集できませんが、フォームアクションをwhile行に移動し、Maximiliano Paolettiの提案を試しましたが、同じID番号を取得しています。 – madscientest

答えて

0

私はここを参照してください主な問題は、あなたのコードを持っているwhileループは入力に対して同じ名前を生成していることである...あなたの「<button name=\"submit\" type=\"submit\" value=\"$id\">Save</button>」の

すべてがあります同じ名前なので、常に最後のIDが値になります。

たぶん、あなたは...など

<button name=\"$id_submit\" type=\"submit\" value=\"$id\">Save</button> 

を何かを試してみてくださいまたはあなたが望むなら、あなたは

<button name=\"submit[]\" type=\"submit\" value=\"$id\">Save</button> 
+0

私の問題はこの部分にあると思います。私はまだそれを働かせることができません。 – madscientest

+0

あなたはどちらをしようとしていますか?異なる名前を設定するにはidを使用しますか?ボタン名の配列を作成します。 –

+0

異なる名前を設定するためにidを使用しようとしています。フォームアクションやボタンタグに何かが必要かどうかはわかりません。本当にあなたの助けに感謝します。 – madscientest

0

フォームタグが間違った場所に配置されています。あなたの入力のそれぞれの「名前」は同じなので、基本的にあなたが同じ名前を持つ要素の束を持つフォームを持っているので、あなたは、この結果を見ている

while($row = mysqli_fetch_array($result)){ 
    $id = $row["ID"]; 
    //.... 
    //.... 
    echo "<form action='' method='POST'>"; 
    echo"<tr>"; 
    echo "<td>" . $id . "</td>"; 
    //.... 
    //.... 
    echo "<td><button type='submit' name='submit'>Save</button></td>"; 
    echo"</tr>"; 
    echo "</form>"; 
} 
+0

あなたのコードも間違っています。 –

+0

はい私は答えを投稿した後でフォームの終了タグを置いていないことに気付きました。訂正:-) – Laiman

+0

いいえ、まだ間違っています。 –

0

: それは内にあるべきです。各名前に動的なアスペクトを追加する必要があります。

たとえば、あなたはこのような何かにあなたの出力を更新することができます。各ラインは、現在のIDを追加

echo "<tr><td><h6><input type=\"text\" size=\"5\" name=\"id_$id\" value=\"$id\"></h6></td>"; 

。次に、フォームデータを取得するときに、更新するフィールドに送信したIDを追加できます。

AJAXのアプローチを使用して問題の行だけを提出することができました。ページをリロードして毎回データセットを返す必要はありませんか?

+0

私はAJAXに精通していません。 – madscientest

0

送信ボタンごとに<form>としてください。 while()<form>を追加:

if($result){ 
    while($row = mysqli_fetch_array($result)){ 
    echo "<form action='' method='POST'>"; 
    //... 
    echo "</form>"; 
    } 
} 
+0

これらの変更を加えましたが、どのボタンが押されても同じIDを取得しています。 – madscientest

関連する問題