如何根据行ID

时间:2018-01-16 05:56:27

标签: php html mysql

网页截图显示时间值是从数据库列设置时间获取的,我想将自己的值插入设置时间列并更新该单行,但点击更新后它不会更新。

如果我用删除查询替换更新查询,如下所示,它可以工作并删除该特定行。我的问题是如何使用相同的方法根据id更新特定的列值。

<?php
    $id =(isset($_GET['id']) ? $_GET['id'] : null);
    if($id!=null) {
    $query="delete from activity where id=$id";
    $result=mysql_query($query);
    }
?>

网络

web

数据库

database

timer.php

<?php include 'header.php'; ?>
<div class="main" >
    <table width="900px" cellpadding="5" cellspacing="5">
        <tr>
            <td style="width:10px"></td>
            <td style="background:#F2F2F2; height:400px">
                <?php
                $settime =(isset($_POST['settime']) ? $_POST['settime'] : null);
                    $id =(isset($_GET['id']) ? $_GET['id'] : null);
                    if($id!=null) {     
                        //$settime =(isset($_POST['settime']) ? $_POST['settime'] : null);
                        $query="update feedtime set settime='$settime' where id=$id";       
                        $result=mysql_query($query);    
                    }
                ?>
                <table width="100%" class="tableStyle">
                    <tr style="font-weight:bold">
                        <td>NO.</td>
                        <td>User</td>
                        <td>Time</td>
                        <td>Time Left</td>
                        <td></td>
                    </tr>
                    <?php 
                        $i=0;
                        $query="select * from feedtime";
                        $result=mysql_query($query);    
                        while ($row = mysql_fetch_array($result)){
                            $i+=1;
                            echo '
                    <tr style="height:25px">
                        <td>'.$i.'</td>
                        <td>'.$row['user'].'</td>
                        <td><input id="timer" type="text" name="settime" style="width:200px;" value='. $row['settime'].' /></td>
                        <td>'. $row['timeleft'] .'</td>';echo '
                        <td align="center"><input type="button" value="Update" style="font-size:10px;width:80px;height:25px;padding:0;margin:0" onclick="location.href=\'timer.php?id='.$row['id'].'\' " /></td>
                   </tr>';
                    }
                    if($i==0)echo '
                    <tr style="height:25px">
                        <td colspan="6">Record not found</td>
                    </tr>'; ?>
                </table><br>
                <?php echo mysql_error(); ?>
            </td>
        </tr>       
    </table>    
</div>
<?php include 'footer.php'; ?>

1 个答案:

答案 0 :(得分:0)

忽略一秒钟的实施细节(如使用MySQL扩展程序),您的主要问题似乎是提交(POST)一对id / settime个值。

我只想每行制作一个表格。这样的事情(非常简化)

<?php while($row = fetch_some_data()) : ?>
<tr>
  <td>
    <input form="form<?= $row['id'] ?>" type="text" name="settime" value="<?= $row['settime'] ?>" />
  <td>
  <td>
    <form id="form<?= $row['id'] ?>" method="post" action="timer.php">
      <button type="submit" name="id" value="<?= $row['id'] ?>">UPDATE</button>
    </form>
  </td>
</tr>
<?php endwhile ?>

请注意<input>上的form attributeid上的<form>属性相同。这使得您可以将输入绑定到该表单而不将其作为后代元素,从而允许您包含所有必需的数据,而无需对HTML进行混淆以获取表单来包装表格行。

这样,按任意“UPDATE”按钮将提交POST请求,其中包含

等数据
id=1&settime=12%3A08%3A00
您可以通过$_POST['id']$_POST['settime']在脚本中检索

例如(并使用MySQLi)

if (isset($_POST['id'], $_POST['settime'])) {
    $stmt = $conn->prepare('UPDATE `feedtime` SET `settime` = ? where `id` = ?');
    $stmt->bind_param('si', $_POST['settime'], $_POST['id']);
    $stmt->execute();
}