多次使用查询</option>进行<option>更新

时间:2013-07-10 19:40:55

标签: php sql

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

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

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

在我目前的代码中,我认为问题是我在while循环中运行表单。如果我是正确的,则无法在单个查询中使用来自多个表单的数据。现在我正在写这个请求帮助我注意到它更多的是一个业务逻辑错误 - 我试图绕过它以使它工作。

让我们了解情况/代码:


目前的工作原理如下:

选项&gt;按钮

选项&gt;按钮

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

我想要这种情况:

选项

选项

更新按钮

导致:只需点击一下即可更新所有图像。

Image


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"; 
?>

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

我是否必须将所有imgid数据的posid数据输出到数组中并将该数据处理成查询?当然,我也必须在一段时间内解决这个问题。

1 个答案:

答案 0 :(得分: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());
}
相关问题