iT邦幫忙

0

html image 傳值到php錯誤

各位大大
想請教一個問題,
我有一個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="hidden"
amyqaz iT邦新手 4 級 ‧ 2021-07-19 15:32:47 檢舉
screenleon了解,可使我比較想知道能不能直接傳,沒有錯
archer9080 iT邦研究生 4 級 ‧ 2021-07-19 17:20:19 檢舉
看起來是想用成類似checkbox or radio的效果?
搭配js,按下圖片後對應的勾選/取值/賦值 等等
應該都能達到想要的目的
haward79 iT邦研究生 3 級 ‧ 2021-07-19 19:37:48 檢舉
建議你附完整 code
還有加強一下你的 html ......
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中
1
japhenchen
iT邦超人 1 級 ‧ 2021-07-19 16:33:54
最佳解答

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'不好嗎?

看更多先前的回應...收起先前的回應...

https://ithelp.ithome.com.tw/upload/images/20210719/20117954RQjeKcWybC.jpg

amyqaz iT邦新手 4 級 ‧ 2021-07-19 16:41:58 檢舉
 <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出來了.....

amyqaz iT邦新手 4 級 ‧ 2021-07-19 16:44:33 檢舉
想不出為何要用name='pen[]'........用='pen'

可是我使用pen,他PHP抓到的值永遠是最後一個值

while ($row = mysqli_fetch_array($result)) {

while ($row = mysqli_fetch_array($result,MYSQLI_ASSOC)) {

試試

amyqaz iT邦新手 4 級 ‧ 2021-07-19 16:53:00 檢舉
while ($row = mysqli_fetch_array($result,MYSQLI_ASSOC)) {

改了也是一樣

能貼出結果嗎?

amyqaz iT邦新手 4 級 ‧ 2021-07-20 08:41:29 檢舉

japhenchen,結果變成這樣
https://ithelp.ithome.com.tw/upload/images/20210720/20138379IAoqFFuWjG.png

	<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  ";
amyqaz iT邦新手 4 級 ‧ 2021-07-20 09:06:11 檢舉

japhenchen
我正式的程式碼有where,但因為我這是測試的啦,沒幾個名字,所以我就沒寫where,name也隨便打(但他們的id還是不一樣的)

archer9080 iT邦研究生 4 級 ‧ 2021-07-20 11:26:50 檢舉

因為input type=image 沒有 value屬性可用
無法透過 form 將本身的值傳送到php
所以第一步才讓你另外弄個tag存放value
需要再通過js操作
去除掉不需要(取得需要) 的
你這樣做當然會全部傳到後端

星空大的你仔細思考一下

一般比較單純的寫法。是用一個 input type=hide...
然後當檔案選擇時。再將檔名放進去這個再做發送。

也就是說input type=image選擇時,透過js取得input type=image 攜帶的值放進去這個input type='hidden' name='pen[]再做發送

amyqaz

如果你不想在測試環境下寫出where...
那也加個limit 0,1吧....讓select出來的保証只有一筆,在while時才不會每一筆都撈出來

amyqaz iT邦新手 4 級 ‧ 2021-07-20 15:52:00 檢舉

謝謝japhenchen,謝謝各位,我弄出來了,我用button包image,
但有個小問題還想請教一下大大,我按鍵按下去會出現邊框,請問能把邊框消除嗎?https://ithelp.ithome.com.tw/upload/images/20210720/20138379OxrOjYQFoz.png

style="border-width:0px;

amyqaz iT邦新手 4 級 ‧ 2021-07-20 16:09:43 檢舉
style="border-width:0px;

這行我之前有試過了,但按下去他還是會出現黑色邊框

a img {outline : none;}
amyqaz iT邦新手 4 級 ‧ 2021-07-20 16:27:40 檢舉

japhenchen可以了,謝謝大大

0
kcka
iT邦新手 5 級 ‧ 2021-07-19 15:18:19

測試

0
screenleon
iT邦新手 1 級 ‧ 2021-07-19 15:53:49

https://stackoverflow.com/questions/7935456/input-type-image-submit-form-value
我看他第一格回答
好像無法攜帶value
所以你可能需要用隱藏欄位傳遞你要的資料

0

INPUT 的 type 如果是檔案式(file、image)的。一般無法直接拿到POST值的。
在PHP裏,檔案式的只能用 $_FILE 拿到。

一般比較單純的寫法。是用一個 input type=hide...
然後當檔案選擇時。再將檔名放進去這個INPUT再做發送。

我要發表回答

立即登入回答