2014-01-29 73 views
0

我使用多個表單來選擇要更新的內容。提交後只有我的最後一個表單消失。我認爲它甚至不會處理它在提交時應該做的更新。 請幫幫我!我提交的問題

PHP代碼:

if ($collect == "foto"){ 

          $sql = mysqli_query($link, "SELECT * FROM foto"); 
          $row = mysqli_fetch_assoc($sql); 
          $array = array(); 


           echo "<form method='POST'>"; 
           while ($row = mysqli_fetch_assoc($sql)) 
           { 
            echo "<input type='text' name='foto[]' value=".htmlspecialchars($row['foto'])."></input>"; 
           } 
           echo "<input type='submit' name='submit3' value='update'></input></form>"; 

           if (isset($_POST['submit3'])) { 
            echo "Finally!"; 
            $array = $_POST['foto']; 
            $i = 0; 
            foreach ($array as $foto) { 
            $ufoto = $array[$i]; 
            $sql =" 
             UPDATE 
              foto 
             SET 
              foto = '$ufoto' 
             WHERE 
              id = $i 
             "; 
            mysqli_query($link, $sql); 
            $i ++; 

            var_dump($array); 
            } 
           } 
          } 
+0

從我所看到的,你只打開一個表格一次;你的更新中沒有'where'子句,所以它會把它們全部做成同樣的東西,你至少應該傳遞一個'id'或者一些字段來區分。除此之外,我不確定你說的是錯的。 – Jon

+0

@jon在更新中沒有where語句它更新所有權利?這就是目的。還有我遇到的問題是,當我按下提交沒有發生的事情。 – Moopsish

+1

所以在'foto'表中,你有一個名爲'foto'的字段,你希望數據庫中的每一個字段都變成輸入文本?如果是這樣,你計劃如何做到這一點將會把它們全部更新到數組中的最後一個,因爲除此之外沒有別的區別。 – Jon

回答

1
$_POST['foto'] = $array['foto']; 

應該最有可能是:

$array = $_POST['foto']; 

你的腳本也是開放的SQL注入攻擊。

+0

改變這一點。謝謝(你的)信息! – Moopsish

0

在編輯之前,我看到你忽略了在你的form -tag中放置action-屬性。這個動作屬性指定哪個php站點應該處理表單。

更多,請參閱:http://www.w3schools.com/tags/att_form_action.asp

+0

如果'action'沒有定義,它會提交給它自己。 – Jon

+0

'在HTML5中,動作屬性不再需要。「 - 它將提交給它自己,動作屬性被省略。 – Prisoner

+1

詛咒你,html5! – npst