|
|
|
ท่านใดพอจะทราบวิธีการ Refesh แล้วค่าตัวแปลไม่หายบ้างไหมครับ |
|
|
|
|
|
|
|
ใช้ session ดูครับ
|
|
|
|
|
Date :
2017-12-13 13:49:57 |
By :
mangkunzo |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ลองดูครับ
Code (PHP)
<?php
session_start();
@ob_start();
?>
<html>
<head>
<title>Test refresh</title>
</head>
<body>
<form id="TEST" method="post" action="" >
<button type= "submit" value="9" name="btn1" > C1</button>
<button type="submit" value="10" name="btn2" > C2</button>
</form>
<?php
$_SESSION["btn1"] = @$_POST["btn1"];
$_SESSION["btn2"] = @$_POST["btn2"];
echo "btn 1 = ".$_SESSION['btn1'];
echo "btn 2 = ".$_SESSION['btn2'];
?>
</body>
</html>
|
ประวัติการแก้ไข 2017-12-13 14:27:57
|
|
|
|
Date :
2017-12-13 14:27:23 |
By :
mangkunzo |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1. คุณควรออกแบบโปรแกรมให้การประมวลผลมาก่อนการแสดงผล การประมวลผลต่างๆควรทำให้มันจบด้านบน แสดงผลด้านล่าง. เพราะเหตุนี้คนจำนวนมากจึงนิยมย้ายมาใช้ framework เพราะมันแยกแยะส่วนประมวลกับแสดงออกมา. ยุคนี้ไม่ใช่ ค.ศ. 2000 อย่าพยายามเขียนโค้ดประมวลผลปะๆปนๆกับ html หรือส่วนแสดงผลอย่างพวก echo, print, print_r, var_xxx ทั้งหลายอีกเลย ถ้าไม่จำเป็น.
2. การกำหนด session นั้นถูกแล้ว มันไม่มีทางจะหายไปหรอก ที่มันหายคุณก็ต้องไปดูในโค้ดว่ามันเป็นยังไง การกำหนด และการเรียกออกมา มันเป็นยังไง กำหนดดะทุกๆ request โดยไม่สนใจ input หรือไม่? ซึ่งจากที่ผมเห็นคุณจับมันยัดดะเข้า session ไปเลย ไม่มีเงื่อนไขอะไรเลย คือเปิดหน้ามาธรรมดาๆก็กำหนด, โพสต์ข้อความก็กำหนด แล้วมันจะไปจำค่าข้าม request/reload ได้ยังไง? ใส่ if เข้าไปสักหน่อยไหม? และจากที่ผมแนะนำข้อ 1 ย้ายการกำหนด session พร้อมทั้ง if ของมันไปด้านบนดีไหม?
|
|
|
|
|
Date :
2017-12-13 18:45:49 |
By :
mr.v |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ตัวแปรอักษรตัวเล็กตัวใหญ้
$_SESSION ไม่เท่ากับ $_session
ปล.เวลา กดปุ่ม button submit จะส่ง แค่ปุ่มเดียว
ทดสอบปุ่ม
<?php
print_r($_POST);
จะได้รู้ว่า มี request อะไรส่งมาบ้าง
ปล.
ตัวอย่างโค๊ดที่ควรเขียน ตาม ที่ mr.v บอกคือแยกส่วนคำนวณออกจาก html ให้มากที่สุด
Code (PHP)
<?php
session_start();
$btn1=isset($_POST['btn1']) ? $_POST['btn1'] : (isset($_SESSION['btn1'])? $_SESSION['btn1'] : 'x');
$btn2=isset($_POST['btn2']) ? $_POST['btn2'] : (isset($_SESSION['btn2'])? $_SESSION['btn2'] : 'y');
$_SESSION["btn1"] =$btn1;
$_SESSION["btn2"] =$btn2;
?><!doctype html>
<html>
<head>
<title>Test refresh</title>
</head>
<body>
<form id="TEST" method="post" action="" >
<button type= "submit" value="9" name="btn1" >C1 =<?=$btn1?></button>
<button type="submit" value="10" name="btn2" >C2 =<?=$btn2?></button>
</form>
btn 1 = <?=$_SESSION['btn1']?><br>
btn 2 = <?=$_SESSION['btn2']?>
</body>
</html>
และการ refresh มีอยู่ 2 อย่าง F5 และ ctrl+F5
การกด F5 อันดับแรก จะเอา cache มาใช้งาน ซึ่งอาจเป็นข้อมูลเก่า
แต่การกด ctrl + F5 จะถูกสั่งให้อ่านจาก server ใหม่จริงๆ ไม่ใช้ cache
|
ประวัติการแก้ไข 2017-12-13 19:05:03 2017-12-13 19:11:52 2017-12-13 19:15:51
|
|
|
|
Date :
2017-12-13 18:54:01 |
By :
Chaidhanan |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ขอบคุณทุกคำแนะนำครับ ผมจะนำไปปรับใช้
|
|
|
|
|
Date :
2017-12-13 21:50:06 |
By :
kidscirenser |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Load balance : Server 02
|