1

<options>我正在尝试从 while 循环中实现多个更新查询。我正在使用此功能为图像分配位置 ID,以便我可以将它们放置在网站的各个位置。我让它适用于单个图像,但这意味着我必须手动更新每个图像。

在我目前的情况下,我在 while 循环中运行表单。然后提交按钮将数据发布到流程文件并保存。这样可行。但仅适用于每个图像。

我希望能够使用单个提交按钮更新所有图像位置。

在我当前的代码中,我认为问题在于我在 while 循环中运行表单。如果我是对的,那么在单个查询中使用来自多个表单的数据是不可能的。现在我正在写这个寻求帮助的请求,我注意到它更像是一个业务逻辑错误——我正试图绕过它来让它工作。

让我们来看看情况/代码:


它目前的工作方式如下:

选项 > 按钮

选项 > 按钮

每个更新按钮都指向带有文章 ID 的文件“photoPositions.php”并执行插入查询。

我想要这种情况:

选项

选项

更新按钮

结果:单击即可更新所有图像。

图片


photoPositions.php 上的 Insertquery 如下所示:

$insertQuery = ("UPDATE images SET posId = '".$_POST['posid']."' WHERE id = '".$_POST['imgid']."'");
    mysql_query($insertQuery) or die(mysql_error());

(我知道mysql_已弃用,我稍后会尝试处理)

我当前的编辑文章代码如下所示:

<?php 
echo 'Images:<br>';
echo '<table width="100%" cellspacing="3">'; 
$get_photo = "SELECT * FROM images WHERE artId = ".$_GET['id']." ORDER BY posId ASC";
$result = mysql_query($get_photo) or die(mysql_error());    
    while($row = mysql_fetch_array($result)){
        echo '<td align="left">
        <a href="../photos/'.$row['name'].'" target="_blank">
        <img src="../photos/'.$row['name'].'" width=200>
        </a>';
?>
        <form name="imagePosition" method="post" action="photoPositions.php?id=<?php echo $_GET['id'];?>">
        <input type="hidden" name="imgid" id="imgid" value="<?php echo $row['id'];?>">
        <select name="posid" id="posid">
<?php 
        echo '<option value="1"';
            if($row['posId'] == 1)
            {
                echo ' selected';
            }
        echo '>Article</option>';

        echo '<option value="2"';
            if($row['posId'] == 2)
            {
                echo ' selected';
            }
        echo '>Sidebar</option>';

        echo '<option value="4"';
            if($row['posId'] == 4)
            {
                echo ' selected';
            }
        echo '>Offline</option>';
?>
        </select>
        <input type="submit" name="POSITION CHANGE" value="POSITION CHANGE">
        </form>
<?php
    }
echo '</table>' . "\r\n"; 
?>

图像位置是具有另一种形式的较大编辑屏幕的一部分。我正在尝试将照片位置更新集成到整个编辑文章的 1 个更新过程中 - 而不是手动执行每个图像..

我是否必须将所有 imgid 数据的 posid 数据输出到数组中并将该数据处理到查询中?当然,我假设我也必须在一段时间内修复表格。

4

1 回答 1

0

我会这样做的方法是将 更改为以为键<select name="posid">的数组$row['id']<select name="posid[$row['id']]">

<?php 
echo 'Images:<br>';

//move form tag to outside of table
echo '<form name="imagePosition" method="post" action="photoPositions.php?id=<?php echo $_GET['id'];?>">';

echo '<table width="100%" cellspacing="3">'; 
$get_photo = "SELECT * FROM images WHERE artId = ".$_GET['id']." ORDER BY posId ASC";
$result = mysql_query($get_photo) or die(mysql_error());    
    while($row = mysql_fetch_array($result)){
        echo '<td align="left">
        <a href="../photos/'.$row['name'].'" target="_blank">
        <img src="../photos/'.$row['name'].'" width=200>
        </a>';
?>
        <select name="posid[<?php echo $row['id']; ?>]" id="posid<?php echo $row['id']; ?>">
<?php 
        echo '<option value="1"';
            if($row['posId'] == 1)
            {
                echo ' selected';
            }
        echo '>Article</option>';

        echo '<option value="2"';
            if($row['posId'] == 2)
            {
                echo ' selected';
            }
        echo '>Sidebar</option>';

        echo '<option value="4"';
            if($row['posId'] == 4)
            {
                echo ' selected';
            }
        echo '>Offline</option>';
?>
        </select>
        <input type="submit" name="POSITION CHANGE" value="POSITION CHANGE">
<?php
    }
echo '</table></form>' . "\r\n"; 
?>

然后在你的photoPositions.php你可以做一个 foreach 循环

foreach($_POST['posid'] as $key => $value){
      $insertQuery = ("UPDATE images SET posId = '".$value."' WHERE id = '".$key."'");
      mysql_query($insertQuery) or die(mysql_error());
}
于 2013-07-10T19:59:41.337 回答