ใครเก่ง php มาช่วยด้วยครับ โค้ด php อัพรูปเข้าฐานข้อมูล my sql แล้วขึ้น error
ช่วยด้วยครับ โค้ดphp อัพรูปแล้วขึ้น
Fatal error: Class 'upload' not found in I:\xampp\htdocs\aaa\imageProfile\upload.php on line 24
โค้ด php ตัวอัพ
Code (PHP)
<?php
mb_http_input("utf-8");
mb_http_output("utf-8");
?>
<?php
// Include คลาส class.upload.php เข้ามา เพื่อจัดการรูปภาพ
require_once('class-up-img.php') ;
// ส่วนกำหนดการเชื่อมต่อฐานข้อมูล
$hostname_connection = "localhost";
$database_connection = "a";
$username_connection = "root";
$password_connection = "a";
$connection = mysql_pconnect($hostname_connection, $username_connection, $password_connection)
or trigger_error(mysql_error(),E_USER_ERROR);
mysql_query( "SET NAMES UTF8" ) ;
// ถ้าหากหน้านี้ถูกเรียก เพราะการ submit form
// ประโยคนี้จะเป็นจริงกรณีเดียวก็ด้วยการ submit form
if ((isset($_POST["MM_insert"])) && ($_POST["MM_insert"] == "form1")) {
// เริ่มต้นใช้งาน class.upload.php ด้วยการสร้าง instant จากคลาส
$upload_image = new upload($_FILES['image_name']) ; // $_FILES['image_name'] ชื่อของช่องที่ให้เลือกไฟล์เพื่ออัปโหลด
// ถ้าหากมีภาพถูกอัปโหลดมาจริง
if ( $upload_image->uploaded ) {
// ย่อขนาดภาพให้เล็กลงหน่อย โดยยึดขนาดภาพตามความกว้าง ความสูงให้คำณวนอัตโนมัติ
// ถ้าหากไม่ต้องการย่อขนาดภาพ ก็ลบ 3 บรรทัดด้านล่างทิ้งไปได้เลย
$upload_image->image_resize = true ; // อนุญาติให้ย่อภาพได้
$upload_image->image_x = 400 ; // กำหนดความกว้างภาพเท่ากับ 400 pixel
$upload_image->image_ratio_y = true; // ให้คำณวนความสูงอัตโนมัติ
$upload_image->process( "image_profile" ); // เก็บภาพไว้ในโฟลเดอร์ที่ต้องการ *** โฟลเดอร์ต้องมี permission 0777
// ถ้าหากว่าการจัดเก็บรูปภาพไม่มีปัญหา เก็บชื่อภาพไว้ในตัวแปร เพื่อเอาไปเก็บในฐานข้อมูลต่อไป
if ( $upload_image->processed ) {
$image_name = $upload_image->file_dst_name ; // ชื่อไฟล์หลังกระบวนการเก็บ จะอยู่ที่ file_dst_name
$upload_image->clean(); // คืนค่าหน่วยความจำ
// เก็บชื่อภาพลงฐานข้อมูล
$id = mysql_real_escape_string($_POST['image_id']);
$insertSQL = sprintf("INSERT INTO image_profile (image_name) VALUES ( '%s', '$id')", $image_name );
echo $insertSQL ;
mysql_select_db($database_connection, $connection);
$Result1 = mysql_query($insertSQL, $connection) or die(mysql_error());
}// END if ( $upload_image->processed )
}//END if ( $upload_image->uploaded )
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
</head>
<body>
<p> </p>
<p><form action="" method="post" enctype="multipart/form-data" name="form1" id="form1">
<p>Image_name
<input name="image_name" type="file" id="image_name" size="40" />
</p>
<p>
<input name="id" type="hidden" id="id" value="<?php echo $_SESSION['login_user']; ?>" />
</p>
<p>
<input type="submit" value="Upload" />
<input type="hidden" name="MM_insert" value="form1" />
</p>
</form></p>
</body>
</html>
โค้ดไฟล์ class-up-img.php
Code (PHP)
<?php
class UpImage{
public $file;
private $name;
private $size;
private $type;
private $dri;
private $SISE = 1048576;
private $TYPE = array('png','jpg','gif');
private $NAME = "'/^[a-z\d]{4,30}$/i";
public function __construct($file,$dri,$zise){
//set value
$this->dri = $dri;
$this->file = $file;
$this->SISE = $zise;
$this->size = $file["size"];
// separate name and type
$Arr = explode(".",$file["name"]);
$this->name = $Arr[0];
$this->type = $Arr[1];
}
//Add type
public function addType($type){
array_push($this->TYPE,$type) ;
}
//Check accuracy of image file.
public function check(){
if($this->checkSize()&&$this->checkType()&&$this->checkError())
return true;
else
return false;
}
//Chack Size of image file.
public function checkSize(){
if($this->SISE < $this->size||0 > $this->size) return false;
else return true;
}
//Check Type of image file.
public function checkType(){
$b = false;
$count = count($this->TYPE);
while($count>0){
if($this->TYPE[$count-1]==$this->type){$b = true;
}
$count--;
}
return true;
}
//Check error of image file
public function checkError(){
if($file["error"]==0){
return true;
}
else{
return false;
}
}
//Chack name of image file
public function checkName(){
//will add "001" in end of name image file
if(!file_exists($this->dri.$this->name."00001.".$this->type)){
//set name of image
$this->NAME = $this->name."00001.".$this->type;
}
else{
$b=true; $i=1;
while($b){
$num = $this->name.(str_pad(($i++),5,"0",STR_PAD_LEFT));
if(!file_exists($this->dri.$num.".".$this->type)){
//set name of image
$this->NAME = $num.".".$this->type;
// out loop
$b=false;
}
}
}
}
//Upload image
public function upImage(){
if($this->check()){
$this->checkName();
$move = move_uploaded_file($this->file["tmp_name"],$this->dri.$this->NAME);
//Up image completed.
if($move)
$b = true;
//image is error!
else $b = false;
}
else {
// Image is error!
$b = false;
}
return $b;
}
public function getName(){
return $this->NAME;
}
public function getType(){
return $this->type;
}
public function getSize(){
return $this->size;
}
}
?>
ในตารางมีฟิลด์ image_id กับ image_name ลองโค้ดในxampp1.8 ครับTag : PHP, MySQL, Windows
Date :
2012-11-19 20:43:42
By :
tontan1998
View :
1516
Reply :
9
มันหา Class ไม่เจอครับ เพราะว่า class-up-img.php ไม่มี Class ชื่อ upload ที่ได้ประกาศ อ๊อฟเจ็ค จาก ไฟล์แรกไปครับ
ดูๆ แล้วเหมือนไฟล์ 1 กับ ไฟล์ที่ 2 มันไม่มีส่วนไหน จะโยงกันได้เลย
ประวัติการแก้ไข 2012-11-20 01:39:52
Date :
2012-11-20 01:32:46
By :
execution123
โค้ดฐานข้อมูล
Code (SQL)
-- phpMyAdmin SQL Dump
-- version 3.5.2
-- http://www.phpmyadmin.net
--
-- Host: localhost
-- Generation Time: Nov 20, 2012 at 02:14 PM
-- Server version: 5.5.25a
-- PHP Version: 5.4.4
SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";
SET time_zone = "+00:00";
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;
--
-- Database: `aaa`
--
-- --------------------------------------------------------
--
-- Table structure for table `image_profile`
--
CREATE TABLE IF NOT EXISTS `image_profile` (
`image_id` varchar(20) NOT NULL,
`image_name` varchar(100) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
ช่วยด้วยครับ
Date :
2012-11-20 20:22:56
By :
tontan1998
INSERT INTO image_profile (image_name) VALUES ( '3.png', '') ตรงนี้ผิดครับ เพราะจำนวนฟิลดิ์กับ value จำนวนไม่ตรงกัน
คุณกำลังจะ insert ลงไปในฟิลดิ์ image_name อันเดียว แต่คุณใส่ value ลงไป 2 ตัว
Date :
2012-11-21 08:56:33
By :
Songkram
แล้วต้องแก้ยังไร ครับ :blank
Date :
2012-11-21 12:33:17
By :
tontan1998
ก็ต้องทำให้จำนวนฟิลดิ์ กับ VALUE มันเท่ากันครับ .... ถ้าจำนวนฟิลดิ์ 1 ก็ต้องมี VALUE 1 ค่า
ถ้าจำนวนฟิลดิ์ 2 VALUE ก็ต้อง 2 ค่า
ถ้าจำนวนฟิลดิ์ 3 VALUE ก็ต้อง 3 ค่า
INSERT INTO image_profile (field1, field2, field3, .....) VALUES (value1, value2, value3, .....)
ประวัติการแก้ไข 2012-11-21 15:11:26
Date :
2012-11-21 15:09:59
By :
Songkram
Code (PHP)
$id = $_SESSION['id'];
//$id = mysql_real_escape_string($_POST['id']);
$insertSQL = sprintf("INSERT INTO image_profile (image_id,image_name) VALUES ( '$id','%s' )", $image_name);
echo $insertSQL ;
ขอบคุณครับ ทำได้แล้ว
Date :
2012-11-22 20:50:30
By :
tontan1998
Load balance : Server 00