2012-09-13 24 views
2

我從我的mysql數據庫獲取數據並想要創建一個列表。 在列表中,我想要一個按鈕,它使用post來向下一頁發送一個值。帶有後置按鈕的表格

$result = mysql_query("SELECT * FROM all"); 
echo "<table border=\"1\">"; 
echo"<tr> 
    <th>ID</th> 
    <th>Naam</th> 
    <th>Eigenaar</th> 
    <th>Plaats</th> 
    <th>Bewerk</th> 
    </tr>"; 
    ?> 
    <form action="editshop.php" method="post"> 
    <?php 
    while($rij = mysql_fetch_array($result)) 
    { 

    ?> 


     <?php 
     echo "<tr><td>".$rij['id'] . "</td><td> " . $rij['naam'] ."</td><td>"; 
     echo $rij['eigenaar'] . "</td><td>" . $rij['plaats']."</td>" ; 
     echo"<input type=\"hidden\" name=\"id\" value=".$rij['id']." /><td><input type=\"submit\" /></td>"; 
     echo "</tr>"; 
    } 
echo "</form></table>"; 

表看起來不錯,但是當我PRES的按鈕,打開editshops.php我wher有echo $_POST["id"]; 它總是在列表的最後一個ID。 我只想要與列表中的ID相同的數字。 在列表中的ID顯示良好。 我做了錯誤的 (抱歉,如果這個職位的佈局並不好,這是我firstpost,我不知道如何突出代碼) 更新 改變環路

<?php 
    while($rij = mysql_fetch_array($result)) 
    { 

    ?> 
     <form action="bewerkshop.php" method="post"> 

     <?php 
     echo "<tr><td>".$rij['id'] . "</td><td> " . $rij['naam'] ."</td><td>"; 
     echo $rij['eigenaar'] . "</td><td>" . $rij['plaats']."</td>" ; 
     echo"<td><input type=\"submit\" name=\"id\" value=\"".$rij['id']."\" /></td>"; 
     echo "</tr>"; 
    } 
echo "</form></table>"; 

?> 

所有工作現在但按鈕的名稱是ID號我可以改變它來編輯。 所以所有的按鈕說編輯,而不是ID號

回答

0

注意:我不確定您是否想要使用提交或僅提交一個來編輯多行。我的回答只對編輯多行很有幫助。

您正在爲每行輸入一個輸入字段,全部使用相同的名稱。這就是爲什麼最後一個覆蓋所有其他人的原因。

您需要相應地命名您的輸入字段。

例子:

<input name="naam[1]" value="..." /> 

其中1在此爲你行的ID。

然後,您可以迭代$ _POST ['naam']並獲取值。

foreach ($_POST['naam'] as $id => $value) { 
    $otherValue = $_POST['otherValue'][$id]; 
    // ... 

    // do something with it and add some checks if the keys exist. 
} 
+0

我創建了一個商店列表。在列表後,我想要一個按鈕,我可以點擊,所以我可以編輯選擇的店鋪 –

+0

@SvenB我認爲這會讓你回到使用每行或一些JavaScript的表單來確定正確的行 - 或者,隱藏的字段並將值附加到提交按鈕(並非親自嘗試過) – Fluffeh

0

它看起來像<input>缺少一套圍繞價值報價:

value=\"".$rij['id']."\" 

應該做好這方面的技巧。但是,如果您爲每個輸入使用相同的名稱,PHP會將數據覆蓋到發送的最後一個ID(因爲所有隱藏的輸入具有相同的名稱)。

您可能需要考慮爲每行數據創建一個表單。所以你知道哪一個實際發送了 - 或者使用一些javascript來提交表單並選擇正確的值來傳遞。

+0

不,這不是問題。他正在爲每一行輸入一個輸入字段,全部使用相同的名稱。這就是爲什麼最後一個覆蓋所有其他人的原因。 –

+0

@DanielM你讀過我的整個答案嗎? :) – Fluffeh

+0

是的,我閱讀了您在編輯中添加的部分:P然而,每行的表單會負面影響用戶體驗,而將所有內容放在一起的JS將相當複雜。 //編輯:好的,我不確定他是否想用單個提交來編輯多行... –

1

我相信你需要使用像 name="id[]"東西得到一個數組

現在我看到你有每行一個提交按鈕,這意味着你需要每行一個形式,或把ID提交按鈕本身的值。

+0

@Sven B我可以問你爲什麼不接受答案嗎? – wich

0

,因爲所有的隱藏的輸入具有相同的名稱,當您發佈它會給你的最後一個ID或者您可以發佈一個數組

"<input type=\"hidden\" name=\"id[]\" value=".$rij['id']." /> 

或者通過傳遞ID的提交按鈕本身張貼。