PHP ช่วยข้าน้อยด้วย T-T

เริ่มโดย waterandthenbrokenparting, 04 พฤษภาคม 2009, 16:55:27

หัวข้อก่อนหน้า - หัวข้อถัดไป

0 สมาชิก และ 1 ผู้มาเยือน กำลังดูหัวข้อนี้

waterandthenbrokenparting

code : http://www.uploadd.com/download.aspx?pku=71E6C73ECZWUHMCHB5CDZ1QW26SQX

คือผมต้องการเช็คว่าถ้า file ที่อัพโหลด file ไหนไม่ error (หมายถึงต้องไม่ error อย่างน้อย 1 ไฟล์จาก 4 ไฟล์)
ก็ใ้ห้ทำฟั่งชั่น process form ก่อนอ่ะครับ
แล้วค่อยแจ้ง error โดยฟังชั่น show_error อีกที

include("17-3.php");

if (!empty($_POST["submit"])) {
   if (check_file($err)) {
      process_form();
   } else {
      show_error($err["error"]);
      show_error($err["type"]);
      show_error($err["move"]);
      html_form();
   }
} else {
   html_form();
}

ตรงสีแดงนั่นฟังชั่นจะคืนค่ามาเป็น true ถ้าไม่มี error และ false ถ้ามี error ครับ
รูปแบบการเก็บค่า error ค่าเป็นแบบนี้ครับ


$err = array(
"error" => array(),
"type" => array(),
"move" => array()
);


17-3.php

function show_error($show_e) {
if (!count($show_e) > 0) {
return false;
} else {
foreach ($show_e as $skey => $svalue) {
echo "$svalue<br>\n";
}
}
}

function check_file(&$err) {
global $limit_size, $err;
$limit_size = "100000";
$err = array(
"error" => array(),
"type" => array(),
"move" => array()
);
foreach ($_FILES["pic"]["error"] as $ekey => $evalue) {

switch ($evalue) {
case 1:
case 2:
$err["error"][$ekey] = "ขนาดของไฟล์ที่ $ekey มากกว่า " . bytestokb($limit_size) . " KB";
break;
case 3:
$err["error"][$ekey] = "ไฟล์ที่ $ekey ถูกส่งมาแค่เพียงบางส่วน";
break;
case 4:
$err["error"][$ekey] = "ไม่มีการส่งไฟล์ที่ $ekey มา";
break;
}

if ($evalue == 0) {
if (!(($_FILES["pic"]["type"][$ekey] == "image/gif") || ($_FILES["pic"]["type"][$ekey] == "image/pjpeg") || ($_FILES["pic"]["type"][$ekey] == "image/jpeg") || ($_FILES["pic"]["type"][$ekey] == "image/x-png") || ($_FILES["pic"]["type"][$ekey] == "image/png"))) {
$err["type"][$ekey] = "ไฟล์ที่ $ekey ไม่ใช่รูปภาพ";
}
}
}

switch (empty($err["error"]) && empty($err["type"]) && empty($err["move"])) {
case true:
return true;
break;
case false:
return false;
break;
}

}

function html_form() {
global $limit_size;
echo <<<HTMLBLOCK
<form action="{$_SERVER["PHP_SELF"]}" method="POST" enctype="multipart/form-data" name="img_file">
<input type="hidden" name="MAX_FILE_SIZE" value="{$limit_size}">
<input type="file" name="pic[]"><br>
<input type="file" name="pic[]"><br>
<input type="file" name="pic[]"><br>
<input type="file" name="pic[]"><br>
<input type="submit" name="submit" value="upload">
</form>
HTMLBLOCK;
}

function print_array($show) {
echo "<pre>";
print_r($show);
echo "</pre>";
}

function process_form() {
$w = 100;
$h = 100;
foreach ($_FILES["pic"]["tmp_name"] as $tmpkey => $tmpvalue) {
$dir_pic = "upload/" . time() . "-" . $_FILES["pic"]["name"][$tmpkey];

if(!move_uploaded_file($_FILES["pic"]["tmp_name"][$tmpkey], $dir_pic)) {
$err["move"][$tmpkey] = "ไม่สามารถย้ายไฟล์ที่ $tmpkey ได้";
} else {
echo "<B>รายละเอียดไฟล์ที่ $tmpkey : </B><br>\n";
echo "ชื่อ : {$_FILES["pic"]["name"][$tmpkey]}<br>\n";
echo "ขนาดไฟล์ : " . bytestokb($_FILES["pic"]["size"][$tmpkey]) . " KB<br>\n";
echo "ประเภทไฟล์ : {$_FILES["pic"]["type"][$tmpkey]}<br>\n";
echo "<img src=\"$dir_pic\" witdh=\"{$w}\" height=\"{$h}\"><br>\n";
}

}
}

function bytestokb($num) {
return round($num/1024);
}
รักแท้แพ้ใกล้ชิด

pugkung

เดี่ยวรอคุณโจ้ มาตอบ   :D

ถ้าเค้าว่างนะ   :P

waterandthenbrokenparting

ดันหน่อยน้าผมเขียนอธิบายใหม่แล้ว :)
รักแท้แพ้ใกล้ชิด

DJJome

อัด code เป็น .zip ให้หน่อยสิ ขี้เกียจ copy & past ไปลอง

waterandthenbrokenparting

รักแท้แพ้ใกล้ชิด

waterandthenbrokenparting

รักแท้แพ้ใกล้ชิด

waterandthenbrokenparting

รอรอรอท่านอับดุลหายไปไหนหนอ :-[
รักแท้แพ้ใกล้ชิด

DJJome

ขอทำงานก่อนนะครับ
เดี๋ยวดูให้ ไม่ต้องห้่งบ


pjgunner

attr value ของ MAX_FILE_SIZE ไม่ออกคับ
[direct=http://www.pjgunner.com]โปรเจคกันเนอร์ รับทำโปรเจค เว็บไซต์[/direct]
I miss u๊.

pjgunner

แล้วทำไมต้องใส่ case: 1 ด้วยล่ะคับ  ???
[direct=http://www.pjgunner.com]โปรเจคกันเนอร์ รับทำโปรเจค เว็บไซต์[/direct]
I miss u๊.

pjgunner

แล้วทำไมต้องใส่ case: 1 ด้วยล่ะคับ  ???

ถ้าใส่ก็น่าจะ break; ด้วย


ปล.โทษทีกดผิดปุ่ม  :-X ไม่ได้ตั้งใจปั้มนะ
[direct=http://www.pjgunner.com]โปรเจคกันเนอร์ รับทำโปรเจค เว็บไซต์[/direct]
I miss u๊.

waterandthenbrokenparting

เอามาเทียบค่าครับว่าอัพโหลดสำเร็จหรือไม่

switch ($evalue) {
case 1:
case 2:
$err["error"][$ekey] = "ขนาดของไฟล์ที่ $ekey มากกว่า " . bytestokb($limit_size) . " KB";
break;
case 3:
$err["error"][$ekey] = "ไฟล์ที่ $ekey ถูกส่งมาแค่เพียงบางส่วน";
break;
case 4:
$err["error"][$ekey] = "ไม่มีการส่งไฟล์ที่ $ekey มา";
break;

code]
รักแท้แพ้ใกล้ชิด

pjgunner

#12
ขอโทษทีคับ เพิ่งไปดูในแมนน่วน  :-X

UPLOAD_ERR_OK
Value: 0; There is no error, the file uploaded with success.

UPLOAD_ERR_INI_SIZE
Value: 1; The uploaded file exceeds the upload_max_filesize directive in php.ini.

UPLOAD_ERR_FORM_SIZE
Value: 2; The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form.

UPLOAD_ERR_PARTIAL
Value: 3; The uploaded file was only partially uploaded.

UPLOAD_ERR_NO_FILE
Value: 4; No file was uploaded.

UPLOAD_ERR_NO_TMP_DIR
Value: 6; Missing a temporary folder. Introduced in PHP 4.3.10 and PHP 5.0.3.

UPLOAD_ERR_CANT_WRITE
Value: 7; Failed to write file to disk. Introduced in PHP 5.1.0.

UPLOAD_ERR_EXTENSION
Value: 8; File upload stopped by extension. Introduced in PHP 5.2.0.


ว่าแต่ โหลดไฟล์ไม่ได้เลย
[direct=http://www.pjgunner.com]โปรเจคกันเนอร์ รับทำโปรเจค เว็บไซต์[/direct]
I miss u๊.

waterandthenbrokenparting

จะมีคนช่วยได้ไหมเนี่ย ;D รอนะ ๆ
รักแท้แพ้ใกล้ชิด

chui761

หุๆ เห็นถามในเว็บคุณ กรด ด้วย ลองเข้าไปดูวิธีเขียนให้ใช้งานได้ที่
http://www.goragod.com นะครับ มีบทความอธิบายอยู่
[direct=http://secure.hostgator.com/~affiliat/cgi-bin/affiliates/clickthru.cgi?id=amazonnrr]เช่าโฮสเกเตอร์ Promotion ลด 50% click[/direct]|
Hostgator คูปอง Baby plan เดือนแรก 0.01$=TSBSAVE001 หลายเดือนลด 25%=TSBSAVE025 |[direct=http://www.amzhowto.com/websitemap/]สอน Clickbank Amazon CPA/Payday Viglink เช่าโฮสต์นอก จดโดเมนราคาถูก[/direct]
[direct=http://support.hostneverdie.com/aff.php?aff=156]เช่าโฮสต์ไทย hostneverdie[/direct]
[direct=http://hosterbox.com/billing/aff.php?aff=139]Hosterbox Host นอกราคาประหยัด คุณภาพดีไม่แพ้ gator[/direct]

waterandthenbrokenparting

อ้างถึงจาก: chui761 ใน 05 พฤษภาคม 2009, 13:19:28
หุๆ เห็นถามในเว็บคุณ กรด ด้วย ลองเข้าไปดูวิธีเขียนให้ใช้งานได้ที่
http://www.goragod.com นะครับ มีบทความอธิบายอยู่
ครับแต่ผมอยากได้แนวทางการเขียนแบบใช้ฟังชั่นมากกว่า :)
รักแท้แพ้ใกล้ชิด

kobkung

ใช้ ajax ทำ form สิ มันเช็คขั้นต้นให้ ส่งภาพแบบ multi ได้ แล้วค่อยส่งไปหน้า result แล้วเช็คลูปอีกที
ลองหาใน ajaxrain.com ดู ใช้ keyword ว่า upload มันจะมีเขียนว่า multi load ไม่แน่ใจว่าเป็น jquery หรือเปล่า ใช้ง่ายดีนะ ชอบมาก

ผมขี้เกียจอ่านโค้ดนะ  ???
เราเป็นบริษัท รับทำเว็บไซต์ แก้เว็บเดิม เขียน Php+Mysql+jQuery+css+bootstrap  งานตามสั่ง ประสบการณ์ จะ 19 ปี ละจ้า
[direct=http://www.smilephp.com]Smilephp.com[/direct] รับทำเว็บไซต์บริษัท e-commerce + ระบบชำระเงิน paypal,ธนาคาร  เว็บบริษัท เว็บขายของ ระบบจอง เช่า เขียน PHP ได้ทุกแนว  ช่วงนี้เน้นรับงาน ERP ระบบเอกสารบริษัท ,บัญชี ,  Barcode, Stock , Warehouse , Logistic ติดต่อ 086-364-5262
[direct=http://www.sellerorder.com ระบบหลังบ้าน จัดการ Order ขายของ  ช่วงนี้หาคนทดสอบฟรี ขอได้ตามเมลในเว็บ[/direct]
งดตอบคนทำเว็บนอกลู่นอกทาง ไม่ทำเว็บ WP ปั่นแชร์ เว็บประมูล สคริปปั่นใดๆ ไม่ทำเว็บบอลและพ