GORAGOD.com
freelance, web developer, web designer, hosting, domain name
Home
Host & Domain
Portfolio
ถามเรื่องการ รีเฟสรูปที่สร้างขึ้นมาขากไฟล์phpหน่อยครับ
Home
Forum
ถามเรื่องการ รีเฟสรูปที่สร้างขึ้นมาขากไฟล์phpหน่อยครับ
Mojo
คือว่าผมทำรูปกราฟแสดงโพลอยู่อะครับโดยการดึงข้อมูลมาจากฐานข้อมูล ทีนี้ปัญหาขอผมคือพอกดแอดข้อมู,ใหม่ลงไปแล้วแต่รูปกราฟที่เเสดงมันยังเป็นรูปเดิมอยู่อะครับ คือผมต้องการให้มันรีเฟสเลยตอนที่กดโหวด อะครับ ผมจะทำยังไงได้บ้างครับ
goragod
สามารถทำได้โดยการกำหนด src ใหม่ให้กับรูปภาพ (เคยตอบคำถามนี้แล้ว)
ข้อสำคัญก็คือ รูปที่กำหนดจะต้องมีชื่อไม่ซ้ำเดิม ไม่งั้นหากส่วชื่อรูปเดิมไป บราวเซอร์จะไปเอาจาก cache ซึ่งจะทำให้รูปไม่เปลี่ยน
หนทางอย่างง่าย ที่จะทำให้รูปเปลี่ยนชื่อทุกครั้งที่มีการโหลดใหม่ คือ ให้ใส่ ตัวเลขสุ่มต่อจากชื่อรูป เช่น
image.gif?123456789
เป็นต้น ซึ่งตัวเลขต่อท้าย อาจมาจากเวลา (mktime) หรือ ตัวเลขแบบสุ่มก็ได้ครับ
Mojo
ยังไงหรือครับ ไม่ค่อยเข้าใจครับ มีตัวอย่างได้ไหมครับ
goragod
ไม่รู้ว่า ทำวิธีไหนไว้ แต่สามารถลองหาคำตอบบนเว็บได้ครับ เนื่องจากเคยมีคนถาม คำถามนี้แล้ว และ ผมตอบไปแล้ว
กรุณาลองหาดูก่อน ถ้าไม่ได้ ลองอธิบายเพิ่มเติมว่าเข้าใจว่าอย่างไร และทำยังไงไว้
Mojo
ผมลองค้นหาแล้วครับ แต่ไม่เจอ ที่ผมคำก็คือ ตอนแรกพอเปิดเว็บมาก็ ใช้onload เรียกฟังชั่น โชว์รูปกราฟขึ้นมาแสดงก่อนอะครับ จากนั้นเมื่อมีคนกดโหวดผมก็ใช้ajax ส่งค่าไปที่หน้าเอาค่าไปเก็บลงฐานข้อมูล จากนั้นก็ ตรวจสอบว่าเก็บค่าเสร็จแล้วหรือป่าวโดยการecho "Y"เมื่อเก็บค่าเสร็จแล้วถ้าเก็บค่าไม่ได้ ก็echo "N" แล้วเช็คจาก responseText อะครับ แบบนี้อะครับ
if(req.responseText=="Y"){
alert("บันทึกผลโหวดเรียบร้อยแล้ว");
showgraph();
}
อันนี้ฟังชั่นโชว์กราฟครับ
function showgraph(){
var ran= Math.random();
document.getElementById("test").innerHTML="
<img src='makegraph.php?ran'>
";
}
แต่ปัญหาก็คือมันยังแสดงรูปกราฟที่เป็นรูปเก่าอยู่อะครับ
goragod
<img id="test" alt="" />
function showgraph(){
var ran= Math.random();
document.getElementById("test").src = 'makegraph.php?' + ran;
}
Mojo
ขอบพระคุณมากเลยครับ
ความคิดเห็น
รายละเอียด
ไฟล์อัปโหลด ชนิด jpg, jpeg ขนาดไฟล์ไม่เกิน 1024
^
ข้อสำคัญก็คือ รูปที่กำหนดจะต้องมีชื่อไม่ซ้ำเดิม ไม่งั้นหากส่วชื่อรูปเดิมไป บราวเซอร์จะไปเอาจาก cache ซึ่งจะทำให้รูปไม่เปลี่ยน
หนทางอย่างง่าย ที่จะทำให้รูปเปลี่ยนชื่อทุกครั้งที่มีการโหลดใหม่ คือ ให้ใส่ ตัวเลขสุ่มต่อจากชื่อรูป เช่น
image.gif?123456789
เป็นต้น ซึ่งตัวเลขต่อท้าย อาจมาจากเวลา (mktime) หรือ ตัวเลขแบบสุ่มก็ได้ครับ
กรุณาลองหาดูก่อน ถ้าไม่ได้ ลองอธิบายเพิ่มเติมว่าเข้าใจว่าอย่างไร และทำยังไงไว้
if(req.responseText=="Y"){
alert("บันทึกผลโหวดเรียบร้อยแล้ว");
showgraph();
}
อันนี้ฟังชั่นโชว์กราฟครับ
function showgraph(){
var ran= Math.random();
document.getElementById("test").innerHTML="<img src='makegraph.php?ran'>";
}
แต่ปัญหาก็คือมันยังแสดงรูปกราฟที่เป็นรูปเก่าอยู่อะครับ
function showgraph(){
var ran= Math.random();
document.getElementById("test").src = 'makegraph.php?' + ran;
}