2017-11-25 93 views
1

我當前的代碼,這不符合我的需求,看起來像以下:如何呼應提交輸入表單與特定ID的名稱

<?php 

$con = mysqli_connect("localhost", "root", "", "blogs"); 
$sql = "SELECT * FROM foods order by date desc"; 
$result = mysqli_query($con, $sql); 
while ($r = mysqli_fetch_array($result)) { 

    //my variables 
    $buttonname = $r['id']; //for name I want to set on submit input on every echo of form of each results. Ps. My id on my database are set to auto increment. 
    $lhtitle = $r['title']; 
    $lhcategory = "foods"; 
    $lhimage = $r['image']; 
    $lhtext = $r['text']; 


    echo "<div class='content-content'>"; 
    echo strtoupper("<div class='L-TITLE'>$lhtitle</div>"); 
    echo "<form action='' method='POST'><input type ='submit' value='Add to Collection' name = '$buttonname'"; 
    echo "class='addto-button'></form>"; 
    echo "<div class='content-img'>"; 
    echo "<img style = 'width:100%;' src='images/$lhimage' alt='no image inserted'>"; 
    echo "</div>"; 
    echo "<div class='content-description'><p>$lhtext</p></div>"; 
    echo "</div>"; 
} 

if (isset($_POST[$buttonname])) { 

    $usn = $_SESSION['logged']; 
    $sql = "INSERT INTO `$displayuserid` (title,category,image,text) SELECT '$lhtitle','$lhcategory','$lhimage','$lhtext' FROM foods WHERE id = '$buttonname'"; 
    mysqli_query($con , $sql); 
} 
?> 

當我運行這段代碼,只有第一個ID是1 $ buttonname讀取。但我需要所有ID。

+1

信息不足!更新與完整信息 –

回答

0

你編寫PHP變量作爲HTML代碼

變化

echo strtoupper("<div class='L-TITLE'>$lhtitle</div>"); 
echo "<img style = 'width:100%;' src='images/$lhimage' alt='no image inserted'>"; 
echo "<form action='' method='POST'><input type ='submit' value='Add to Collection' name = '$buttonname'"; 

echo strtoupper("<div class='L-TITLE'>".$lhtitle."</div>"); 
echo "<img style = 'width:100%;' src='images/".$lhimage."' alt='no image inserted'>"; 
echo "<form action='' method='POST'><input type ='submit' value='Add to Collection' name = '".$buttonname."'"; 
+0

謝謝。但我的主要問題仍然是一個問題。如果(isset($ _POST [$ buttonname]))它仍然只讀第一個ID是'1' –

0

不是真的知道你的意思是 「只有第一個ID是 '1' $ BUTTONNAME讀」但也許問題可能在這裏:

你是第一次循環所有的結果,每次你加載頁面。因此,當你的結果是2個記錄,例如id和1,輸入的值將是name ='1'和name ='2',但變量$buttonname將在每個循環後爲2頁面加載。

然後$_POST[$buttonname]將變成$_POST["2"],這將是casted to an integer$_POST[2]

所以,如果你有這樣的檢查:

`if (isset($_POST[$buttonname])) {` 

這將改爲

`if (isset($_POST[2])) {` 

當你點擊第一個按鈕,該$_POST看起來像:

Array 
(
    [1] => Add to Collection 
) 

而且第二個按鈕:

Array 
(
    [2] => Add to Collection 
) 

所以你可以看到,如果語句只會匹配最後輸入元件和第一會導致:

注意:未定義抵消:2

希望這有助於你解決你的問題。

+0

你明白了我的觀點,但對不起,我沒有得到你的答案T_T請你詳細說明一下我應該怎麼做? :( –

+0

我認爲你想用'$ buttonname'作爲id來插入數據到你的數據庫中,你需要的id在'name'屬性中(name =「1」等),這將成爲'$ _POST' arrray。一個可能性是使用[array_search](http://php.net/manual/en/function.array-search.php)通過搜索值「Add to Collection 「like $ inputName = array_search(」Add to Collection「,$ _POST); if(false!== $ inputName){}'你也應該考慮在sql中如何使用它們sql注入。 –

相關問題