2

送信後、データベースが更新されません。エラーすら出ません。ここでは、データベースから値を取得して HTML テーブル形式で表示しようとしています。ユーザーはここから値を更新することもできます。したがって、ここで値を変更して送信すると、データベースが更新されません。

  <?php

    print"<center><h3><a href=\"index.html\">Go Back</a></h3><br>"; 


    // Connect to server and select databse.
    $con = mysql_connect('localhost','tpsadmin','tps')or die("Cannot connect to DB");
    mysql_select_db('traffic',$con)or die("Cannot select DB");


    $query = "SELECT * FROM emergency";
    $result = mysql_query($query) or die(mysql_error()); 

    // Count table rows
    $count=mysql_num_rows($result);

    //UPDATE  `emergency` SET  `t_sigid` =  '2',`e_priority` =  '3' WHERE  `emergency`.`e_jid` =70;

    if( isset($_POST['Submit'])){
        for($i=0;$i<$count;$i++){
            $sql1 = "UPDATE emergency SET 
                e_latitude='{$_POST['e_latitude'][$i]}', 
                e_longitude='{$_POST['e_longitude'][$i]}', 
                t_sigid='{$_POST['t_sigid'][$i]}', 
                e_priority='{$_POST['e_priority'][$i]}'   
                WHERE e_jid='$id[$i]'"; 
            $result1 = mysql_query($sql1) or die(mysql_error());
        }
    }


    if($result1){
        header("location: em_disp.php");
    }
    mysql_close();
    ?>



    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    <script language="JavaScript1.1" type="text/javascript">
    <!--
    function mm_jumpmenu(targ,selObj,restore){ //v3.0
      eval(targ+".location='"+selObj.options[selObj.selectedIndex].value+"'");
      if (restore) selObj.selectedIndex=0;
    }
    //-->
    </script>
    <title>Emergency Table - Update</title>
    </head>

    <body>


    <table width="500" border="0" cellspacing="1" cellpadding="0">
    <form name="form1" method="post" action="">
    <tr>
    <td>
    <table border="5" cellpadding="5" cellspacing="0" style="border-collapse: collapse" bordercolor="#808080" width="50&#37;" text-align="center" id="AutoNumber2" bgcolor="#C0C0C0">
    <tr>
    <td align="center">e_jid</td> 
    <td align="center">amb_id</td> 
    <td align="center">e_latitude</td> 
    <td align="center">e_longitude</td> 
    <td align="center">t_sigid</td> 
    <td align="center">e_priority</td>
    </tr>
    <?php
    while($rows=mysql_fetch_array($result)){
    ?>
    <tr>
    <td align="left"><?php $id[]=$rows['e_jid']; ?><?php echo $rows['e_jid']; ?></td>
    <td align="center"><?php echo $rows['amb_id']; ?></td>
    <td align="center"><input name="e_latitude[]" type="text" id="e_latitude" value="<?php echo $rows['e_latitude']; ?>" size="10"></td>
    <td align="center"><input name="e_longitude[]" type="text" id="e_longitude" value="<?php echo $rows['e_longitude']; ?>" size="10"></td>
    <td align="center"><input name="t_sigid[]" type="text" id="t_sigid" value="<?php echo $rows['t_sigid']; ?>" size="10"></td>
    <td align="center"><input name="e_priority[]" type="text" id="e_priority" value="<?php echo $rows['e_priority']; ?>" size="10" /></td>
    </tr>
    <?php
    }
    ?>
    <tr>
    <td colspan="6" align="center"><input type="submit" name="Submit" value="Submit"></td>
    </tr>
    </table>
    </td>
    </tr>
    </form>
    </table>



    </body>
    </html>

誰か助けてください。ありがとう !

4

3 に答える 3

2

の中括弧を忘れています$id[$i]

$_POSTそれと、クエリに値を直接入れないでください。代わりに MySQLi または PDO を使用してください。

ところで、あなたのコードにはもっと問題があります:

  1. 1行目でデータを出力するため、他の場所では機能しheaderない可能性があります(サーバー設定に依存しているようです)
  2. これ<?php $id[]=$rows['e_jid']; ?>は、PHP 通知を生成すること以外には何もしません。
于 2013-04-26T09:25:10.540 に答える
0

とは整数t_sigidのようです。したがって、以下のコードはより安全です。e_prioritye_jid

for($i=0;$i<$count;$i++){
    $t_sigid=intval($_POST['t_sigid'][$i]);
    $e_priority=intval($_POST['e_priority'][$i]);
    $e_jid=intval($id[$i]);
    $sql1 = "UPDATE emergency SET 
        e_latitude='{$_POST['e_latitude'][$i]}', 
        e_longitude='{$_POST['e_longitude'][$i]}', 
        t_sigid='$t_sigid', 
        e_priority='$e_priority'   
        WHERE e_jid='$e_jid'"; 
    $result1 = mysql_query($sql1) or die(mysql_error());
}

編集1:

変化する

  <td align="left"><?php $id[]=$rows['e_jid']; ?><?php echo $rows['e_jid']; ?></td>

   <td align="left"><input name="id[]" type="text" id="id" value="<?php echo $rows['e_jid']; ?>" size="10"></td>

$e_jid=intval($id[$i]);また、上記の変更を$e_jid=intval($_POST['id'][$i]);

于 2013-04-26T10:59:58.783 に答える