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

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

ThaiSEOBoard.comพัฒนาเว็บไซต์Programming>>!! สอบถามเรื่อง PHP ดึงไฟล์ภาพจาก SQL มาแสดงบนหน้าเว็บครับ !!<<
หน้า: [1] 2  ทั้งหมด   ลงล่าง
พิมพ์
ผู้เขียน หัวข้อ: >>!! สอบถามเรื่อง PHP ดึงไฟล์ภาพจาก SQL มาแสดงบนหน้าเว็บครับ !!<<  (อ่าน 27845 ครั้ง)
0 สมาชิก และ 1 บุคคลทั่วไป กำลังดูหัวข้อนี้
bankker6480
สมุนแก๊งเสียว
*

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

กระทู้: 710



ดูรายละเอียด เว็บไซต์
« เมื่อ: 14 มกราคม 2013, 13:36:09 »

พอดีว่าจะทำเว็บขายสินค้าครับ แต่ดึงไฟล์รูปภาพไม่เป็นอ่ะครับ
เลยอยากรบกวนเทพช่วยหน่อยครับ
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>&nbsp;<b>pro_id</b>&nbsp;</td>";
    echo 
"<td>&nbsp;<b>pro_name</b>&nbsp;</td>";
    echo 
"<td>&nbsp;<b>price&nbsp</b></td>";
    echo 
"<td>&nbsp;<b>description</b>&nbsp;</td>";
    echo 
"<td>&nbsp;<b>img</b>&nbsp;</td>";
    echo 
"</tr>";

while ($dbarr mysql_fetch_array($result))
{
echo "<tr ALIGN = center>";
        
echo "<td>&nbsp;$dbarr[pro_id]&nbsp;</td>";
        
echo "<td>&nbsp;$dbarr[pro_name]&nbsp;</td>";
        
echo "<td>&nbsp;$dbarr[price]&nbsp;</td>";
echo "<td>&nbsp;$dbarr[description]&nbsp;</td>";
echo "<td>&nbsp;$images[img]&nbsp;</td>";
        
echo "</tr>";
}
echo "</table>";

mysql_close($link);

?>

<br/>
<a href="index.php"><h4>Home</h4></a><br/>
</center>

บันทึกการเข้า
gubaaball
หัวหน้าแก๊งเสียว
*

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

กระทู้: 1,678



ดูรายละเอียด เว็บไซต์
« ตอบ #1 เมื่อ: 14 มกราคม 2013, 13:43:04 »

ดึงรูปจากไหนครับ database หรือยังไง แล้วเก็บรูปภาพไว้ในรูปแบบไหนล่ะครับ  Tongue
บันทึกการเข้า

AbuseMan
หัวหน้าแก๊งเสียว
*

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

กระทู้: 1,103



ดูรายละเอียด เว็บไซต์
« ตอบ #2 เมื่อ: 14 มกราคม 2013, 13:44:53 »

เก็บเป็น Path รูปก็ใช้ Tag <img src="อ้างอิงพาธ" />

ถ้าเก็บเป็น BLOB นี่ต้องสร้างไฟล์อ่านแล้ว render เอานะแล้วเรียกอีกที
บันทึกการเข้า

ฟังเพลงออนไลน์ : เว็บเพลงออนไลน์ที่คุณขอฟังเพลงได้ด้วยตัวคุณเอง
ห้องแชท : บริการฟรีห้องแชทสำหรับติดเว็บ
เพลงใหม่ : เพลงใหม่ เพลงฮิต
บ้านคุ้มค่า : ลงประกาศขายบ้าน ที่ดิน พร้อมอัพเดทโครงการบ้านและคอนโดใหม่ที่น่าสนใจ
bankker6480
สมุนแก๊งเสียว
*

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

กระทู้: 710



ดูรายละเอียด เว็บไซต์
« ตอบ #3 เมื่อ: 14 มกราคม 2013, 13:47:33 »

จะดึงจากดาต้าเบสเลยครับ
บันทึกการเข้า
navico
Verified Seller
หัวหน้าแก๊งเสียว
*

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

กระทู้: 2,315



ดูรายละเอียด เว็บไซต์
« ตอบ #4 เมื่อ: 14 มกราคม 2013, 13:50:55 »

ต้องถามก่อนว่า ตอนใส่รูปเข้าไปในดาต้าเบส ใส่ไปแบบไหนครับ
บันทึกการเข้า
bankker6480
สมุนแก๊งเสียว
*

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

กระทู้: 710



ดูรายละเอียด เว็บไซต์
« ตอบ #5 เมื่อ: 14 มกราคม 2013, 13:54:38 »


ถ้าเก็บเป็น BLOB นี่ต้องสร้างไฟล์อ่านแล้ว render เอานะแล้วเรียกอีกที

สร้างยังไงครับมีวิธีหรือตัวอย่างไหมครับ
Tongue
« แก้ไขครั้งสุดท้าย: 14 มกราคม 2013, 13:56:59 โดย bankker6480 » บันทึกการเข้า
sorayuth
Newbie
*

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

กระทู้: 44



ดูรายละเอียด
« ตอบ #6 เมื่อ: 14 มกราคม 2013, 13:55:12 »

echo "<tr ALIGN = center>";
echo "<td>&nbsp;$dbarr[pro_id]&nbsp;</td>";
echo "<td>&nbsp;$dbarr[pro_name]&nbsp;</td>";
echo "<td>&nbsp;$dbarr[price]&nbsp;</td>";
echo "<td>&nbsp;$dbarr[description]&nbsp;</td>";
echo "<td>&nbsp;<img src='$dbarr[img]'>&nbsp;</td>";
echo "</tr>";

ประมาณนี้หรือเปล่า??
« แก้ไขครั้งสุดท้าย: 14 มกราคม 2013, 13:56:55 โดย sorayuth » บันทึกการเข้า
xvlnw.com
Verified Seller
เจ้าพ่อบอร์ดเสียว
*

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

กระทู้: 5,905



ดูรายละเอียด เว็บไซต์
« ตอบ #7 เมื่อ: 14 มกราคม 2013, 13:56:36 »

ถ้าใส่รูปใน DB ก็ดึงใน DB มาแสดงครับ <-- ไม่แนะนำให้ทำแบบนี้

โดยปกติ เค้าจะเก็บแค่ชื่อของรูปเฉยๆ แล้วเอามาใช้งาน เช่น ฟิลล์รูปชื่อ pic ก็จะประมาณนี้

<img src="images/<?php echo $data['pic']; ?>"> <-- ในกรณีดึงแบบ Array ออกมานะครับ ถ้าดึงแบบ Object ก็ใช้แบบ $data->pic แทนนั่นเอง

ส่วน images/ ก็เป็นที่เก็บรูปครับ ส่วนคำสั่ง img ก็เป็นคำสั่งแสดงรูปภาพทั่วไป เป็น HTML ธรรมดาครับ

 wanwan003
บันทึกการเข้า

bankker6480
สมุนแก๊งเสียว
*

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

กระทู้: 710



ดูรายละเอียด เว็บไซต์
« ตอบ #8 เมื่อ: 14 มกราคม 2013, 13:58:04 »

ตารางแบบนี้อ่ะครับ
บันทึกการเข้า
UnLock UnlimiT
หัวหน้าแก๊งเสียว
*

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

กระทู้: 1,899



ดูรายละเอียด เว็บไซต์
« ตอบ #9 เมื่อ: 14 มกราคม 2013, 14:01:13 »

ทำแบบนั้นระวัง ดาต้าเบสจะใหญ่ไปนะครับ  ลองหันไปเล่นรูปภาพเก็บเป็น url จะง่ายกว่า
บันทึกการเข้า

งดรับซื้อ google ads ครับ Smiley
gubaaball
หัวหน้าแก๊งเสียว
*

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

กระทู้: 1,678



ดูรายละเอียด เว็บไซต์
« ตอบ #10 เมื่อ: 14 มกราคม 2013, 14:14:07 »

ตารางแบบนี้อ่ะครับ



ผมแนะนำให้ทำแบบนี้น่ะครับ ในฟิลด์ 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']; มาจากการอัปโหลดรูปน่ะครับ งงไหมครับ  Tongue

ถ้าจะให้หนักให้มันหนักที่พื้นที่เว็บครับ อย่าไปไว้ที่ดาต้าเบส เพราะจะจัดการได้ง่ายกว่า
บันทึกการเข้า

thanagrid
สมุนแก๊งเสียว
*

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

กระทู้: 675



ดูรายละเอียด
« ตอบ #11 เมื่อ: 14 มกราคม 2013, 14:17:46 »

ตามด้านบนแนะนำครับ ดูเพิ่มเติ่มได้ที่นี้ http://www.w3schools.com/php/php_file_upload.asp
บันทึกการเข้า

kowit2
สมุนแก๊งเสียว
*

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

กระทู้: 529



ดูรายละเอียด เว็บไซต์
« ตอบ #12 เมื่อ: 14 มกราคม 2013, 14:19:19 »

ต้องเขียน อัพรุป (อัพไฟล์ลงในโฟลเดอร์ + เก็บชื่อไฟล์ลงใน Database)

พอจะเรียกใช้รูปก็

ใส่ path รูป ตามด้วย /ชื่อไฟล์ของรูป ครับ
บันทึกการเข้า

Be patient because patience looks natural.
ผลงานการทำเนื้อหา บทความ ที่มีคุณภาพในความเป็นจริงครับ

ฟรีอีเมล ดีจริงหรือ ? : ฟรีอีเมล ที่ให้ใช้งานทั่วไป เหมาะกับธุรกิจของคุณหรือไม่ หรือว่าถึงเวลาแล้วที่ต้องเปลี่ยนมาใช้ Email แบบเสียเงิน
ไวรัสคอมพิวเตอร์ รู้ไว้ป้องกันได้ : ไวรัสคอม ป้องกันได้ หากลองศึกษาวิธีการใช้งานที่ถูกต้อง และอย่าลืมติดตั้งโปรแกรมสแกนไวรัสด้วยนะ
yorushop
yuseki
คนรักเสียว
*

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

กระทู้: 120



ดูรายละเอียด
« ตอบ #13 เมื่อ: 14 มกราคม 2013, 14:20:32 »

ลองเปลี่ยนมาเก็บแบบ url จะง่ายกว่าค่ะ
บันทึกการเข้า
bankker6480
สมุนแก๊งเสียว
*

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

กระทู้: 710



ดูรายละเอียด เว็บไซต์
« ตอบ #14 เมื่อ: 14 มกราคม 2013, 14:23:59 »

ขอบคุณทุกความเห็นนะครับ เดี๋ยวจะลองดูครับ  wanwan017 wanwan017
บันทึกการเข้า
bankker6480
สมุนแก๊งเสียว
*

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

กระทู้: 710



ดูรายละเอียด เว็บไซต์
« ตอบ #15 เมื่อ: 14 มกราคม 2013, 14:40:13 »

ตาลาย งงมากครับ พอดีเพิ่งหัดเขียนเป็นครั้งแรกเลย
อัพพวกข้อความเข้าไปใน 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[&#39;pro_name&#39;], ENT_QUOTES);
$descr nl2br(htmlspecialchars($_POST[&#39;descr&#39;], ENT_QUOTES));
$price $_POST[&#39;price&#39;];

$img_data "";
if($_FILES[&#39;img&#39;][&#39;error&#39;] == 0) {
$file $_FILES[&#39;img&#39;][&#39;tmp_name&#39;];
$f fopen($file"r");
$img_data fread($ffilesize($file));
$img_data addslashes($img_data);
fclose($f);
}

$sql "INSERT INTO product VALUES
(0, &#39;
$pro_name&#39;, $price, &#39;$descr&#39;, &#39;$img_data&#39;);";

@mysql_query($sql) or die(mysql_error());

echo "&#3586;&#3657;&#3629;&#3617;&#3641;&#3621;&#3652;&#3604;&#3657;&#3619;&#3633;&#3610;&#3585;&#3634;&#3619;&#3610;&#3633;&#3609;&#3607;&#3638;&#3585;&#3649;&#3621;&#3657;&#3623;";
}
?>

</p>
<form name="form1" method="post" action="<?php echo $_SERVER[&#39;PHP_SELF&#39;]; ?>" 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>&nbsp;</td>
  <td>&nbsp;</td>
</tr>
<tr>
  <td>&nbsp;</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>
« แก้ไขครั้งสุดท้าย: 14 มกราคม 2013, 14:41:28 โดย bankker6480 » บันทึกการเข้า
gubaaball
หัวหน้าแก๊งเสียว
*

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

กระทู้: 1,678



ดูรายละเอียด เว็บไซต์
« ตอบ #16 เมื่อ: 14 มกราคม 2013, 14:51:05 »

** ท่านสร้างโฟลเดอร์ image มาหนึ่งโฟลเดอร์น่ะครับ เอาไว้ที่ root ของเว็บไซด์เลยก็ได้สมมติผมสร้างโฟลเดอร์ไว้ที่ 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());

** แก้ไขนิดหน่อยน่ะครับ เด๋วชื่อรูปซ้ำ
« แก้ไขครั้งสุดท้าย: 14 มกราคม 2013, 14:56:22 โดย gubaaball » บันทึกการเข้า

bankker6480
สมุนแก๊งเสียว
*

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

กระทู้: 710



ดูรายละเอียด เว็บไซต์
« ตอบ #17 เมื่อ: 14 มกราคม 2013, 15:01:43 »

** ท่านสร้างโฟลเดอร์ image มาหนึ่งโฟลเดอร์น่ะครับ เอาไว้ที่ root ของเว็บไซด์เลยก็ได้สมมติผมสร้างโฟลเดอร์ไว้ที่ 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 เลยใช่ไหมครับ
« แก้ไขครั้งสุดท้าย: 14 มกราคม 2013, 15:03:13 โดย bankker6480 » บันทึกการเข้า
gubaaball
หัวหน้าแก๊งเสียว
*

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

กระทู้: 1,678



ดูรายละเอียด เว็บไซต์
« ตอบ #18 เมื่อ: 14 มกราคม 2013, 15:02:51 »

** ท่านสร้างโฟลเดอร์ image มาหนึ่งโฟลเดอร์น่ะครับ เอาไว้ที่ root ของเว็บไซด์เลยก็ได้สมมติผมสร้างโฟลเดอร์ไว้ที่ 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 ถูกไหม
บันทึกการเข้า

bankker6480
สมุนแก๊งเสียว
*

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

กระทู้: 710



ดูรายละเอียด เว็บไซต์
« ตอบ #19 เมื่อ: 14 มกราคม 2013, 15:09:19 »



มันขึ้นแบบนี้อ่ะครับ ทำไงครับ ไม่สารถ copy ได้
บันทึกการเข้า
หน้า: [1] 2  ทั้งหมด   ขึ้นบน
พิมพ์