如何在点击php中的编辑按钮时获取特定的行值?

时间:2015-02-02 05:20:57

标签: php html

以下代码在tag_show.php中。我必须显示数据库中的所有数据,我正在尝试从php代码编辑数据库,所以我在html表的所有行的末尾形成编辑按钮。

echo"<br><br><br><br>
<table border='6' style= 'background-color: #FFFFE0; color: #761a9b; margin: 2 auto;'>
  <thead>
    <tr>

      <th>tag_title</th>
      <th>description</th>
      <th>show_in_welcome</th>
      <th>status</th>

    </tr>
  </thread>
  <tbody>";


      while($row = mysqli_fetch_assoc($get_detail))
        {
            $_SESSION['tag_title'] =$row['tag_title'];
            $_SESSION['description'] =$row['description'];
            $_SESSION['show_in_welcome'] =$row['show_in_welcome'];
            $_SESSION['status']=$row['status'];

          echo
                "<tr>
                    <td>{$_SESSION['tag_title']}</td>
                    <td>{$_SESSION['description']}</td>
                    <td>{$_SESSION['show_in_welcome']}</td>
                    <td>{$row['status']}</td>
                    <td><form action='edit.php' method='POST'><input type='hidden' name='tag_title' value='".$row["tag_title"]."'/><input type='submit' name='submit-btn' value='edit' /></form></td>

  </tr>\n";        
      }

并且edit.php是

<?php

session_start();


echo"<form action='tag_show.php' method='post'>

<br><br><br>

 Tag Title<br><input name='tag_title' type='text' value='{$_SESSION['tag_title']}'><br><br>

Description <br><input name='description' type='text' value='{$_SESSION['description']}'><br><br>

Show in welcome<br><input name='show_in_welcome' type='text' value='{$_SESSION['show_in_welcome']}'><br><br>

Status<br><input name='status' type='text' value='{$_SESSION['status']}'> <br><br>

 <input name='submit1' type='submit'  value='Update'>

 </form>";

 ?>

但$ _SESSION返回HTML表格中的最后一行值。但是当我点击编辑按钮时,我想要接受的行值。

4 个答案:

答案 0 :(得分:0)

看起来您永远不会使用从表单收到的信息更新会话数据。你需要在代码中的某个地方使用这样的东西。

$_SESSION['tag_title'] = $_POST['tag_title'];
$_SESSION['description'] = $_POST['description'];
$_SESSION['show_in_welcome'] = $_POST['show_in_welcome'];
$_SESSION['status']= $_POST['status'];

需要考虑的一些事项。

  • 确保用户提交表单后,您的数据库信息不会覆盖值。
  • 在使用之前始终清理/验证用户输入(与上述代码不同,因为它只是一个例子)。

答案 1 :(得分:0)

这里的会议毫无意义。每次循环运行前一个值被替换,因此您获得最后一个值。而不是你可以使用查询字符串的概念。而不是打印表格打印锚标记

 <a href='file.php?id='.$row["tag_title"]>Edit</a>

成为您的tag_title唯一。

  if(isset($_GET['id))
   {
     $id = $_['id']
     // Your code based on id
   }

现在使用id运行mysql查询并选择所需数据并以表格显示

答案 2 :(得分:0)

当然,您的代码将返回最后一行,因为会话数组会在每次迭代后覆盖前一行的值。 使会话数组像$ _SESSION [$ id] [&#34; tag_title&#34;]一样多维,然后在你的edit.php中使用id值引用会话数组。

$_SESSION[$id] = array('tag_title' => $row['tag_title'], 'description' => $row['description'], 'show_in_welcome' => $row['show_in_welcome'], 'status' => $row['status'])

然后在每次迭代后递增$ id。

答案 3 :(得分:0)

您不需要会话变量来将值传递给edit.php文件。

希望有一个唯一的密钥来识别数据库中的记录。我认为它是recordid。将此值作为查询字符串传递给edit.php

<强> tag_show.php

$output = '';
while($row = mysqli_fetch_assoc($get_detail)){
    $output '<tr>
    <td>'.$row['tag_title'].'</td>
    <td>'.$row['description'].'</td>
    <td>'.$row['show_in_welcome'].'</td>
    <td>'.$row['status'].'</td>
    <td><a href="edit.php?editid='.$row['recordid'].'">edit</a></td>
    </tr>';
}

edit.php 中,您可以从查询字符串中获取recordid并从数据库中检索数据以填充表单

<?php

if($_GET['editid']!=''){
    //get record corresponding to the 'editid' from database
    //I assume the record is for and store in a variable $editdata
?>
<form action="tag_show.php" method="post">
<br><br><br>
Tag Title<br><input name="tag_title" type="text" value="<?=$editdata['tag_title']?>"><br><br>
Description <br><input name="description" type="text" value="<?=$editdata['description']?>"><br><br>
Show in welcome<br><input name="show_in_welcome" type="text" value="<?=$editdata['show_in_welcome']?>"><br><br>
Status<br><input name="status" type="text" value="<?=$editdata['status']?>"> <br><br>
<input name="submit1" type="submit"  value="Update">
</form>
<?php
}
?>