【问题标题】:Retrieve data from mysql and update them accordingly从 mysql 检索数据并相应地更新它们
【发布时间】:2011-02-17 16:55:02
【问题描述】:

我想从我的 MySQL 数据库中检索数据并将其显示为表格(我不介意任何样式,但首选表格)。然后数据应该显示一个单选按钮或一个普通按钮,更新该特定行并将该行中的单个列更改为活动(状态使活动)。

我已启动它,但我仍然无法添加单选按钮或按钮。然后我想到在表格内的表格中显示信息。当该人选择该单选按钮并按提交时,此表单将具有每个单选按钮。数据应在 MySQL 数据库中更新。

有人可以指导我吗?我有点困惑。我很困惑,因为我必须添加一个表单,并且在该表单中我必须添加一个表格,所有这些东西都应该在一个 php 文件中。

【问题讨论】:

  • <form><table>..</table></form> 有什么问题?另外,我建议使用复选框而不是收音机。 Checkbox 有一个 value 参数,可以用来保存行的 id

标签: php mysql html


【解决方案1】:

在 formpost.php 页面上,您可以执行以下操作来处理从上一页收到的列表数组:

<?
$list = $_POST['list'];

foreach ($list as $key => $list_php) 
{
$query1 = "SELECT * FROM `stu_entry` WHERE `stu_entry`.`Student_No` = '$list_php' AND `stu_entry`.`Out_Time` = '0000-00-00 00:00:00'";
$result1 = mysql_query($query1);
$row1=mysql_fetch_array($result1);


//whatever you want to do

}
?>

我忘了在上一篇文章中告诉你一些事情。在表单页面中,假设您有 100 行和 100 个复选框。手动选中或取消选中所有这些会很讨厌。作为替代方案,您可以在页面末尾附加一个小脚本来为您处理检查/取消检查过程:

<script>
function checkAll(field)
{
for (i = 0; i < field.length; i++)
    field[i].checked = true ;
}

function uncheckAll(field)
{
for (i = 0; i < field.length; i++)
    field[i].checked = false ;
}

function countChecks(form){
var t=0;
var c=form['list[]'];
for(var i=0;i<c.length;i++){
c[i].checked?t++:null;
}
return t;
}

</script>

<input type="button" name="CheckAll" value="Check All"
onClick="checkAll(document.formpost['list[]'])">
<input type="button" name="UnCheckAll" value="Uncheck All"
onClick="uncheckAll(document.formpost['list[]'])">

<i>with selected: </i>

<select name="submit_mult" id="submit_mult">
    <option value="todo1">Action 1 </option>
    <option value="todo2">Action 2 </option>
    </select>
<input type="button" name="go" value="Go" onClick='if(countChecks(this.form)>0) {if(confirm("are you sure you want to \""+document.getElementById("submit_mult").options[document.getElementById("submit_mult").selectedIndex].text+" "+countChecks(this.form)+" items selected"+"\"")) {document.getElementById("referenceToSomeHiddenElement").value=document.getElementById("submit_mult").options[document.getElementById("submit_mult").selectedIndex].value;document.getElementById("formpost").submit();}} else alert("you have not selected any item!!")' >

如果您需要更多帮助,请告诉我。

【讨论】:

    【解决方案2】:

    我首先指定一个 MySQL 命令,该命令返回给我一个数组。我使用 while 语句对数组中的每个项目做一些事情。该数组由字段名称和字段内容填充。

    $mysql = mysql_query("SELECT * FROM table");
    while ($array = mysql_fetch_array($mysql))
    {
      $output .= '<form>Row: ' . $array['fieldname'] . ' <input type="button" value="Update" /></form>';
    }
    

    这会从表中提取所有行,并为每个结果添加一个表单到变量 $output。我不确定你想如何更新你的数据库,所以你必须调查一下。您可以使用 GET 和 POST 方法。

    【讨论】:

      【解决方案3】:

      继续尝试这样的事情。告诉我这是否有效:

      <p><b>your page name</b></p>
      <form name="formpost" id="formpost" action="formpost.php" method="POST">
      <table border="2" cellpadding="5" cellspacing="1" style="border-collapse: collapse" bordercolor="#999999" width="800">
        <tr>
          <td><b>Sno.</b></td>
          <td><b>Field name1</b></td>
          <td><b>Field name2</b></td>
          <td><b>Field name3</b></td>
          <td><b>Field name4</b></td>
          <td><b>Field name5</b></td>
          <td><b>Field name6</b></td>
          <td><b>Field name7</b></td>
        </tr>
      
        <?
        $sorting="";
        if($orderby!="" && $direction!="")  $sorting=" ORDER BY $orderby $direction";    
        $query = "SELECT * FROM table WHERE something = 'something' $sorting";  
        $result = mysql_query($query);
        ?>
        <tr>
        <?
        $i=0;
        while ($row = mysql_fetch_array($result)) 
        {
        $i++;
      
        ?>
        <td><input type="checkbox" name="list[<?echo $i?>]" id="list[]" value="<?echo $row['some_primary_field_id']?>"><?echo $i?></td>
        <td><?echo $row['Field1']?></td>
        <td><?echo $row['Field2']?></td>
        <td><?echo $row['Field3']?></td>    
        <td><?echo $row['Field4']?></td>
        <td><?echo $row['Field5']?></td>
        <td><?echo $row['Field6']?></td>
        <td><p align="center">
      
        <?  
        echo "<input title='button' name='change this row' value='Some Button' type='button' onClick=\"if(confirm('Press OK to change status to confirm')) {document.getElementById('someid').value='".$row['Field1']."';document.getElementById('formpost').submit();}\"/>";
        ?>
        </td>
        </tr>
      <input type='hidden' name="hiddenlist[<?echo $i?>]" id="hiddenlist[]" value="<?echo "some boundry condition ".$row['Field2']?>">
      
      <?
      } //end of while
      ?>
      </table>
      </form>
      

      【讨论】:

      • 您可以在 formpost.php 中的任何需要的地方编写 addlashes() 来清理数据。这将处理 SQL 注入。
      • sitepoint.com/forums/showthread.php?t=337881。我们可以使用 mysql_real_escape_string() 来添加对以 0x5c 结尾的字符的支持。
      • @Col-Shrapnel 你对防止 SQL 注入有什么建议。
      猜你喜欢
      • 2015-12-13
      • 1970-01-01
      • 2023-03-15
      • 2020-08-02
      • 2012-12-01
      • 2021-01-27
      • 1970-01-01
      • 1970-01-01
      • 2020-04-14
      相关资源
      最近更新 更多