1

こんばんは、mysqlの複数の行を編集/削除できる単一のphpページを作成しようとしています。

<html>  
<head>  
<title>Update/Delete Test Page</title>  
</head>  
<body> 

<?  
include 'connect.php';

if(isset($_POST['edit'])) // from button name="delete"
{
    $title = $_POST['title'];
    $description = $_POST['description'];
    if(!empty($_POST['checkbox'])) {
    foreach($_POST['checkbox'] as $check) {
        $ed = $check;
        $sql = "UPDATE events SET title = '$title', description ='$description' WHERE id = $ed";  
    }
    }

if (!mysql_query($sql))
{
die('Error: ' . mysql_error());
}
echo "1 record added";

mysql_close($con);
}
    ?>

<?php
include ("connect.php");

if(isset($_POST['delete'])) // from button name="delete"
{
    if(!empty($_POST['checkbox'])) {
    foreach($_POST['checkbox'] as $check) {
        $del = $check;

        $sql = "DELETE from events where id = $del";
        $result = $mysqli->query($sql) or die(mysqli_error($mysqli));
}
}
?>  

<?php
include 'connect.php';
$query = 'SELECT id, title, description FROM events WHERE evdate = "1/9/2013" order by title asc';
$result2 = $mysqli->query($query) or die(mysqli_error($mysqli));

echo '<br><br><br>';
echo '<b><div align="center"> "1/9/2013"</div></b>';

if ($result2) {

  // create a new form and then put the results
  // into a table.
  echo "<form method='post' action=".$_SERVER['PHP_SELF'].">"; 
  echo "<table cellspacing='0' cellpadding='3'>
    <th align='left'>Interval orar</th>
    <th align='left'>Eveniment</th>
    <th align='left'></th>
    ";

  while ($row = $result2->fetch_object()) {

    $title  = $row->title;
    $description = $row->description;
    $id     = $row->id;

    //put each record into a new table row with a checkbox
echo "
    <tr>
        <td align='left'><input type='text' name='title' size='20'  value='$title'></td>
        <td align='left'><input type='text' name='description' size='50'  value='$description'></td>
        <td align='left'><input type='checkbox' name='checkbox[]' id='checkbox[]'  value=$id />
     </tr>

     "; 
}

// when the loop is complete, close off the list.
echo "</table>
<p>
<input id='edit' type='submit' class='button' name='edit' value='Edit'/> 
<input id='delete' type='submit' class='button' name='delete' value='Delete'/>
</p>
</form>";
}   
?>
</body>  
</html>

Connect.phpは次のようになります。

<?php
$db_host = "localhost";
$db_username = "calendar";
$db_pass = "calendar";
$db_name = "ecalendar";
$con = mysql_connect ("$db_host", "$db_username", "$db_pass") or die ("could not connect to     mysql database");
mysql_select_db("$db_name") or die ("no database");

$mysqli = new MySQLi($db_host, $db_username, $db_pass, $db_name) or die(mysqli_error());
?>

削除は正常に機能しますが、編集は何もしません...

テーブルは次のようになります。

Start/End Time         Event     (Checkbox is here)
08:00-10:00            test1               X
10:00-12:00            test2               X

test2をtest2xxに編集しようとすると、Firebug POSTでこれを取得します:

title=08%3A00-10%3A00&description=test1&title=10%3A00-12%3A00&description=test2xx&checkbox%5B%5D=53&edit=Edit

私が削除した場合、私はこれを取得します(そしてそれは機能します)

title=08%3A00-10%3A00&description=test1&title=10%3A00-12%3A00&description=test2&checkbox%5B%5D=53&delete=Delete

編集は機能しますが、最後の行(test2)に対してのみ、上の行(test1)を編集しようとすると、最後の行(test2)の値で更新されます。

4

4 に答える 4

3

あなたがする必要del_idはないと思いますid

$sql = "UPDATE events SET title = '$title', description ='$description' WHERE id = $del_id ";  
于 2013-01-07T17:12:55.793 に答える
0

1-value=$idあなたのchekbobであなたの価値を見てください

に変更しますvalue= '$id'

2-また、削除クエリはmysqliを使用しますが、更新クエリはmysqlを使用しますか?

3-uはconnect.phpを3回含める必要はありません

4-変数についての以前の回答も$del_id

5-uに終了タグがありませんtd

6-uはクロージングがありません}

7-これを試してください

<html>  
 <head>  
 <title>Update/Delete Test Page</title>  
 </head>  
 <body> 

 <?php  
 include 'connect.php';

 if(isset($_POST['edit'])) // from button name="edit"
 {
 $checkbox = $_POST['checkbox']; //from name="checkbox[]"
 $countCheck = count($_POST['checkbox']);

 for($i=0;$i<$countCheck;$i++)
 {
    $del_id  = $checkbox[$i];

  $sql3 = "UPDATE events SET title = '$title', description ='$description' WHERE id = '$del_id' ";  
  $result3 = $mysqli->query($sql3) or die(mysqli_error($mysqli));
 if (!$result3)
 {
 die(mysqli_error($mysqli)) ;
 }
 echo "1 record added";

 }
 }



  if(isset($_POST['delete'])) // from button name="delete"
 {
 $checkbox = $_POST['checkbox']; //from name="checkbox[]"
 $countCheck = count($_POST['checkbox']);

 for($i=0;$i<$countCheck;$i++)
 {
    $del_id  = $checkbox[$i];

    $sql = "DELETE from events where id = '$del_id' ";
    $result = $mysqli->query($sql) or die(mysqli_error($mysqli));

  }
  }


  $query = 'SELECT id, title, description FROM events WHERE evdate = "1/9/2013" order by title asc';
  $result2 = $mysqli->query($query) or die(mysqli_error($mysqli));

  echo '<br><br><br>';
  echo '<b><div align="center"> "1/9/2013"</div></b>';

 if ($result2) {

 // create a new form and then put the results
 // into a table.
 echo "<form method='post' action=".$_SERVER['PHP_SELF'].">"; 
 echo "<table cellspacing='0' cellpadding='3'>
 <th align='left'>Interval orar</th>
 <th align='left'>Eveniment</th>
 <th align='left'></th>
 ";

 while ($row = $result2->fetch_object()) {

 $title  = $row->title;
 $description = $row->description;
 $id     = $row->id;

  //put each record into a new table row with a checkbox
 echo "
 <tr>
    <td align='left'><input type='text' name='title' size='20'  value='$title'></td>
    <td align='left'><input type='text' name='description' size='50'    value='$description'></td>
    <td align='left'><input type='checkbox' name='checkbox[]' id='checkbox[]'  value='$id' /></td>
  </tr>

 "; 
 }

 // when the loop is complete, close off the list.
 echo "</table>
 <p>
 <input id='edit' type='submit' class='button' name='edit' value='Edit'/> 
  <input id='delete' type='submit' class='button' name='delete' value='Delete'/>
  </p>
 </form>";
 }   
 ?>
 </body>  
 </html>
于 2013-01-07T17:40:41.010 に答える
0

id = $ del_id for loopの下で、SQLステートメントとそれにバインドされている変数を再確認します。

于 2013-01-07T18:31:22.137 に答える
-1

上記のコードをあきらめて、この例を

http://bohemiawebsites.com/PHP-MYSQL-Update-Multiple-Rows.html

誰かがそれを必要とするならば、すべてはうまくいきます...

于 2013-01-09T11:29:58.923 に答える