0

私のデータベースには20以上の列があります。入力フォームを介して19列を追加し、dbに正常に保存しました。メインページの db からいくつかの行をフェッチします。私のメインページには、もう1列あります。それがステータス列で、コンボボックスタイプです。ステータス列をクリックすると、4 つの値が表示されます。値の1つを選択したいのですが、保存ボタンをクリックすると、同じIDでデータベースに保存される必要があります。どうやってするか?私は試しましたが、mysql dbで更新されていません...

メインページ コンボ ボックスのコーディング:

echo "\t<td><form action=statusdb.php method=post>
<select name=update><option value=empty></option><option value=Confirm>Confirm</option><option value=Processing>Processing</option><option value=Pending>Pending</option><option value=Cancelled>Cancelled</option></select>
<input name=\"update[".$a_row['slno']."]\"; type=submit id=id value=Save></form>
</td>\n";

ステータス データベース コーディング:

if (isset($_GET['id']))
{ 
$id = mysql_real_escape_string($_GET['id']);
$sql = mysql_query("UPDATE guestdetails SET status = '" . $_POST['update'] ."'");
if(!$sql)
{
    die("Error" .mysql_error());
}
}

それを行う方法を教えてください。

4

3 に答える 3

1

IF では、$_GET ではなく $_POST にする必要があります。また、次のように WHERE 句を追加する必要があります。

if (isset($_POST['id']))
{ 
  $id = mysql_real_escape_string($_POST['id']);
  $update= mysql_real_escape_string($_POST['update']);

  $sql = mysql_query("UPDATE guestdetails SET status = '$update' WHERE id='$id'");
if(!$sql)
{
    die("Error" .mysql_error());
}
}

また、 name を 2 回使用updateし、1 回で 1 回、<select>out<input>から取り出して、行の名前と値を<input>含む非表示フィールドにします。idslno

echo "\t<td>
  <form action=statusdb.php method=post>
    <select name=update>
      <option value=empty></option>
      <option value=Confirm>Confirm</option>
      <option value=Processing>Processing</option>
      <option value=Pending>Pending</option>
      <option value=Cancelled>Cancelled</option>
    </select>
    <input name='id' type='hidden' value='".$a_row['slno']."';>
    <input type='submit'>Save</button>
  </form>
</td>\n";
于 2013-10-05T08:24:48.183 に答える
0

以下のようにしてみてください:

<form action="statusdb.php" method="post">
<?php
while($a_row = mysql_fetch_array($sql)) {
    $sl_no = $a_row['slno'];
    echo '<select name="update['.$sl_no.']"><option value=empty></option><option value=Confirm>Confirm</option><option value=Processing>Processing</option><option value=Pending>Pending</option><option value=Cancelled>Cancelled</option></select> '; 
    echo '<input type="hidden" name="sl_no[]" value="'.$sl_no.'" />'; 
} 
?>
<input name="update_rows" type="submit" value="Save">
</form>

<?php
if(isset($_POST['update_rows'])) {
    $nums = $_POST['sl_no'];
    $update = $_POST['update'];
    foreach($nums as $sl) {
        $sl_no = $sl;
        $val = $update[$sl_no];
        $sql_update = mysql_query("UPDATE guestdetails SET status = '$val' WHERE sl_no='$sl_no'");
    }
}
?>
于 2013-10-05T07:58:26.417 に答える
-1

あなたは に何も提出していませidstatus db

于 2013-10-05T07:49:33.693 に答える