ยินดีต้อนรับคุณ, บุคคลทั่วไป กรุณา เข้าสู่ระบบ หรือ ลงทะเบียน

เข้าสู่ระบบด้วยชื่อผู้ใช้ รหัสผ่าน และระยะเวลาในเซสชั่น

ThaiSEOBoard.comพัฒนาเว็บไซต์Programmingถามเรื่องบันทึกข้อมูลลง db 2 ข้อมูลในครั้งเดียว
หน้า: [1]   ลงล่าง
พิมพ์
ผู้เขียน หัวข้อ: ถามเรื่องบันทึกข้อมูลลง db 2 ข้อมูลในครั้งเดียว  (อ่าน 1476 ครั้ง)
0 สมาชิก และ 1 บุคคลทั่วไป กำลังดูหัวข้อนี้
rtee
Newbie
*

พลังน้ำใจ: 10
ออฟไลน์ ออฟไลน์

กระทู้: 89



ดูรายละเอียด
« เมื่อ: 24 สิงหาคม 2012, 15:53:14 »

คือ ผมมีฟอร์มที่ให้แนบรูปภาพส่งไปตามฟอร์ม post ได้ด้วย
แล้วพอเข้าไปที่ไฟล์สคริปต์
ก็จะให้บันทึกข้อมูลไฟล์รูปเหล่านี้ โดยให้ duplicate ตัวเองเป็น 2 ไฟล์ และเก็บข้อมูลลงฐานข้อมูลเป็น 2 records ครับ..

อืม เดี๋ยวจะงง เอางี้ เดี๋ยวให้ดูโค้ดนะครับ

อันนี้เป็นฟอร์มสำหรับโพสรูปขึ้นไป
โค๊ด:
<form method="post" action="script.php" enctype="multipart/form-data">
<input type="file" name="file" />
<input type="submit" />
</form>

อันนี้เป็นไฟล์สคริปต์ //ข้ามขั้นตอนการติดต่อฐานข้อมูลนะครับ เพราะจะมีอีกไฟล์ทำหน้าที่ติดต่อฐานข้อมูลอยู่แล้ว
โค๊ด:
<?php
$file 
$_FILES["file"];
if (
$file["size"]>0) {
  for(
$i=1;$i<=2;$i++){
    
$filename $i."_".$file["name"];
    if (
copy($file["tmp_name"],"upload/"$filename)){
      
mysql_query("INSERT INTO table (filename) VALUES ('".$filename."')");
      
$id mysql_insert_id();
    }
  }
}
?>


แต่ปัญหาก็คือ...
ไฟล์ที่ 1 สามารถอัพโหลดได้ปกติ และบันทึกข้อมูลลงฐานข้อมูลได้ปกติ
แต่
ครั้งที่ 2 มันเฟล และฟ้องว่า failed to open stream: No such file or directory

เลยอยากรู้ว่า มันจะเกี่ยวข้องกับการประกาศตัวแปร $file หรือไม่ครับ ?
บันทึกการเข้า
siammbk
ก๊วนเสียว
*

พลังน้ำใจ: 38
ออฟไลน์ ออฟไลน์

กระทู้: 237



ดูรายละเอียด เว็บไซต์
« ตอบ #1 เมื่อ: 27 สิงหาคม 2012, 18:16:01 »

ดูที่ database ก่อนคับว่า ตรง id ได้ตั้งไว้หรือป่าว
และตรง id เนี่ย ได้ตั้งให้เป็น auto_increment หรือป่าว
บันทึกการเข้า

รับออกแบบเว็บไซต์ ทุกรูปแบบ งานใหญ่ๆ ระบบยากๆ ราคาแรงๆ คุยกันคับ
line : siammbk
tel : 095-675-8614
kobkung
Verified Seller
หัวหน้าแก๊งเสียว
*

พลังน้ำใจ: 103
ออฟไลน์ ออฟไลน์

กระทู้: 1,312



ดูรายละเอียด เว็บไซต์
« ตอบ #2 เมื่อ: 27 สิงหาคม 2012, 22:09:24 »

เอไม่เคยลองแบบนี้

ลอง echo ค่าออกมาดูว่าครั้งที่ 2 temp ของ file ยังอยู่ไหม
$filename = $i."_".$file["name"];
echo $filename;

กับ ตัวนี้ $file["tmp_name"]
บันทึกการเข้า

เราเป็นบริษัท รับทำเว็บไซต์ แก้เว็บเดิม เขียน Php+Mysql+jQuery+css+bootstrap  งานตามสั่ง ประสบการณ์ จะ 19 ปี ละจ้า
Smilephp.com รับทำเว็บไซต์บริษัท e-commerce + ระบบชำระเงิน paypal,ธนาคาร  เว็บบริษัท เว็บขายของ ระบบจอง เช่า เขียน PHP ได้ทุกแนว  ช่วงนี้เน้นรับงาน ERP ระบบเอกสารบริษัท ,บัญชี ,  Barcode, Stock , Warehouse , Logistic ติดต่อ 086-364-5262

งดตอบคนทำเว็บนอกลู่นอกทาง ไม่ทำเว็บ WP ปั่นแชร์ เว็บประมูล สคริปปั่นใดๆ ไม่ทำเว็บบอลและพ
icez
Verified Seller
หัวหน้าแก๊งเสียว
*

พลังน้ำใจ: 296
ออฟไลน์ ออฟไลน์

กระทู้: 2,886



ดูรายละเอียด
« ตอบ #3 เมื่อ: 27 สิงหาคม 2012, 22:13:40 »

// ไม่เกี่ยวกับคำถาม
วิธีย้าย file ที่ upload มาให้ใช้คำสั่ง move_uploaded_file ครับ อย่าใช้ copy เสี่ยงต่อการถูก inject
« แก้ไขครั้งสุดท้าย: 27 สิงหาคม 2012, 22:13:52 โดย icez » บันทึกการเข้า

THZHost SSD Hosting ไทย/สิงคโปร์ พร้อม firewall ป้องกันการยิงเว็บ + scan ไวรัสในเว็บ
c0untry-m@n
ก๊วนเสียว
*

พลังน้ำใจ: 27
ออฟไลน์ ออฟไลน์

กระทู้: 261



ดูรายละเอียด
« ตอบ #4 เมื่อ: 27 สิงหาคม 2012, 22:41:51 »

บรรทัดนี้พิมพ์ตกไปหรือเปล่าครับ

โค๊ด:
if (copy($file["tmp_name"],"upload/"$filename)){

น่าจะแบบนี้หรือเปล่า แต่ error คนละตัว ไม่น่าเกี่ยวกับคำถามนี้

โค๊ด:
if (copy($file["tmp_name"],"upload/".$filename)){

เอาเป็นว่าเผื่อพิมพ์ตกไปจริงๆ ละกันครับ
บันทึกการเข้า
massacre
Newbie
*

พลังน้ำใจ: 4
ออฟไลน์ ออฟไลน์

กระทู้: 48



ดูรายละเอียด
« ตอบ #5 เมื่อ: 28 สิงหาคม 2012, 02:54:30 »

copy tmp -> file1
copy file1 -> file2
ก็น่าจะได้แล้วครับ
บันทึกการเข้า
EMINEM
คนรักเสียว
*

พลังน้ำใจ: 3
ออฟไลน์ ออฟไลน์

กระทู้: 106



ดูรายละเอียด เว็บไซต์
« ตอบ #6 เมื่อ: 28 สิงหาคม 2012, 08:30:08 »


อันนี้ผมมั่วนะครับ  wanwan004

<?php
$file1 = $_FILES["file"];
$file2 = $_FILES["file"];

if ($file1["size"]>0) {

    $filename1 = "1_".$file1["name"];
    $filename2 = "2_".$file2["name"];
    if (copy($file1["tmp_name"],"upload/"$filename1)&&copy($file2["tmp_name"],"upload/"$filename2)){
      mysql_query("INSERT INTO table (filename) VALUES ('".$filename1."')");
      mysql_query("INSERT INTO table (filename) VALUES ('".$filename2."')");
      $id = mysql_insert_id();
    }

}
?>


แต่ผมว่า
แบบนี้น่าจะดีกว่าครับ
copy tmp -> file1
copy file1 -> file2
ก็น่าจะได้แล้วครับ
« แก้ไขครั้งสุดท้าย: 28 สิงหาคม 2012, 08:38:58 โดย EMINEM » บันทึกการเข้า

ไม่มีอาชีพไหนที่ต่ำต้อย มีเพียงทัศนคติเท่านั้นที่ต้อยต่ำ
เจอคนเก่งจงเรียนรู้จากพวกเขา
เจอคนงี่เง่าให้เอามาสอนตัวเอง
หน้า: [1]   ขึ้นบน
พิมพ์