iT邦幫忙

0

(已解決)請問在php裡面寫form用input submit 來傳php的值可行嗎?

https://ithelp.ithome.com.tw/upload/images/20200602/20127609wOgCmAVii0.png
圈起來的部分
值傳到另一個php之後 會跑出"$num"的字樣 而不是我$value傳進去的值
請問是有語法上的錯誤還是壓根不能這樣寫...

順帶一提
我這裡是想寫一個表格的最後一格拿來當按鈕來傳遞當下那一列的主鍵數值
但我只想到這樣的寫法
也不知道這裡是不是可以這樣寫...

(我知道我的寫法很爛...還在學 請見諒)


謝謝 japhenchen
用單引號去牽就成功了

謝謝 浩瀚星空
我的前端和後端語言的觀念還非常弱
這裡我是在寫的一個選課系統
最後一格放按鈕來傳遞這一列的選課代號
但我只有想到用form來傳數值
就變成這樣的寫法了

謝謝 通靈亡 的教學
我會試試看有沒有辦法把php和html的部分分開來寫

我會再努力學習的 謝謝大家

loveAkame iT邦新手 5 級 ‧ 2020-06-02 02:46:03 檢舉
不要用 '' 單引號來包,會被當成純字串,使用雙引號來包,然後裡面如果要有雙引號可以使用: (\")
e.g. echo "<td id=\"${num}\"></td>"
"$num"指的是字串而不是變數名.........前後端要弄清楚啦
你要用單引號去牽變數
<input ...................... "' . $num . '">

(發問時原始碼別用貼圖)
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中
1

由於你是圖片,我就不放程式了。

你第二個紅圈並不是變數,而是一個字串。

另外這邊要先告訴你一個觀念,不要將後端語言跟前端配置搞在一起。
或是將後端語言拿來當前端語言用。

而且你只有tr跟td。table跑去哪了??難不成在外層??包多個form??
這樣很可怕的。你會有許多地雷。

看更多先前的回應...收起先前的回應...
豬豬人 iT邦新手 4 級 ‧ 2020-06-03 09:33:42 檢舉

想請問星大 "不要將後端語言跟前端配置搞在一起" 這句話是甚麼意思呢? 可以舉例或者有相關文章嗎?謝謝

用比較簡單的說法。
不要用echo或是print等後端語言輸出字串的方式來放html的東西。
管理起來不容易。且如果有前端工程師。這樣的做法你會被幹洨

最佳的做法當然最好還是mvc的方式。將php與html分離的方式。
就算不想用view方式,要混用的情況下。也最好用如下的寫法來混用。

<table>
   <?php foreach($data AS $d):?>
   <tr>
        <td><?php echo $d;?></td>
   </tr>
   <?php endforeach;?>
</table>

這樣子也比較不會破壞原本html的配置。
剛好通靈亡也用同樣的混用手法,你也可以參考他的程式碼看。

exyui310070
一般新手很常犯的毛病,是將後端語言當前端使用。
然後再那邊搞不清楚狀況。

先告訴你一個基本觀念。瀏覽器並不懂php。
而你在瀏覽器中的原始碼,也絕對看不到任何php的程式碼。

其流程就是

php程式->經由php編輯成html->送給瀏覽器(這時只剩編輯好的html)

當然,我只是從你的程式碼看到有這樣的影子。實際上我不清楚你是否了解這方面的觀念。如果了解了是最好的。不了解就仔細看一下我說的話。
不懂可以再問。

php的問題就是前後端搞在一起.......

<?php 
    if( a==0 ){
?>
    <div>0</div>
<?php
    }
    else{  
?>
    <div>1</div>
<?php
    }
?>

我發現我寫PHP還蠻常在用這招的,要不然怎麼辦?分不清楚啊....

....

0
小哈
iT邦新手 4 級 ‧ 2020-06-02 09:26:24

HI exyui310070
試試看,是不是你要的結果!!!
https://ithelp.ithome.com.tw/upload/images/20200602/20089833V4aBSgXlmS.jpg

0
通靈亡
iT邦高手 1 級 ‧ 2020-06-02 10:17:50

這個寫法是我最早期學php用的思路:

一開始進入網頁,設定初始值為0
表單送出後,將上一個值傳給自己,往上+1,echo到input裡面

<?php
// 初始從0開始,每次會傳給自己,將上一個值往上+1
$pick_number = isset($_POST['pick_number']) && ctype_digit($_POST['pick_number']) ? $_POST['pick_number'] + 1 : 0;
?>

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>test</title>
</head>
<body>
    <!--自己傳給自己-->
    <form action="." method="post">
        <input type="text" name="pick_number" value="<?=$pick_number?>">
        <input type="submit" value="加1">
    </form>
</body>
</html>

衍伸寫法:

當$pick_number大於10之後
先顯示歸0前的$pick_number
接著將$pick_number歸0顯示在input

樓主可以參考一下php原生跟html混在一起不用echo html字串的寫法。

<body>
    <form action="." method="post">
        <?php if ($pick_number > 10 ): ?>
            <p>$pick_number 大於10,歸零之前:<?=$pick_number?></p>
            <?php $pick_number = 0; ?>
        <?php endif; ?>
        
        <input type="text" name="pick_number" value="<?=$pick_number?>">
        <input type="submit" value="submit">
    </form>
</body>

我要發表回答

立即登入回答