|
|
|
เรื่องการนำไฟล์ .csv อัพลง database อะครับ อยากจะทำให้มันเลือกลง table ไหนก็ได้คับ |
|
|
|
|
|
|
|
ก็น่าจะประมาณนี้
phpCSVMySQLForm.php
<html>
<head>
<title>ThaiCreate.Com PHP & CSV To MySQL</title>
</head>
<body>
<form action="phpCSVMySQLUpload.php" method="post" enctype="multipart/form-data" name="form1">
<label for="table_db">กรุณาเลือกตาราง : </label>
<select name="table_db" id="table_db">
<option value="tb1">tb1</option>
<option value="tb2">tb2</option>
<option value="tb3">tb3</option>
</select>
<br>
<br>
<input name="fileCSV" type="file" id="fileCSV">
<input name="btnSubmit" type="submit" id="btnSubmit" value="Submit">
</form>
</body>
</html>
phpCSVMySQLUpload.php
<html>
<head>
<title>ThaiCreate.Com PHP & CSV To MySQL</title>
</head>
<body>
<?PHP
$table_db = $_POST['table_db']; #รับชื่อตารางที่ต้องการเพิ่มข้อมูล
move_uploaded_file($_FILES["fileCSV"]["tmp_name"],$_FILES["fileCSV"]["name"]); // Copy/Upload CSV
$objConnect = mysql_connect("localhost","root","root") or die("Error Connect to Database"); // Conect to MySQL
$objDB = mysql_select_db("mydatabase");
$objCSV = fopen($_FILES["fileCSV"]["name"], "r");
while (($objArr = fgetcsv($objCSV, 1000, ",")) !== FALSE) {
$strSQL = "INSERT INTO $table_db ";
$strSQL .="(CustomerID,Name,Email,CountryCode,Budget,Used) ";
$strSQL .="VALUES ";
$strSQL .="('".$objArr[0]."','".$objArr[1]."','".$objArr[2]."' ";
$strSQL .=",'".$objArr[3]."','".$objArr[4]."','".$objArr[5]."') ";
$objQuery = mysql_query($strSQL);
}
fclose($objCSV);
echo "Upload & Import Done.";
?>
</table>
</body>
</html>
|
|
|
|
|
Date :
2014-07-31 15:59:42 |
By :
arm8957 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Code (PHP)
<html>
<head>
<title>ThaiCreate.Com PHP & CSV To MySQL</title>
</head>
<body>
<?PHP
$table_db = $POST['table_db'];
move_uploaded_file($_FILES["fileCSV"]["tmp_name"],$_FILES["fileCSV"]["name"]);
$objConnect = mysql_connect("localhost","root","root") or die("Error Connect to Database"); // Conect to MySQL
$objDB = mysql_select_db("mydatabase");
$objCSV = fopen($_FILES["fileCSV"]["name"], "r");
while (($objArr = fgetcsv($objCSV, 1000, ",")) !== FALSE) {
$strSQL = "INSERT INTO customer ";
$strSQL .="(CustomerID,Name,Email,CountryCode,Budget,Used) ";
$strSQL .="VALUES ";
$strSQL .="('".$objArr[0]."','".$objArr[1]."','".$objArr[2]."' ";
$strSQL .=",'".$objArr[3]."','".$objArr[4]."','".$objArr[5]."') ";
$objQuery = mysql_query($strSQL);
}
fclose($objCSV);
echo "Upload & Import Done.";
?>
</table>
</body>
</html>
ตอนนี้มันเออเร่อบรรทัดนี้อะครับ move_uploaded_file($_FILES["fileCSV"]["tmp_name"],$_FILES["fileCSV"]["name"]);
|
|
|
|
|
Date :
2014-08-01 08:23:52 |
By :
marchzmello |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
คือผมมี db ชื่อว่า mydatabase แล้วใน db นั้นมี table ยุ 3 ตัว ชื่อ customer,customer1,customer2 ซึ่งมีโครงสร้างเหมือนกันอะครับ
อยากให้ .csv เลือกลง table ไหนก็ได้อะคับ
|
|
|
|
|
Date :
2014-08-01 08:26:05 |
By :
marchzmello |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ก็ตรง Table ที่บอกมานั้น ก็ทำเป็น select เมนู option ให้ เลือก ส่งค่าไปเปลี่ยนแปลงค่าตรง table
กำลังจะเขียน Code กลับไปอ่าน คห.1
คุณ arm8957 เค้าก็ยก ตย. ชัดเจนนี่ครับ
มีการเลือกตารางก่อนทำการ import CSV ก็ชัด ๆ ครับ
ติดตรงไหนอยู่
|
|
|
|
|
Date :
2014-08-01 08:54:08 |
By :
apisitp |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
อันนี้โค๊ดทั้งหมดที่ใช้อะครับ
phpCSVMySQLForm.php
<html>
<head>
<title>Browse CSV</title>
</head>
<body>
<form action="phpCSVMySQLUpload.php" method="post" enctype="multipart/form-data" name="form1">
<label for="table_db">Select Table : </label>
<select name="table_db" id="table_db">
<option value="customer">customer</option> //ชื่อ table ครับ
<option value="customer1">customer1</option>
<option value="customer2">customer2</option>
</select>
<br>
<br>
<input name="fileCSV" type="file" id="fileCSV">
<input name="btnSubmit" type="submit" id="btnSubmit" value="Submit">
</form>
</body>
</html>
phpCSVMySQLUpload.php
<html>
<head>
<title>ThaiCreate.Com PHP & CSV To MySQL</title>
</head>
<body>
<?PHP
$table_db = $POST['table_db'];
copy($_FILES["fileCSV"]["tmp_name"],$_FILES["fileCSV"]["name"]); // Copy/Upload CSV
//move_uploaded_file($_FILES["fileCSV"]["tmp_name"],$_FILES["fileCSV"]["name"]); ถ้าผมใช้เป็น copy ไม่ error แต่ข้อมูลก้ไม่ได้อัพลง table อะครับ แต่ขึ้นว่า import done
$objConnect = mysql_connect("localhost","root","root") or die("Error Connect to Database"); // Conect to MySQL
$objDB = mysql_select_db("mydatabase");
$objCSV = fopen($_FILES["fileCSV"]["name"], "r");
while (($objArr = fgetcsv($objCSV, 1000, ",")) !== FALSE) {
$strSQL = "INSERT INTO customer ";
$strSQL .="(CustomerID,Name,Email,CountryCode,Budget,Used) ";
$strSQL .="VALUES ";
$strSQL .="('".$objArr[0]."','".$objArr[1]."','".$objArr[2]."' ";
$strSQL .=",'".$objArr[3]."','".$objArr[4]."','".$objArr[5]."') ";
$objQuery = mysql_query($strSQL);
}
fclose($objCSV);
echo "Upload & Import Done.";
?>
</table>
</body>
</html>
ผมต้องไปเขียนตรงไหนเพิ่มอะครับบบ มือใหม่มากจิงๆ รบกวนแนะนำด้วยฮะ
|
|
|
|
|
Date :
2014-08-01 10:12:21 |
By :
marchzmello |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
เรื่องการอัพโหลด แนะนำให้ใช้ move_uploaded_file() นะครับ เพราะมันจะดีกว่า copy() ในเรื่องความปลอดภัย และแนะนำให้เก็บไฟล์ที่อัพโหลดไว้ในโฟล์เดอร์สักโฟล์เดอร์นึงเพื่อความเป็นระเบียบ และจัดการง่ายครับ
แนวทางการปฏิบัติในการแก้ไข คือ
1. สร้างโฟล์เดอร์มาเพื่อเก็บไฟล์ที่อัพโหลด และเซ็ต petmission ให้เป็น 777
2. แก้ไขโค้ดในหน้า phpCSVMySQLUpload.php ตามด้านล่างครับ
3. หากมี error เอา error มาดูครับ
ส่วนโค้ดก็ประมาณนี้
Code (PHP)
<html>
<head>
<title>ThaiCreate.Com PHP & CSV To MySQL</title>
</head>
<body>
<?PHP
$table_db = $POST['table_db'];
move_uploaded_file($_FILES["fileCSV"]["tmp_name"],'upload_csv/'.$_FILES["fileCSV"]["name"]); // Copy/Upload CSV
$objConnect = mysql_connect("localhost","root","root") or die("Error Connect to Database"); // Conect to MySQL
$objDB = mysql_select_db("mydatabase");
$objCSV = fopen('upload_csv/'.$_FILES["fileCSV"]["name"], "r");
while (($objArr = fgetcsv($objCSV, 1000, ",")) !== FALSE) {
$strSQL = "INSERT INTO $table_db ";
$strSQL .="(CustomerID,Name,Email,CountryCode,Budget,Used) ";
$strSQL .="VALUES ";
$strSQL .="('".$objArr[0]."','".$objArr[1]."','".$objArr[2]."' ";
$strSQL .=",'".$objArr[3]."','".$objArr[4]."','".$objArr[5]."') ";
$objQuery = mysql_query($strSQL);
}
fclose($objCSV);
echo "Upload & Import Done.";
?>
</table>
</body>
</html>
|
|
|
|
|
Date :
2014-08-01 14:11:04 |
By :
arm8957 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
พี่ครับ ให้สร้าง folder ไว้ในไหนอะคับ
|
|
|
|
|
Date :
2014-08-04 14:16:07 |
By :
marchzmello |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ใน root ครับ ตามตัวอย่างผมตั้งชื่อ upload_csv คุณจะเปลี่ยนเป็นชื่ออื่นก็ได้ครับ ถ้าทดสอบบนเครื่องตัวเองก็ไม่ต้องเซ็ต permission ถ้าบนโฮสก็เซ็ตให้เป็น 777 ครับ
|
|
|
|
|
Date :
2014-08-04 15:38:03 |
By :
arm8957 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
พี่ครับตอนนี้ไม่ขึ้น error ขึ้น Upload & Import Done. แต่ว่าข้อมูลมันไม่ลงใน table ที่เลือกอะครับ
|
|
|
|
|
Date :
2014-08-05 08:36:29 |
By :
marchzmello |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
เขียนสคริปไว้ยังไงครับตอนนี้
|
|
|
|
|
Date :
2014-08-05 09:29:59 |
By :
arm8957 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ไฟล์ phpCSVMySQLUpload.php ผมแก้ตามที่พี่บอกแล้วคับ ละก็ทำการสร้าง folder ที่ root ตอนรันก้ไม่เออเร่อแล้วครับ คิดว่าน่าจะเป็นที่หน้าฟอร์มไฟล์ phpCSVMySQLForm.php มากกว่าอะคับ ไม่ทราบว่าตรงที่ผม คอมเม้นชื่อ table ผมใส่ค่าผิดรึเปล่าอะคับ
echo $table_db ออกมาดูมันไม่มีค่าอะไรเลยอะคับ
phpCSVMySQLForm.php
<html>
<head>
<title>Browse CSV</title>
</head>
<body>
<form action="phpCSVMySQLUpload.php" method="post" enctype="multipart/form-data" name="form1">
<label for="table_db">Select Table : </label>
<select name="table_db" id="table_db">
<option value="customer">customer</option> //ชื่อ table ครับ
<option value="customer1">customer1</option>
<option value="customer2">customer2</option>
</select>
<br>
<br>
<input name="fileCSV" type="file" id="fileCSV">
<input name="btnSubmit" type="submit" id="btnSubmit" value="Submit">
</form>
</body>
</html>
|
|
|
|
|
Date :
2014-08-05 09:58:00 |
By :
marchzmello |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ขอดูหน้านี้ครับ phpCSVMySQLUpload.php
|
|
|
|
|
Date :
2014-08-05 10:58:39 |
By :
arm8957 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
phpCSVMySQLUpload.php
<html>
<head>
<title>ThaiCreate.Com PHP & CSV To MySQL</title>
</head>
<body>
<?PHP
$table_db = $POST['table_db'];
move_uploaded_file($_FILES["fileCSV"]["tmp_name"],'upload_csv/'.$_FILES["fileCSV"]["name"]);
$objConnect = mysql_connect("localhost","root","root") or die("Error Connect to Database"); // Conect to MySQL
$objDB = mysql_select_db("mydatabase");
$objCSV = fopen($_FILES["fileCSV"]["name"], "r");
while (($objArr = fgetcsv($objCSV, 1000, ",")) !== FALSE) {
$strSQL .= "INSERT INTO $table_db ";
$strSQL .=" (CustomerID,Name,Email,CountryCode,Budget,Used) ";
$strSQL .="VALUES ";
$strSQL .="('".$objArr[0]."','".$objArr[1]."','".$objArr[2]."' ";
$strSQL .=",'".$objArr[3]."','".$objArr[4]."','".$objArr[5]."') ";
$objQuery = mysql_query($strSQL);
}
fclose($objCSV);
echo "Upload & Import Done.";
?>
</table>
</body>
</html>
ตามนี้ครับ ขอบคุณมากนะคับที่คอยตอบตลอดเลยยย :')
|
|
|
|
|
Date :
2014-08-05 11:10:34 |
By :
marchzmello |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
คุณเอาโค้ดไปไม่หมดนี่ครับ เมื่อคุณอัพโหลดไฟล์ CSV ไปเก็บในโฟล์เดอร์ upload_csv เวลาเรียกมาใช้งานก็ต้องระบุพาทให้ถูกด้วย
ผมจะลอง debug แต่ละส่วนดูนะครับ แต่คุณก็ต้องทำความเข้าใจโค้ดแต่ละบรรทัดด้วย ไม่งั้นคุณก็ทำเองไม่ได้
Code
<html>
<head>
<title>ThaiCreate.Com PHP & CSV To MySQL</title>
</head>
<body>
<?PHP
$table_db = $_POST['table_db'];
if(empty($table_db)){
exit('ไม่มีชื่อตารางฐานข้อมูลส่งมาครับ ลองเช็คหน้าฟอร์มดูนะครับ');
} else {
$upFile = move_uploaded_file($_FILES["fileCSV"]["tmp_name"],'upload_csv/'.$_FILES["fileCSV"]["name"]);
if(!$upFile){
exit('ไม่สามารถอัพโหลดไฟล์ได้ครับ ลองดูนะครับว่าได้สร้างโฟล์เดอร์ upload_csv แล้วหรือยัง และระบุพาทถูกต้องหรือไม่');
} else {
$objConnect = mysql_connect("localhost","root","root") or die("Error Connect to Database"); // Conect to MySQL
$objDB = mysql_select_db("mydatabase");
$objCSV = fopen('upload_csv/'.$_FILES["fileCSV"]["name"], "r");
while (($objArr = fgetcsv($objCSV, 1000, ",")) !== FALSE) {
$strSQL = "INSERT INTO $table_db ";
$strSQL .= " (CustomerID,Name,Email,CountryCode,Budget,Used) ";
$strSQL .= "VALUES ";
$strSQL .= "('".$objArr[0]."','".$objArr[1]."','".$objArr[2]."' ";
$strSQL .= ",'".$objArr[3]."','".$objArr[4]."','".$objArr[5]."') ";
$objQuery = mysql_query($strSQL) or die(mysql_error());
}
fclose($objCSV);
echo "Upload & Import Done.";
}
}
?>
</table>
</body>
</html>
|
ประวัติการแก้ไข 2014-08-05 11:55:25
|
|
|
|
Date :
2014-08-05 11:54:52 |
By :
arm8957 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ได้แล้วครับ เป็นเพราะว่าผมระบุพาทไม่ถูกต้องแน่ๆเลย ขอบคุณมากๆนะครับผม อิอิ
|
|
|
|
|
Date :
2014-08-05 12:55:33 |
By :
marchzmello |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Load balance : Server 04
|