各位大大
想請教一個問題,
我有一個image裡面有value,我想點擊image時,就把value post到PHP,可是值都會跑掉
例如:我的值應該是20,結果傳上去變33之類的,不知道是哪裡出了問題?
以下是我的程式碼:
<!DOCTYPE html>
<body >
<div class="container" >
<?php
require 'db.php';
if(isset($_POST['pen'])){
$arr = $_POST['pen'];
for($i=0;$i<count($arr);$i++)
{
echo $arr[$i]."<br>";
}
}
?>
<form id="myform" name="myform" action="check.php" method="post" enctype="multipart/form-data">
<?php
$sql = "SELECT * FROM course";
$result = mysqli_query($db, $sql);
echo "
<table>
<tr>
<th> 姓名</th>
<th> 座號</th>
</tr>";
while ($row = mysqli_fetch_array($result)) {
?>
<tbody>
<tr>
<td><?= $row["name"]?></td>
<td> <input type=image src="images/pen.png" width="30" height="30" name='pen[]' id='pen' value="<?=$row["id"]?>">
</td>
<tr>
<?php
}?>
</tbody>
</table>
</form>
<?php mysqli_close($db);
?>
</div>
</body>
</html>
謝謝
input type=image 沒有 value屬性可用,你放在裡面的value,無意義
https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input/image
建議改用
<input type='hidden' name='pen[]' value="<?php echo $row["id"] ; ?>">
想不出為何要用name='pen[]'........用='pen'不好嗎?
<input type=image src="images/pen.png" width="30" height="30">
<input type='hidden' name='pen[]' id='pen' value="<?php echo $row["id"] ; ?>"/>
</input>
可是這樣他把我所有選項都print出來了.....
想不出為何要用name='pen[]'........用='pen'
可是我使用pen,他PHP抓到的值永遠是最後一個值
while ($row = mysqli_fetch_array($result)) {
改
while ($row = mysqli_fetch_array($result,MYSQLI_ASSOC)) {
試試
while ($row = mysqli_fetch_array($result,MYSQLI_ASSOC)) {
改了也是一樣
能貼出結果嗎?
japhenchen,結果變成這樣
<body>
<div class="container">
<?php
require 'db_login.php';
if(isset($_POST['pen'])){
$arr = $_POST['pen'];
for($i=0;$i<count($arr);$i++){ echo $arr[$i]."<br>"; }
}
?>
<form id="myform" name="myform" action="t.php" method="post" enctype="multipart/form-data">
<?php
require 'db_login.php';
$sql = "SELECT * FROM saleform ";
$result = mysqli_query($db, $sql);
echo "
<table class='table table-bordered'>
<tr>
<th> user</th><th> 修改</th>
</tr>";
while ($row = mysqli_fetch_array($result,MYSQLI_ASSOC)) {
?>
<tbody>
<tr>
<td> <?=$row["user"];?></td>
<td>
<input type=image src="images/pen.png" width="30" height="30">
<input type='hidden' name='pen[]' id='pen' value="<?php echo $row["id"] ; ?>"/>
</input>
</td>
<tr>
<?php}?>
</tbody>
</table>
</form>
<?php mysqli_close($db);
?>
</div>
</body>
那你的SQL裡沒WHERE就不對啦......
至少給他包個WHERE name = '張三' 吧?你這句,就是所有user全部列出...
$sql = "SELECT * FROM saleform ";
japhenchen
我正式的程式碼有where,但因為我這是測試的啦,沒幾個名字,所以我就沒寫where,name也隨便打(但他們的id還是不一樣的)
因為input type=image 沒有 value屬性可用
無法透過 form 將本身的值傳送到php
所以第一步才讓你另外弄個tag存放value
需要再通過js操作
去除掉不需要(取得需要) 的
你這樣做當然會全部傳到後端
星空大的你仔細思考一下
一般比較單純的寫法。是用一個 input type=hide...
然後當檔案選擇時。再將檔名放進去這個再做發送。
也就是說input type=image
選擇時,透過js
取得input type=image
攜帶的值放進去這個input type='hidden' name='pen[]
再做發送
如果你不想在測試環境下寫出where...
那也加個limit 0,1吧....讓select出來的保証只有一筆,在while時才不會每一筆都撈出來
謝謝japhenchen,謝謝各位,我弄出來了,我用button包image,
但有個小問題還想請教一下大大,我按鍵按下去會出現邊框,請問能把邊框消除嗎?
style="border-width:0px;
https://stackoverflow.com/questions/7935456/input-type-image-submit-form-value
我看他第一格回答
好像無法攜帶value
所以你可能需要用隱藏欄位傳遞你要的資料
INPUT 的 type 如果是檔案式(file、image)的。一般無法直接拿到POST值的。
在PHP裏,檔案式的只能用 $_FILE 拿到。
一般比較單純的寫法。是用一個 input type=hide...
然後當檔案選擇時。再將檔名放進去這個INPUT再做發送。