2017-04-09 66 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

你有一個錯字:$ qeury而不是$查詢。並分享你的錯誤。 – contremaitre

+0

沒有錯誤出現,它只是在我的數據庫的2列,最後一列(編號42)和列編號(40)更新,當我嘗試更新到另一列也更新到第42號 –

+0

@ mickmackusa,我該如何清潔它? ,我怎樣才能使用edit_data.php中的名字?或者它沒有用? –

回答

0

的原因,你只能在你的edit_data.php$_GET獲得最後的值是因爲你沒有設置輸入/選擇的名稱作爲數組。

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

發生了一遍又一遍,每一個新的覆蓋以前。

相反,你應該使用:

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

這將允許您通過多個ID的單一形式提交。

您的形式:

<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的形式,但我不能,也我使用你寫的代碼,但我發現語法錯誤,可以' t糾正它,如果打擾你,我很抱歉。 –

+0

現在它的工作謝謝,但我可以提交按鈕給所有?不是一個接一個,我覺得更容易,選擇任何想法​​怎麼樣?因爲它是不好的 –

+0

,但我首先要求解決有關一個更新按鈕到所有字段的問題,並且您逐個解決更新問題,所以謝謝您,但這不是我首先要問的問題,很明顯。但感謝你的努力並加以標記。 –