พอดีว่าจะทำเว็บขายสินค้าครับ แต่ดึงไฟล์รูปภาพไม่เป็นอ่ะครับ
เลยอยากรบกวนเทพช่วยหน่อยครับ :wanwan017:
http://bank-network.info/show.php
<center>
<?php
echo "<h2>รายละเอียด</h2>";
$link = mysql_connect("localhost", " ****** ", " ***** ");
$sql = "use ******* ";
$result = mysql_query($sql);
mysql_query("set NAMES UTF8");
$sql = "select * from product;";
$result = mysql_query($sql);
echo "<hr/>";
echo "<table border=2 bordercolor=blue>";
echo "<tr ALIGN = center>";
echo "<td> <b>pro_id</b> </td>";
echo "<td> <b>pro_name</b> </td>";
echo "<td> <b>price </b></td>";
echo "<td> <b>description</b> </td>";
echo "<td> <b>img</b> </td>";
echo "</tr>";
while ($dbarr = mysql_fetch_array($result))
{
echo "<tr ALIGN = center>";
echo "<td> $dbarr[pro_id] </td>";
echo "<td> $dbarr[pro_name] </td>";
echo "<td> $dbarr[price] </td>";
echo "<td> $dbarr[description] </td>";
echo "<td> $images[img] </td>";
echo "</tr>";
}
echo "</table>";
mysql_close($link);
?>
<br/>
<a href="index.php"><h4>Home</h4></a><br/>
</center>
ดึงรูปจากไหนครับ database หรือยังไง แล้วเก็บรูปภาพไว้ในรูปแบบไหนล่ะครับ :P
เก็บเป็น Path รูปก็ใช้ Tag <img src="อ้างอิงพาธ" />
ถ้าเก็บเป็น BLOB นี่ต้องสร้างไฟล์อ่านแล้ว render เอานะแล้วเรียกอีกที
จะดึงจากดาต้าเบสเลยครับ
ต้องถามก่อนว่า ตอนใส่รูปเข้าไปในดาต้าเบส ใส่ไปแบบไหนครับ
อ้างถึงจาก: AbuseMan ใน 14 มกราคม 2013, 13:44:53
ถ้าเก็บเป็น BLOB นี่ต้องสร้างไฟล์อ่านแล้ว render เอานะแล้วเรียกอีกที
สร้างยังไงครับมีวิธีหรือตัวอย่างไหมครับ :P
echo "<tr ALIGN = center>";
echo "<td> $dbarr[pro_id] </td>";
echo "<td> $dbarr[pro_name] </td>";
echo "<td> $dbarr[price] </td>";
echo "<td> $dbarr[description] </td>";
echo "<td> <img src='$dbarr[img]'> </td>";
echo "</tr>";
ประมาณนี้หรือเปล่า??
ถ้าใส่รูปใน DB ก็ดึงใน DB มาแสดงครับ <-- ไม่แนะนำให้ทำแบบนี้
โดยปกติ เค้าจะเก็บแค่ชื่อของรูปเฉยๆ แล้วเอามาใช้งาน เช่น ฟิลล์รูปชื่อ pic ก็จะประมาณนี้
<img src="images/<?php echo $data['pic']; ?>"> <-- ในกรณีดึงแบบ Array ออกมานะครับ ถ้าดึงแบบ Object ก็ใช้แบบ $data->pic แทนนั่นเอง
ส่วน images/ ก็เป็นที่เก็บรูปครับ ส่วนคำสั่ง img ก็เป็นคำสั่งแสดงรูปภาพทั่วไป เป็น HTML ธรรมดาครับ
:wanwan003:
ตารางแบบนี้อ่ะครับ
(http://upic.me/i/al/pbsql.png)
ทำแบบนั้นระวัง ดาต้าเบสจะใหญ่ไปนะครับ ลองหันไปเล่นรูปภาพเก็บเป็น url จะง่ายกว่า
อ้างถึงจาก: bankker6480 ใน 14 มกราคม 2013, 13:58:04
ตารางแบบนี้อ่ะครับ
(http://upic.me/i/al/pbsql.png)
ผมแนะนำให้ทำแบบนี้น่ะครับ ในฟิลด์ img เปลี่ยนรูปแบบข้อมูลจาก blob มาเป็น varchar (200) เพื่อไว้เก็บ path ของรูปภาพเฉยๆ เช่น img/picture1.jpg เป้นต้น
เวลาเรียกใช้ก็ใช้ tac img ธรรมดาไปเลย แล้วดึง path จากดาต้าเบสมาแสดง <img src="<?php echo $dbarr['img']; ?>" border=0 />
ส่วนตัวไฟล์รูปจริงๆ เราก็ไม่ต้องเก็บใส่ดาต้าเบส ใช้คำสั่ง copy($_FILES['picture']['tmp_name'],"พาทของรูปที่จะให้จัดเก็บ"."ชื่อของรูป"))
ตัวแปร $_FILES['picture']['tmp_name']; มาจากการอัปโหลดรูปน่ะครับ งงไหมครับ :P
ถ้าจะให้หนักให้มันหนักที่พื้นที่เว็บครับ อย่าไปไว้ที่ดาต้าเบส เพราะจะจัดการได้ง่ายกว่า
ตามด้านบนแนะนำครับ ดูเพิ่มเติ่มได้ที่นี้ http://www.w3schools.com/php/php_file_upload.asp
ต้องเขียน อัพรุป (อัพไฟล์ลงในโฟลเดอร์ + เก็บชื่อไฟล์ลงใน Database)
พอจะเรียกใช้รูปก็
ใส่ path รูป ตามด้วย /ชื่อไฟล์ของรูป ครับ
ลองเปลี่ยนมาเก็บแบบ url จะง่ายกว่าค่ะ
ขอบคุณทุกความเห็นนะครับ เดี๋ยวจะลองดูครับ :wanwan017: :wanwan017:
ตาลาย งงมากครับ พอดีเพิ่งหัดเขียนเป็นครั้งแรกเลย
อัพพวกข้อความเข้าไปใน db แต่ file รูป นี่ต้องเก็บอะไรยังไงครับ พอดีโค้ดนี้ได้มาจากในหนังสือ แล้วก็นำมาดัดแปลง เลยงงๆ :'(
เทพท่านไหนว่างๆช่วยแก้หน่อยครับ + โค้ดที่จะแสดง :'(
อันนี้เป็นโค้ดตอนอัพสินค้าลงในฐานข้อมูล
<!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" />
<meta http-equiv="Content-Language" content="th">
<meta http-equiv="content-Type" content="text/html; charset=window-874">
<meta http-equiv="content-Type" content="text/html; charset=tis-620">
<title>เพิ่มสินค้า</title>
<style type="text/css">
body {
background-color: #D6D6D6;
background-image: url(images/green%20white%20vector1266.jpg);
}
</style><link href="mytopic.css" rel="stylesheet" type="text/css" />
</head>
<body>
<center>
<h3 align="center">เพิ่มรายการสินค้าใหม่</h3>
<p align="center">
<?php
if($_POST) {
include("../dbconn.inc.php");
mysql_query("SET NAMES UTF8",$conn);
$pro_name = htmlspecialchars($_POST['pro_name'], ENT_QUOTES);
$descr = nl2br(htmlspecialchars($_POST['descr'], ENT_QUOTES));
$price = $_POST['price'];
$img_data = "";
if($_FILES['img']['error'] == 0) {
$file = $_FILES['img']['tmp_name'];
$f = fopen($file, "r");
$img_data = fread($f, filesize($file));
$img_data = addslashes($img_data);
fclose($f);
}
$sql = "INSERT INTO product VALUES
(0, '$pro_name', $price, '$descr', '$img_data');";
@mysql_query($sql) or die(mysql_error());
echo "ข้อมูลได้รับการบันทึกแล้ว";
}
?>
</p>
<form name="form1" method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>" enctype="multipart/form-data">
<table align="center">
<tr><td>ชื่อสินค้า:</td><td><input name="pro_name" type="text" id="pro_name" size="30"></td></tr>
<tr valign="top"><td>คำอธิบาย:</td><td><textarea name="descr" cols="37" rows="2"></textarea></td></tr>
<tr><td>ราคา:</td><td><input name="price" type="text" size="10"></td></tr>
<tr><td>ภาพสินค้า:</td><td><input type="file" name="img" size="30"></td></tr>
<tr>
<td> </td>
<td> </td>
</tr>
<tr>
<td> </td>
<td align="center"><input type="submit" name="Submit" value="ส่งข้อมูล" /></td>
<a href="http://bank-network.info/admin.php"> กลับสู่หน้า admin </a>
</tr>
</table>
</form>
</center>
</body>
</html>
** ท่านสร้างโฟลเดอร์ image มาหนึ่งโฟลเดอร์น่ะครับ เอาไว้ที่ root ของเว็บไซด์เลยก็ได้สมมติผมสร้างโฟลเดอร์ไว้ที่ www.xxx.com/image (http://www.xxx.com/image) แล้วแก้ไขโค้ดส่วนนี้น่ะครับ
if($_FILES['img']['error'] == 0) {
$sql="select max(pro_id)+1 as pic_id from product";
$res=mysql_query($sql);
$arr=mysql_fetch_assoc($res);
$name = $_FILES['img']['name'];
$name = 'product-'.$arr['pic_id'].strrchr( $name , '.' );
$resultname='image/'.$name;
if(!copy($_FILES['img']['tmp_name'],"$resultname")){
echo 'ไม่สามารถ copy รูปภาพได้';
}
}
$sql = "INSERT INTO product VALUES (0, '$pro_name', $price, '$descr', '$resultname');";
@mysql_query($sql) or die(mysql_error());
** แก้ไขนิดหน่อยน่ะครับ เด๋วชื่อรูปซ้ำ
อ้างถึงจาก: gubaaball ใน 14 มกราคม 2013, 14:51:05
** ท่านสร้างโฟลเดอร์ image มาหนึ่งโฟลเดอร์น่ะครับ เอาไว้ที่ root ของเว็บไซด์เลยก็ได้สมมติผมสร้างโฟลเดอร์ไว้ที่ www.xxx.com/image (http://www.xxx.com/image) แล้วแก้ไขโค้ดส่วนนี้น่ะครับ
if($_FILES['img']['error'] == 0) {
$sql="select max(pro_id)+1 as pic_id from product";
$res=mysql_query($sql);
$arr=mysql_fetch_assoc($res);
$name = $_FILES['img']['name'];
$name = 'product-'.$arr['pic_id'].strrchr( $name , '.' );
$resultname='image/'.$name;
if(!copy($_FILES['img']['tmp_name'],"$resultname")){
echo 'ไม่สามารถ copy รูปภาพได้';
}
}
$sql = "INSERT INTO product VALUES (0, '$pro_name', $price, '$descr', '$resultname');";
@mysql_query($sql) or die(mysql_error());
** แก้ไขนิดหน่อยน่ะครับ เด๋วชื่อรูปซ้ำ
แล้วอันนี้มันคืออะไรหรอครับ $img_data = "";
ให้ใส่ data อะไรลงไปครับ
*ผมสร้างโฟลเดอร์ images แล้วนะครับ โค้ดหน้านี้จะอัพลงไปใน images เลยใช่ไหมครับ
อ้างถึงจาก: bankker6480 ใน 14 มกราคม 2013, 15:01:43
อ้างถึงจาก: gubaaball ใน 14 มกราคม 2013, 14:51:05
** ท่านสร้างโฟลเดอร์ image มาหนึ่งโฟลเดอร์น่ะครับ เอาไว้ที่ root ของเว็บไซด์เลยก็ได้สมมติผมสร้างโฟลเดอร์ไว้ที่ www.xxx.com/image (http://www.xxx.com/image) แล้วแก้ไขโค้ดส่วนนี้น่ะครับ
if($_FILES['img']['error'] == 0) {
$sql="select max(pro_id)+1 as pic_id from product";
$res=mysql_query($sql);
$arr=mysql_fetch_assoc($res);
$name = $_FILES['img']['name'];
$name = 'product-'.$arr['pic_id'].strrchr( $name , '.' );
$resultname='image/'.$name;
if(!copy($_FILES['img']['tmp_name'],"$resultname")){
echo 'ไม่สามารถ copy รูปภาพได้';
}
}
$sql = "INSERT INTO product VALUES (0, '$pro_name', $price, '$descr', '$resultname');";
@mysql_query($sql) or die(mysql_error());
** แก้ไขนิดหน่อยน่ะครับ เด๋วชื่อรูปซ้ำ
แล้วอันนี้มันคืออะไรหรอครับ $img_data = "";
ให้ใส่ data อะไรลงไปครับ
ไม่ต้องเอาครับ ไม่ได้ใช้แล้ว ลองดูว่ารูปไปอยู่ในโฟลเดอร์นั้นหรือป่าว แล้วก็ path ของรูปเข้า database ถูกไหม
(http://upic.me/i/eh/38untitled.png)
มันขึ้นแบบนี้อ่ะครับ ทำไงครับ ไม่สารถ copy ได้
อ้างถึงจาก: bankker6480 ใน 14 มกราคม 2013, 15:09:19
(http://upic.me/i/eh/38untitled.png)
มันขึ้นแบบนี้อ่ะครับ ทำไงครับ ไม่สารถ copy ได้
ท่านใส่ path ของโฟลเดอร์ image ไม่ถูกต้องอ่ะครับ แก้ไขบรรทัดนี้น่ะครับ
if(!copy($_FILES['img']['tmp_name'],"$resultname")){
ต้องดูว่าโฟลเดอร์ image ท่านอยู่ไหน มันถูกต้องหรือป่าว เพราะค่า url แต่ละเว็บทำไม่เหมือนกันครรับ ที่ผมเห็นสคริปต์ตัวนี้อยู่ใน admin อีกที ถ้าหากคาดไม่ผิดว่าโฟลเดอร์ image ต้องอยู่ข้างนอกสุด ให้ท่านใส่อย่างนี้น่ะครับ if(!copy($_FILES['img']['tmp_name'],"../$resultname")){
ลองดูคำสั่ง copy เพิ่มเติมนะครับ ท่านเขียนคำสั่งไม่ครบครับ
แนะนำให้ตรวจดู Path ของimage ให้ดีๆ ครับ
อ้างถึงจาก: UnLock UnlimiT ใน 14 มกราคม 2013, 14:01:13
ทำแบบนั้นระวัง ดาต้าเบสจะใหญ่ไปนะครับ ลองหันไปเล่นรูปภาพเก็บเป็น url จะง่ายกว่า
ใช่ครับ ... เอาไปยัดแบบนั้น นานๆไป db จะบวม ที่นี้แหละแก้ยากครับ !!!