2017-04-09 10 views
-2

投稿されたデータを使用してデータベーステーブルを編集する必要があります。phpページのsqlデータを編集する

これは形式です:

mysql_query("set names 'utf8'"); 

$query = "SELECT * FROM sec1octa"; 
$result = mysql_query($query); 
?> 
<div align="center"> 
    <form method="get" action="edit_data.php"> 
     <table width="104" border="1" class="center1"> 
      <tr> 
       <th width="94">first</th> 
       <th width="94">second</th> 
       <th width="94">status</th> 
      </tr> 
      <tr> 
       <?php 
       if (mysql_num_rows($result) > 0) { 
        while ($row = mysql_fetch_array($result)) { 
         ?> 
         <tr> 
          <td><input type="text" name="id" value="<?php echo $row ['stu_no']; ?> " size=10></td> 
          <td><input type="text" name="name" value="<?php echo $row ['stu_name']; ?> " size=10></td> 
          <td><?php 
           echo '<select name="status">'; { 
            echo '<option value="open">'.$row['stu_status'].'</option>'; 
            echo '<option value="close">'.prevent.'</option>'; 
           } 
           echo '</select>'; 
          ?></td> 
         </tr> 
         <?php 
        } 
       } 
       ?> 
      </tr> 
     </table> 
     <input type="submit" name="submit" value="done" /> 
    </form> 

問題がedit_data.phpページです。 私はUPDATEできません。

私はこのコードを使用しますが、動作しません。

require_once('../Connections/config.php'); 
$id= $_GET['id']; 
$status= $_GET['status']; 

$query= mysql_query("UPDATE `goh`.`sec1octa` SET `stu_status` = '$status' 
WHERE stu_no='".$id."'") or die (mysql_error()); 
if($query){echo $status ."done ";} 
+1

あなたはタイプミスを持っています。あなたが持っているエラーを共有してください。 – contremaitre

+0

エラーは表示されません、私のデータベースの2列、最後の列(42)と列番号(40)でUPDATEを行い、別の列への更新を行うと番号42に更新しようとします。 –

+0

@mickmackusa、どのように私はそれをきれいにすることができますか? 、また私はedit_data.phpにファイルされた名前を使うことができますか?それは有用ではない? –

答えて

0

あなたが配列として入力/選択名を設定していないので、あなただけのedit_data.php$_GETの最後の値を取得している理由があります。

<input type="text" name="id" value="some_stu_no"> 

は、何度も何度も起きており、新しいものはすべて上書きされます。

代わりに、あなたが使用する必要があります。これは、あなたは、単一のフォームの送信で複数のIDを渡すことができます

<input type="text" name="id[]" value="some_stu_no"> 

フォーム:代わりに$クエリの$のqeury:

<form method="POST" action="edit_data.php"> 
.... 
echo "<tr>"; 
    echo "<th>id</th>"; 
    echo "<th>name</th>"; 
    echo "<th>status</th>"; 
echo "</tr>"; 
if(mysql_num_rows($result)>0){ 
    while($row=mysql_fetch_array($result)){ 
     echo "<tr>"; 
      echo "<td><input type=\"text\" name=\"id[]\" value=\"{$row['stu_no']}\" size=\"10\"></td>"; 
      echo "<td>{$row['stu_name']}</td>"; 
      echo "<td>"; 
       echo "<select name=\"status[]\">"; // I don't like your option set up here, but I don't fully understand it either. 
        echo "<option value=\"open\">{$row['stu_status']}</option>"; 
        echo "<option value=\"close\">.prevent.</option>"; 
       echo "</select>"; 
      echo "</td>"; 
     echo "</tr>"; 
    } 
} 
.... 
<input type="submit" value="Submit All"> 
</form> 

edit_data.php

// create a mysqli connection called $db 

if(isset($_POST['id'])){ 
    $tally=0; 

    // build all queries for the batch 
    foreach($_POST['id'] as $index=>$id){ 
     $queries[]="UPDATE `goh`.`sec1octa` SET `stu_status`='".mysqli_real_escape_string($db,$_POST['status'][$index])."' WHERE `stu_no`='".mysqli_real_escape_string($db,$id)."'"; 
    } 

    // run all queries 
    if(mysqli_multi_query($db,implode(';',$queries)){ 
     do{ 
      $tally+=mysqli_affected_rows($db); 
     } while(mysqli_more_results($db) && mysqli_next_result($db)); 
    } 

    // assess the outcome 
    if($error_mess=mysqli_error($db)){ 
     echo "Syntax Error: $error_mess"; 
    }else{ 
     echo "$tally row",($tally!=1?"s":"")," updated"; 
    } 
    mysqli_close($con); 
} 
+0

ありがとう、私はPHPでフォームを作ろうとしますが、できません。また、あなたが書くコードを使用しますが、それを修正してください、あなたを気にするなら、ごめんなさい。 –

+0

今、それはありがとう、ありがとう、私はすべてにボタンを送信することはできますか? 1つ1つではなく、もっと簡単に思えるのですが、どのオプションを選択すればいいですか?それは悪いので –

+0

しかし、私はすべてのフィールドに1つの更新ボタンについての問題を解決するために最初に尋ね、あなたは1つずつの更新を解決しますので、ありがとう、それは私が最初に尋ねるものではありません。しかし、あなたの努力に感謝し、旗を掲げました。 –

関連する問題