import ข้อมูลเข้าระบบ

ได้ลองหากระทู้อันเก่าแล้ว แต่ไม่พบขออนุญาตตั้งคำถามเดิมนะค่ะ  คือที่ถามเรื่องการ insert ข้อมูลที่ดึงมาจากฐานแล้วเก็บเข้าไปใหม่ในตารางตัวใหม่  จากโค้ดนี้นะค่ะ 

include("connect.php");
$count_cme = count($cment); 
$chebx = count($ch);
$check = array();

$date_add = date('Y-m-d H:i:s');

$add_ap = mysql_query("SELECT * FROM ap where branch='$branch_id'"); 

for ($i=0;$i<count($ch);$i++) {
$id_ap = $ch[$i];


$add_apnew = mysql_query("INSERT INTO ap_remark (id_ap_old,remark,date_add) VALUES ('$id_ap','$count_cme[$n]','$date_add')");   
     
   } 

ทำอย่างไรค่าของฟิลด์ id_ap_old, remark นี้ก็ไม่ลงนะค่ะไม่รู้เป็นเพราะอะไร ขอความกรุณาช่วยดูหน่อยนะค่ะ งมมาหลายวันแล้วค่ะ

16 ต.ค. 2551 14 2,420

ง่ายๆ เลยครับ เผมือนเดิม คือ ทดลองทำคำสั่งนี้บน phpMyAdmin หลังจากแทนค่าตัวแปรมาแล้ว

INSERT INTO ap_remark (id_ap_old,remark,date_add) VALUES ('$id_ap','$count_cme[$n]','$date_add')

การทดลอง query บน phpMyAdmin จะช่วยหาจุดบกพร่องของ query ได้ดีกว่า การดู error บน php ครับ

ผมตอบคำถามนี้ไม่ได้ เพราะ การ insert ข้อมูลที่ไม่ถูกต้อง อาจมีปัญหาจาก หลายประการ เช่น มีเครื่องหมาย ' หร์อ " ในข้อมูล (ควรเป็น \' หรือ \") หรือ ชนิดของข้อมูลไม่ถูกต้อง หรือ อาจมีฟิลด์ที่ต้องกำหนดเสมอใน query (not null) ซึ่งสิ่งเหล่านี้ ไม่ได้บอกมาในกระทู้

#1

อาจารย์ครับผมใช้วิธีนี้ตรวจสอบ คือ ให้ echo query ที่ต้องการ เช่น

$strSQL = "INSERT INTO ap_remark (id_ap_old,remark,date_add) VALUES ('$id_ap','$count_cme[$n]','$date_add')";

echo $strSQL;

โดยยังไม่ต้องให้เกิดผลลัพธ์ ถ้าได้ string ตามที่ต้องการ การ query ก็น่าจะไม่มีปัญหานะครับ

 

#2

ข้อมูลลง Table แล้วค่ะ  แต่มันติดปัญหาข้อมูลตัวแรกจะไม่เก็บลง Table ให้ แต่ตัวอื่นๆ ก็เก็บลงได้ตามปกติ อย่างเช็คเลือกรายการทั้งหมด 5 รายการ ค่าของตัวแรกจะได้ค่า 0 เสมอ แต่อีก 4 รายการใน table เก็บค่าตามที่ได้ระบุเข้าไปค่ะ  ตามโค้ดนี้นะค่ะ

$add_ap = mysql_query("SELECT * FROM ap where branch='$branch_id'"); 
echo "<br>add_ap=".$add_ap;

 for ($i=$id_ap;$i<count($ch);$i++) {
 $apid = $ch[$i];
 $ment = $cment[$i];
 $bra = $branch[$i];
 
  
    echo "<br>
comment = ".$ment;
             echo "<br><br>id_ap =".$apid;

$add_apnew ="INSERT INTO ap_remark (id_ap_old,date_add,branch,remark)";
$add_all = $add_apnew."values ('$apid','$date_add','$branch_id','$ment')" or die ("Add ข้อมูลลง Table ไม่ได้ ");
$dbquery = mysql_query($add_all); 
echo $add_all;
 }

 

#3

ได้ลองทำการ query ค่าที่ได้จาก $add_all ที่ echo ออกมาได้บน phpMyAdmin หรือยังครับ ถ้ายัง ลองทำดูก่อนนะครับ

#4

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

#5

$add_all = $add_apnew."values ('$apid','$date_add','$branch_id','$ment')" or die ("Add ข้อมูลลง Table ไม่ได้ ");

ถ้าดูจากประโยคที่ให้มานะ

#6

ได้ทำดูแล้วค่ะ  ยังไงมันก็ยังเก็บลงเหมือนเดิมคือตัวแรกไม่เก็บค่ะ

#7

555+++

ลอง echo เอาแถวแรกที่ไม่เก็บมาดูครับ

อ้อ echo แล้วก็เอาค่าที่ได้ไป query บน phpMyAdmin ดูครับ

ลองตรวจสอบว่า อาจมีค่าซ้ำ อาจมีบางค่าที่เป็น NULL ชนิดของข้อมูลไม่ถูกต้อง หรือ ความยาวของข้อมูลไม่ถูกต้อง ก็ได้ครับ เอาแต่ตรวจ PHP ไม่ดูที่ SQL เดี๋ยวจะกลายเป็นหญ้าปากคอกไป

#8

ระบบมองเป็นค่าเปล่าไม่เก็บ id และข้อความเพิ่มเติมที่ได้กรอกเข้าไป

#9

กรรม ลบผิด ขอใหม่อีกที

#10

สังเกตได้ว่าเลือกมา 3 ตัว  ตัวที่ 1 ไม่ลงค่า id_ap_old กับ remark ให้ค่ะ ช่วยดูหน่อยค่ะ

id_ap = 
INSERT INTO ap_remark (id_ap_old,date_add,branch,remark) values ('','2008-10-29 11:47:37','100','')comment = บันทึกทดสอบตัวที่2
id_ap = 4308
INSERT INTO ap_remark (id_ap_old,date_add,branch,remark) values ('4308','2008-10-29 11:47:37','100','บันทึกทดสอบตัวที่2')comment = บันทึกทดสอบตัวที่3
id_ap = 4321
INSERT INTO ap_remark (id_ap_old,date_add,branch,remark) values ('4321','2008-10-29 11:47:37','100','บันทึกทดสอบตัวที่3')
 

#11

นั่นสิ ก็รู้อยู่แล้วว่าข้อมูลไม่ครบถ้วน ก็ย้อนกลับไปตรวจสอบที่มาของข้อมูล ว่ามันมีมั้ย มันหายไปตรงไหน หรือว่า ข้อมูลนี้ใน db ต้นทางไม่มี ด้ลอง นำ query แรกไป ทดสอบบน phpMyAdmin หรือยัง ว่ามันเข้ามั้ย ถ้ามันไม่เข้าตรวจสอบว่า มันแจ้งข้อผิดพลาดว่า อะไร

#12

อาจารย์ช่วยดูให้หน่อยค่ะว่า  ทำอย่างไรให้มันวนลูปค่าเข้ากับตัวนี้ได้ for ตัวนี้มี 2 ตัว ตามโค้ดนี้ค่ะ

for ($i=0;$i<count($ch);$i++) {
      $apid = $ch[$i];
      //$ment = $cment[$i];
      $bra = $branch[$i];
      $ment = $cment[$c]; 
      echo "id ตัวที่ $i =".$apid."<br>
";
            
     } //$xment = $ment[$i];   /////////// for ตัวนี้เก็บค่า id ตัวเดียวในตาราง  แต่ for ตัวต่อไปเก็บได้ครบตามจำนวนที่กรอกเข้าไป
      

      for($c=0;$c<count($cment);$c++)
       {
        $ment = $cment[$c];      
                        echo "ตัวที่ $c = ".$ment."<br>
";

if(($apid != "") && ($ment != ""))
      //if(($date_de == "01") && ($tot == "sumt"))   
         { 
          
        $add_apnew ="INSERT INTO ap_remark (id_ap_old,date_add,branch,remark)";
        $add_all = $add_apnew."values ('$apid','$date_add','$branch_id','$ment')" or die ("Add ข้อมูลลง Table ไม่ได้ ");
        $dbquery = mysql_query($add_all);           
        }  echo "<br>".$add_all."<br>";
    
     } 

ช่วยดูให้หน่อยค่ะ จะปิด for ตรงไหนค่ามันถึงจะเข้าได้เท่ากัน ขอเถอะค่ะงงมาหลายวันมากกกก

 

 

#13

น่าจะผิดตั้งแต่ตอนรับส่งค่า $ch,$branch และ $cment แล้ว ลองใช้คำสั่ง print_r ว่า ค่าทั้ง 3 สอดคล้องกันหรือไม่ครับเช่น $ch[0],$branch[0] และ $cment[0] ถูกต้องหรือเปล่า

ส่วนอื่นๆ ก็น่าจะถูกต้องดี จะมีก็แต่ค่าเหล่านี้ถูกต้องหรือไม่

#14
ความคิดเห็น
ไฟล์อัปโหลด ชนิด jpg, jpeg ขนาดไฟล์ไม่เกิน 1024
^