[請益] 關於變數的問題

看板PHP作者 (Abby)時間8年前 (2016/04/12 16:17), 8年前編輯推噓0(0023)
留言23則, 4人參與, 最新討論串1/1
不好意思,剛開始學習寫網頁,遇到了一些問題 google&爬文了許久還是不明所以 請問 今天我在同一個php檔 code是這樣的 <?php 連接mysql,回傳了一個$row['???'],???有username、password等.. echo "<script> js_function(); </script>" ; ?> <scrpt> function js_function(){ <?php $x = $row['username'] $y = "abc" ?> alert( <?php echo $x; ?> ); alert( <?php echo $y; ?> ); } </script $x沒辦法印到,$y卻可以 請問為什麼呢?該如何修改~ 同一個php檔,不同的<?php ?> 變數空間不同嗎? 我的第一個row的php並沒有使用function,所以應該不是區域變數呀 謝謝 附上完整程式碼 http://pastie.org/private/pjxr3k3jx8s08fxktff4g#4,29-30,33,102,110 我發現我的$_session存不到$row抓出來的資料 (確定不是'password'、'nickname'的問題) 但是$_session['authenticated'] = true; 就可以echo出1 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 1.165.155.183 ※ 文章網址: https://www.ptt.cc/bbs/PHP/M.1460449059.A.3C3.html

04/12 16:28, , 1F
session_start()要寫在最前面 寫中間不行
04/12 16:28, 1F

04/12 16:35, , 2F
$_SESSION要大寫 小寫沒有用
04/12 16:35, 2F

04/12 16:36, , 3F
還有這種一直輸出<script>的寫法是哪來的 拜託別這樣吧
04/12 16:36, 3F
第一個跟第二個知道了~~謝謝 請問第三個是什麼意思呢? 意思是我用很多js function跳提示窗不好嗎? 改成直接用php echo再refresh header比較好嗎 對不起我剛學不久很多地方不知道QQ 謝謝你告訴我這些~~ 然後我1.2改好了還是接不到$row@@ ※ 編輯: yaya517 (1.165.155.183), 04/12/2016 16:49:51

04/12 16:55, , 4F
既然js_function()必跑,何必echo?
04/12 16:55, 4F

04/12 16:56, , 5F
而通常,決不決定去跑什麼東西是由傳遞參數來決定。
04/12 16:56, 5F

04/12 16:56, , 6F
而不是達成什麼條件去echo js,沒達成就不echo
04/12 16:56, 6F

04/12 16:58, , 7F
於是乎…你把php的變數宣告放在js,對js一點意義也沒有。
04/12 16:58, 7F
對不起這邊我沒有寫清楚 我是要登入,確認帳號密碼都對的話 就echo呼叫請js fun做事 要做的事是js fun做訊息框、session跟跳轉 如果帳號密碼不對就echo另一個js fun做其他事 所以這樣應該不是必跑這個js? (如果登入失敗就不跑) 這樣我的$row需要傳遞嗎 還是我乾脆都不要用js了 改成echo文字 然後3 5秒後head跳轉 抱歉寫的很笨QQ 我不知道怎麼寫比較好 我會再好好改改 ※ 編輯: yaya517 (1.165.155.183), 04/12/2016 17:07:42 ※ 編輯: yaya517 (1.165.155.183), 04/12/2016 17:09:11 ※ 編輯: yaya517 (1.165.155.183), 04/12/2016 17:10:03 抱歉@@ 想了很久應該是我前後端觀念不好 所以才會在php後端又call很多js前端做事 我會再好好研究如何寫的更好的 謝謝兩位大大的回文~ ※ 編輯: yaya517 (1.165.155.183), 04/12/2016 17:54:07

04/12 18:18, , 8F
是阿,前後端最好是不要混在一起寫
04/12 18:18, 8F

04/12 18:19, , 9F
而且php和html/js/css也不要混在一起
04/12 18:19, 9F

04/12 18:19, , 10F
初學還不能分檔案,至少設法養成分前後的習慣
04/12 18:19, 10F

04/12 18:20, , 11F
php通通寫在前面,其他寫在後面,頂多夾雜展開陣列
04/12 18:20, 11F

04/12 18:21, , 12F
或者要不要顯示的if { }
04/12 18:21, 12F
好的!! 我剛剛重寫了一次 這次很乾淨的都是使用php 而且做的事幾乎都相同 抱歉第一次寫的時候沒有想到不要混在一起 只想到要用什麼就call什麼 而且不知道php儘量不要和其他語言混在一起 現在知道了 我會再多注意code習慣跟前後端 謝謝~~ ※ 編輯: yaya517 (1.165.155.183), 04/12/2016 18:28:56

04/13 11:17, , 13F
其實你一開始的寫法問題是出在頁面生成的順序上
04/13 11:17, 13F

04/13 11:18, , 14F
當你建立一個php檔案(先不管有沒有包js),伺服器會
04/13 11:18, 14F

04/13 11:18, , 15F
先依你設定的方式產生頁面,js則是到頁面呈現後才
04/13 11:18, 15F

04/13 11:19, , 16F
有的東西,也就是說,在你頁面生成時,那個變數是沒
04/13 11:19, 16F

04/13 11:19, , 17F
有值的,你的值是在頁面生成後才指定的,php沒辦法
04/13 11:19, 17F

04/13 11:19, , 18F
即時取值即時運作
04/13 11:19, 18F

04/13 11:20, , 19F
等下…我看錯了,不要理我= =a
04/13 11:20, 19F

04/13 14:39, , 20F
樓上說的沒錯啊 原code是先js後才取row所以js中row無
04/13 14:39, 20F

04/13 14:39, , 21F
04/13 14:39, 21F

04/13 14:42, , 22F
如果有照前面人回把php往前集中把js往後集中應該會有,
04/13 14:42, 22F

04/13 14:42, , 23F
還是沒有就更新一下你的code給大家看
04/13 14:42, 23F
文章代碼(AID): #1N3AyZF3 (PHP)