2013-07-10 78 views
1

我試圖實現從一個while循環多個<options>更新查詢。我正在使用此功能爲圖像分配位置ID,以便我可以將它們放置在網站的各個位置。我已經爲單個圖像工作,但這意味着我必須手動更新每個圖像。多個<option>更新與查詢

在我目前的情況下,我在while循環內運行窗體。然後提交按鈕將數據發佈到一個流程文件並保存。這樣可行。但僅適用於每個圖像。

我希望能夠通過單個提交按鈕更新所有圖像位置。

在我當前的代碼中,我認爲問題是我在while循環中運行窗體。如果我是正確的,在單個查詢中使用來自多個表單的數據是不可能的。現在我正在寫這個請求來幫助我注意到它更像是一個業務邏輯錯誤 - 我正在試圖繞過它來讓它工作。

讓我們得到的情況/代碼:


目前,它的工作原理是這樣的:

選項>按鈕

選項>按鈕

每次更新按鈕使用文章ID和EXE指向文件'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_是depcrecated,我會盡力的,後來工作)

我目前的編輯文章代碼如下所示:

<?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數據輸出到數組中並處理該數據進入查詢?當然,我必須在一段時間內解決這個問題。

回答

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()); 
} 
+0

哇哦,有用。我花了幾個小時。 我一定會嘗試瞭解我的錯誤和您的解決方案。我有一種感覺,foreach會做的伎倆。非常感謝。 – Ngai

+0

總是樂於提供幫助。有時需要一個外部的眼睛來幫助讓創造性思維再次發生。 – Sean