>>!! สอบถามเรื่อง PHP ดึงไฟล์ภาพจาก SQL มาแสดงบนหน้าเว็บครับ !!<<

เริ่มโดย bankker6480, 14 มกราคม 2013, 13:36:09

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

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

bankker6480

พอดีว่าจะทำเว็บขายสินค้าครับ แต่ดึงไฟล์รูปภาพไม่เป็นอ่ะครับ
เลยอยากรบกวนเทพช่วยหน่อยครับ
: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

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

AbuseMan

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

ถ้าเก็บเป็น BLOB นี่ต้องสร้างไฟล์อ่านแล้ว render เอานะแล้วเรียกอีกที
█ [direct=https://radio.sukson.com]ฟังเพลงออนไลน์[/direct] : เว็บเพลงออนไลน์ที่คุณขอฟังเพลงได้ด้วยตัวคุณเอง
█ [direct=https://chat.sukson.com]ห้องแชท[/direct] : บริการฟรีห้องแชทสำหรับติดเว็บ
█ [direct=https://music.sukson.com]เพลงใหม่[/direct] : เพลงใหม่ เพลงฮิต
█ [direct=https://bankumka.com]บ้านคุ้มค่า[/direct] : ลงประกาศขายบ้าน ที่ดิน พร้อมอัพเดทโครงการบ้านและคอนโดใหม่ที่น่าสนใจ

bankker6480


navico

ต้องถามก่อนว่า ตอนใส่รูปเข้าไปในดาต้าเบส ใส่ไปแบบไหนครับ

bankker6480

อ้างถึงจาก: AbuseMan ใน 14 มกราคม 2013, 13:44:53

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

สร้างยังไงครับมีวิธีหรือตัวอย่างไหมครับ
:P

sorayuth

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>";

ประมาณนี้หรือเปล่า??

xvlnw.com

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

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

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

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

:wanwan003:
[direct=https://cloudhost.in.th/wordpress-hosting]ツ ⓌⓄⓇⒹⓅⓇⒺⓈⓈ ⒽⓄⓈⓉⒾⓃⒼ [/direct] :wanwan014:  :D
[direct=https://cloudhost.in.th/cloudhosting.html]Cloud Hosting[/direct] [direct=https://cloudhost.in.th/cloudvps.html]Cloud Server[/direct] [direct=https://cloudhost.in.th/vpshosting.html]Cloud VPS Hosting[/direct] [direct=https://cloudhost.in.th/windowsvps.html]Cloud Windows[/direct] Tel: 080-348-0843 LINE: ixvlnw

bankker6480


UnLock UnlimiT

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

gubaaball

อ้างถึงจาก: bankker6480 ใน 14 มกราคม 2013, 13:58:04
ตารางแบบนี้อ่ะครับ


ผมแนะนำให้ทำแบบนี้น่ะครับ ในฟิลด์ 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

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

thanagrid


kowit2

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

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

ใส่ path รูป ตามด้วย /ชื่อไฟล์ของรูป ครับ
Be patient because patience looks natural.
ผลงานการทำเนื้อหา บทความ ที่มีคุณภาพในความเป็นจริงครับ

[direct=https://www.1belief.com/article/free-email-business/]ฟรีอีเมล ดีจริงหรือ ?[/direct]: ฟรีอีเมล ที่ให้ใช้งานทั่วไป เหมาะกับธุรกิจของคุณหรือไม่ หรือว่าถึงเวลาแล้วที่ต้องเปลี่ยนมาใช้ Email แบบเสียเงิน
[direct=https://www.1belief.com/article/virus-computer/Open link]ไวรัสคอมพิวเตอร์ รู้ไว้ป้องกันได้[/direct]: ไวรัสคอม ป้องกันได้ หากลองศึกษาวิธีการใช้งานที่ถูกต้อง และอย่าลืมติดตั้งโปรแกรมสแกนไวรัสด้วยนะ
[direct=https://www.yorushop.com/]yorushop[/direct]

yuseki


bankker6480

ขอบคุณทุกความเห็นนะครับ เดี๋ยวจะลองดูครับ  :wanwan017: :wanwan017:

bankker6480

ตาลาย งงมากครับ พอดีเพิ่งหัดเขียนเป็นครั้งแรกเลย
อัพพวกข้อความเข้าไปใน 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($ffilesize($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 "&#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['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>&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>

gubaaball

** ท่านสร้างโฟลเดอร์ 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());

** แก้ไขนิดหน่อยน่ะครับ เด๋วชื่อรูปซ้ำ

bankker6480

อ้างถึงจาก: gubaaball ใน 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());

** แก้ไขนิดหน่อยน่ะครับ เด๋วชื่อรูปซ้ำ

แล้วอันนี้มันคืออะไรหรอครับ $img_data = "";
ให้ใส่ data อะไรลงไปครับ
*ผมสร้างโฟลเดอร์ images แล้วนะครับ โค้ดหน้านี้จะอัพลงไปใน images เลยใช่ไหมครับ

gubaaball

อ้างถึงจาก: bankker6480 ใน 14 มกราคม 2013, 15:01:43
อ้างถึงจาก: gubaaball ใน 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());

** แก้ไขนิดหน่อยน่ะครับ เด๋วชื่อรูปซ้ำ

แล้วอันนี้มันคืออะไรหรอครับ $img_data = "";
ให้ใส่ data อะไรลงไปครับ

ไม่ต้องเอาครับ ไม่ได้ใช้แล้ว ลองดูว่ารูปไปอยู่ในโฟลเดอร์นั้นหรือป่าว แล้วก็ path ของรูปเข้า database ถูกไหม

bankker6480



มันขึ้นแบบนี้อ่ะครับ ทำไงครับ ไม่สารถ copy ได้