ช่วยด้วยครับ Insert ไม่ได้ซักที คือจะรับ TextFile เข้ามาแล้วมาเช็คกับ Table ผมถ้าเลขไม่ตรงกัน ก็ให้ทำการ Insert เพิ่มหนะครับ
สร้างตารางดังนี้ คุณจะสร้างเองหรือไม่ก็ใช้ไฟล์ create_db_tbl.php เป็นตัวช่วยสร้างก็ได้ครับ
1. tbl_test ในฐานข้อมูล test ซึ่งประกอบด้วยฟิลด์
- id ประเภทฟิลด์ int(5) เป็นคีย์หลัก
***********************************************แค่นี้ก็ลองรันไฟล์ test.php ดู แล้วคุณจะรู้คำตอบ
***หมายเหตุ : กรณีนี้ใช้ได้กับคีย์ที่เป็นคีย์หลักได้ถูกต้องแม่นยำ ******
*****************************************************************************************************************
ไฟล์สร้างฐานข้อมูล create_db_tbl.php
<?php
$conn=mysql_connect("localhost","","");
$chkdb=mysql_select_db("test");
//ตรวจสอบว่ามีฐานข้อมูลชื่อ test และตารางชื่อ tbl_test หรือไม่
if($chkdb){
//ถ้ามีฐานข้อมูล test อยู่แล้ว ให้สร้างตาราง tbl_test โดยประกอบด้วยฟิลด์ id ซึ่งเป็นคีย์หลัก
$chktbl=mysql_query("create table tbl_test(id int(5) not null,primary key(id));");
if($chktbl){
echo "สร้างตาราง tbl_test สำเร็จ<br>";
}else{
//แสดงว่ามี tbl_test อยู่ก่อนแล้ว
echo "สร้างตาราง tbl_test ไม่สำเร็จ อาจเป็นได้ว่ามี ตาราง tbl_test อยู่ก่อนแล้ว...<br>";
}
}else{
//ถ้ายังไม่มีฐานข้อมูลให้สร้างฐานข้อมูลใหม่ ชื่อ test
if(mysql_query("create database test;")){
echo "สร้างฐานข้อมูล test สำเร็จ<br>";
}else{
echo "สร้างฐานข้อมูล test ไม่สำเร็จ<br>";
}
mysql_select_db("test");
//และสร้าง tbl_test ด้วย
if(mysql_query("create table tbl_test(id int(5) not null,primary key(id));")){
echo "สร้างตาราง tbl_test สำเร็จ";
}else{
echo "สร้างตาราง tbl_test ไม่สำเร็จ";
}
}
//สิ้นสุดการตรวจสอบ ฐานข้อมูลและตาราง
mysql_close($conn);
?>
******************************************************************************************************
ไฟล์ทดสอบ test.php
<?php
//ไฟล์ตัวอย่าง
$conn=mysql_connect("localhost","","");
mysql_select_db("test");
$sql="select * from tbl_test;";
$result=mysql_query($sql);
$nrow=mysql_num_rows($result);
$chkyes=0;
$pathfile="./data.txt";
echo "<b>ชื่อและที่อยู่ไฟล์ =>".$pathfile."</b><hr>";
$arrfile=file($pathfile);
echo "ข้อมูลจาก textfile มี ".count($arrfile). " บรรทัด<br>";
for($i=0;$i<count($arrfile);$i++)//start for *
{
echo "<b><font color='#ff00ff'>บรรทัดที่ ".($i+1)."</font></b> มีข้อมูลเป็นดังนี้ => ".$arrfile[$i]."<br>";
echo "แยกบรรทัดที่ ".($i+1)." โดยใช้เครื่องหมาย \",\" ได้ข้อมูลดังนี้<br>";
//แยกไฟล์ในบรรทัดที่ i+1 ด้วยเครื่องหมาย ","
$datafile=explode(",",$arrfile[$i]);
for($j=0;$j<count($datafile);$j++){//start for **
echo $datafile[$j]."<br>";
//นำข้อมูลที่ได้ไปเปรียบเทียบในตาราง tbl_test
if($nrow>=1){//start if *
while($db=mysql_fetch_array($result))//start while
{
if($datafile[$j]==$db["id"]){//start if **
$chkyes+=1;
}//end if **
}//end while
//ถ้าข้อมูลใน textfile ไม่มีในตาราง ให้ insert
if($chkyes==0){
mysql_query("insert into tbl_test values('$datafile[$j]');");
}else{
$chkyes=0;//กำหนดค่าเริ่มต้นเป็น 0 เพื่อนำไปเช็คเงื่อนไขต่อไป
}
}else{
//ถ้าไม่มีข้อมูลในตารางเลยให้เพื่มข้อมูลใน textfile เข้าไปทั้งหมด
mysql_query("insert into tbl_test values('$datafile[$j]');");
}//end if *
}//end for **
echo "*** จบบรรทัดที่ ".($i+1)." ***<hr>";
}//end for *
echo "<font color='#ff0000'>จบการอ่านข้อมูลจาก textfile</font><hr>";
//อ่านข้อมูลในตาราง tbl_test มาแสดง
$showtbl=mysql_query("select * from tbl_test order by id asc;");
echo "<font color='#ff00ff'>".str_repeat("*",100)."</font><br><font color='#0000ff'>เป็นส่วนแสดงข้อมูลจากตาราง tbl_test ...<br>";
echo "ฟิลด์ id <br>";
while($list=mysql_fetch_array($showtbl))//start while *
{
echo $list["id"]."<br>";
}//end while *
echo "</font><font color='#ff00ff'>".str_repeat("*",100)."<br>";
echo str_repeat("*",100)."</font><br>";
echo "<font color='#ff0000'>.:: ลองสังเกตุว่า ถ้ามีข้อมูลในแต่ละบรรทัดซ้ำกันหรือซ้ำกับข้อมูลในตารางแล้วจะไม่บันทึกข้อมูลที่ซ้ำกันแต่ถ้าหากยังไม่มีข้อมูลในตารางก็จะนำข้อมูลใหม่ไป insert เข้าในตารางครับ :D</font>";
mysql_close($conn);
?>
*************************************************
ไฟล์ textfile => data.txt
1,2,3,4
** ข้อมูลขั้นด้วย เคื่องหมาย "," นะครับ
ลองคัดลอกแต่ละส่วนไปทดสอบดูครับ
Date :
7 ก.พ. 2548 08:58:41
By :
noom_programmer
Code (PHP)
<html>
<head>
<title>ThaiCreate.Com PHP & MySQL Tutorial</title>
</head>
<body>
<?
$objConnect = mysql_connect("localhost","root","root") or die("Error Connect to Database");
$objDB = mysql_select_db("mydatabase");
$strSQL = "INSERT INTO customer ";
$strSQL .="(CustomerID,Name,Email,CountryCode,Budget,Used) ";
$strSQL .="VALUES ";
$strSQL .="('".$_POST["txtCustomerID"]."','".$_POST["txtName"]."','".$_POST["txtEmail"]."' ";
$strSQL .=",'".$_POST["txtCountryCode"]."','".$_POST["txtBudget"]."','".$_POST["txtUsed"]."') ";
$objQuery = mysql_query($strSQL);
if($objQuery)
{
echo "Save Done.";
}
else
{
echo "Error Save [".$strSQL."]";
}
mysql_close($objConnect);
?>
</body>
</html>
Date :
2009-04-26 09:46:57
By :
webmaster
Load balance : Server 05