A-AA+then

เกี่ยวกับตัวแปร .(int)$news[id].

1,115
        $content[] = '<p><label for="news_icon"> :</label>[ <a id="uploadURL" href="index.php?module=news/upload&amp;id='.(int)$news[id].'"></a> ]';

        $content[] = '<label for="news_icon"> :</label>[ <a id="uploadURL" href="index.php?module=news/upload_vdo&amp;id='.(int)$news[id].'"></a> ]</p>';

จากโค้ดด้านบนน่ะครับ ชุดแรกเป็นโค้ดของอาจาร ส่วนชุดล่างเป็นส่วนที่ผมเพิ่มเข้าไป แต่ผมเจอปัญหาตรงที่ว่า

เวลาที่เราเซฟแล้วทำไมค่า .(int)$news[id]. ของโค้ดชุดแรกถึงเปลี่ยนไปตามไอดีที่เซฟ

และชุดที่ผมเพิ่มเข้าไปค่า .(int)$news[id]. มันถึงไม่ยอมเปลี่ยนต้องไปกำหนดอะไรตรงไหนอีกหรือปล่าวครับ

6 ความคิดเห็น

555+++ ไม่รู้เรื่อง

เธอส่งค่าไป แล้วได้รับค่าหรือเปล่า ถ้าไม่ได้รับก็รับซะ

การรับส่งค่าบน GCMS มันก็เหมือนกับส่งผ่านฟอร์มทั่วไป ไม่ทำการรับค่าก่อน มันก็ไม่ได้รั

อยากรู้ว่ามีการส่งอะไรไปบ้าง ก็ตรวจดูได้ด้วย print_r($_POST);

อยากรู้ว่ามี config อะไรส่งมาบ้างก็ print_r($config);

อยากรู้ว่ามี session อะไรอยู่บ้างในตอนนี้ ก็ print_r($_SESSION);

สำหรับเรื่องการโพสต์ของ GCMS ให้ดู GForm
1

คืออย่างนี้ครับอาจาร

        $content[] = '<p><label for="news_icon"> :</label>[ <a id="uploadURL" href="index.php?module=news/upload&amp;id='.(int)$news[id].'"></a> ]';

สมมุดว่าค่าของตัวแปร .(int)$news[id].ของโค้ดชุดบนเท่ากับ 15 แต่ทำไมค่าของโค้ดชุดล่างมันถึงเป็น 0 น่ะครับ
ผมต้องการให้ค่าที่ออกมามันเท่ากันน่ะครับทั้งๆที่ตัวแปรเดียวกันแล้วก็อยู่ในเพทเดียวกันน่ะครับ บอกตามตรงว่างงมากเลยครับ

        $content[] = '<label for="news_icon"> :</label>[ <a id="uploadURL" href="index.php?module=news/upload_vdo&amp;id='.(int)$news[id].'"></a> ]</p>';
2

เป็นคำถามที่ไม่สามารถตอบได้ เนื่องจาก ข้อมูลน้อยเกินไป

หลักๆเลยก็ลองตรวจสอบก่อนว่า ค่าที่ส่งไปมีหรือไม่เช่น index.php?module=news/upload_vdo&id=15 id=15 มีจริงๆหรือเปล่า ลองหาวิธีตรวจสอบดู

อย่างที่ 2 ถ้าตอนส่งมี ตรวจตอนรับว่ามีหรือเปล่า ด้วย print_r($_POST); ถ้ามี และมีค่าถูกต้องตามที่ส่งมาหรือเปล่า

อย่างที่ 3 ส่งมาแล้ว ก็ต้องมาตรวจดูว่าได้รับค่าก่อนนำไปใช้งานหรือเปล่า

จำเป็นต้องทำตามลำดับขั้นให้ติดเป็นนิสัย เพื่อให้งานง่าย และ หาจุดบกพร่องได้ง่าย อย่าคิดว่าแค่ถามแล้วจะได้ตำตอบ เพราะเอาเข้าจริงๆ ผมก็ไม่รู้ว่าเธอเขียนไว้ยังไง(ถึงแม้จะดัดแปลงจากโค้ดที่ผมเขียน) เธอไปเขียนผิดแค่ตัวอักษรเดียวมันก็ไม่ทำงานแล้ว การเรียนรู้ที่จะหาข้อผิดพลาด ผมมองว่า สำคัญพอๆกับการรู้ว่าจะเขียนยังไง
3

ผมได้ทำตามที่อาจารแนะนำแล้วครับได้ข้อสรุปมาว่า

ผมเช็คตั้งแต่เปิดหน้าเพทเลย พบว่าตัวแปร .(int)$news[id]. .(int)$news[id]. ทั้งสองตำแหน่งมีค่าเท่ากัน 0

พอผมลองกรองข้อมูลลงไปแล้วกดปุ่มเซฟผลที่ออกมาคือ ตัวแปรตำแหน่งแรกมีค่าสมมุดว่าเป็น 15 นะครับ แต่ตำแหน่งที่สองกลับเป็น 0 เหมือนเดิม (เริ่มงงแล้วครับ ตัวแปรตัวเดียว อยู่คนล่ะตำแหน่งแต่ค่าไม่ตรงกัน)

ผมเลยลองกดปุ่ม Refresh ดูผลที่ออกมาคือ ตัวแรกมีค่า 15 เหมือนเดิม แต่ตัวที่สองเปลี่ยนค่าจาก 0 เป็น 15 (งงมากขึ้น)

ผมเข้าใจว่าตัวแปร
.(int)$news[id]. นี่รับค่ามาจาก mysql_insert_id() (ไม่รู้เข้าใจถูกหรือปล่าว)

สงสัยจะเจอปัญหาโลกแตกแล้วครับ ตัวแปรตัวเดียวกันแค่อยู่คนล่ะบรรทัดมีค่าไม่ตรงกัน

ผมเลยลองเอาบรรทัดล่างไปไว้ด้านบนบ้างผลที่ออกมาเหมือนเดิมครับ
ตัวแปร .(int)$news[id]. จะมีค่าเฉพาะบรรทัดบน

ผมเลยหาข้อสรุปไม่ได้ว่าเกิดจากอะไร
งงมากเลยครับไม่เคยเจอปัญหาอะไรแบบนี้มาก่อน


4

อ่านะ..

พอจะเดาได้ว่า เธออาจข้ามขั้นตอนอะไร

ยังไม่ค่อยเข้าใจว่าเธอมาจากหน้าไหน แต่พอจะ อธิบายแบบนี้

form จะต้องส่งค่า id ไปยังหน้าที่จะรับค่าด้วย ให้ตรวจดูว่าได้ส่งไปหรือเปล่า ลองมองหาดูว่ามันส่งไปจากไหน และ รับที่ไหน (ถ้าไม่ส่งไปย่อมรับไม่ได้) ผมบอกให้ลองใช้ print_r($_POST) หรือ print_r($_GET) ดู ว่ามีค่าที่ต้องการส่งมาหรือไม่ (สำคัญมาก เพราะถ้าไม่ีมีแก้ยังไงก็หาไม่เจอ) หรือ ถ้ามี ค่าที่ส่งมาอยู่ที่ตัวแปรไหน อาจรับผิดก็ได้ อย่าลืมตรวจ และ ทำความเข้าใจดู ว่าที่ผมอธิบายด้านบนหมายถึงอะไร

โดยปกติ ที่ผมใช้ บ่อยๆ ถ้า id=0 อาจหมายถึง ข้อมูลใหม่(insert) แต่ถ้ามี id อาจหมายถึง เป็นการแก้ไข(edit) ให้ดูด้วย

ค่า $news อาจมาจากการ query ของฐานข้อมูล ถ้า query แล้วได้ 0 อาจหมายถึง หา id ที่ต้องการไม่พบ ซึ่งจะทำให้การทำงานผิดพลาด

เธอจะเข้าใจโค้ดง่ายขึ้น ถ้าจะมองภาพรวมของมันให้ออก ว่าหน้านั้นมันทำอะไร ซึ่งโดยปกติ ก็ให้สังเกตจากชื่อไฟล์แล้วเดาขั้นตอนว่า ถ้าเป็นเธอ หน้านั้นๆควรจะมีการทำงานอย่างไร (การเขียนโปรแกรมต้องเป็นไปตามลำดับขั้น ซึ่งภาพรวมของมันโดยทั่วๆไปของแต่ละคนจะเหมือนๆกัน ต่างกันแค่เทคนิคที่ใช้) แล้วค่อยๆ มาหาว่าแต่ละบรรทัด คือ ขั้นตอนไหนของการทำงาน ซึ่งถ้าเธอไปมองหาทีละบรรทัด อาจจะเข้าใจยาก ยกตัวอย่างเช่น การมอง บรรทัด if ถ้ามองทีละบรรรทัด คงดูไม่รู้เรื่อง ต้องมองตั้งแต่ if จนถึง else และ จนจบฟังก์ชั่น

สรุป $news[id] ไม่มีค่า อาจเกิดจากสาเหตุ

1.ไม่มีค่าส่งมา
2.เป็นการเพิ่มข้อมูลใหม่
3.ไม่พบข้อมูลที่ต้องการแก้ไข

ปกติแล้วถ้าเป็นการอัปโหลด id ต้องมีเสมอดังนั้น ต้องหาให้ได้ว่าหายไปที่ตรงไหน อาจหายไปตั้งแต่หน้าก่อนหน้าก็ได้
5

ขอบคุณอาจารมากครับที่แนะนำวิธีปฏิบัติ

ผมคงจะต้องเริ่มไล่การทำงานมาใหม่ตั้งแต่ต้น

ต้องกลับไปเริ่มมาใหม่จาก 0

อิ อิ อยากกว่าที่คิดมากเลย
6
^