Register Register Member Login Member Login Member Login Forgot Password ??
PHP , ASP , ASP.NET, VB.NET, C#, Java , jQuery , Android , iOS , Windows Phone
 

Registered : 109,037

HOME > PHP > PHP Forum > php แสดงรูปภาพจากฐานข้อมูล oracle แบบ ไบนารี่ เป็นตัวหนังสือขยุกขยุยแทนที่จะเป็นรูป



 

php แสดงรูปภาพจากฐานข้อมูล oracle แบบ ไบนารี่ เป็นตัวหนังสือขยุกขยุยแทนที่จะเป็นรูป

 



Topic : 116341



โพสกระทู้ ( 70 )
บทความ ( 0 )



สถานะออฟไลน์




รบกวนสอบถามโค้ด แสดงข้อมูลรูปภาพแบบไบนารี่ จาก oracle ครับ รูปภาพมันเป็นตัวหนังสือ ขยุกขยุย แทนที่จะเป็นรูปภาพครับตามรูปด้านล่าง

image

Code ที่ผมใช้*******

Code (PHP)
<html>
<head>
<title>ThaiCreate.Com Tutorial</title>
</head>
<body>
	<?php
	include("include/conora.php");
//		$objConnect = oci_connect("myuser","mypassword","TCDB");
		
		$strSQL = "SELECT * FROM INV_FG_MASTER_PIC1 WHERE FG_CODE like 'RM-BR-FIT%'";
		$objParse = oci_parse ($objConnect, $strSQL);
		oci_execute ($objParse,OCI_DEFAULT);

		$Num_Rows = oci_fetch_all($objParse, $Result);

		$Per_Page = 4;   // Per Page

		$Page = $_GET["Page"];
		if(!$_GET["Page"])
		{
			$Page=1;
		}

		$Prev_Page = $Page-1;
		$Next_Page = $Page+1;

		$Page_Start = (($Per_Page*$Page)-$Per_Page);
		if($Num_Rows<=$Per_Page)
		{
			$Num_Pages =1;
		}
		else if(($Num_Rows % $Per_Page)==0)
		{
			$Num_Pages =($Num_Rows/$Per_Page) ;
		}
		else
		{
			$Num_Pages =($Num_Rows/$Per_Page)+1;
			$Num_Pages = (int)$Num_Pages;
		}
		$Page_End = $Per_Page * $Page;
		IF ($Page_End > $Num_Rows)
		{
			$Page_End = $Num_Rows;
		}


		echo"<table border=\"0\"  cellspacing=\"1\" cellpadding=\"1\"><tr>";
		$intRows = 0;
		for($i=$Page_Start;$i<$Page_End;$i++)
		{
			echo "<td>"; 
			$intRows++;
	?>
			<center>
				<img src="thaicreate/<?php echo $Result["FG_PIC"][$i];?>"><br>
				<?php echo $Result["FG_CODE"][$i];?>
				<br>
			</center>
	<?php
			echo"</td>";
			if(($intRows)%2==0)
			{
				echo"</tr>";
			}
		}
		echo"</tr></table>";
	?>

		<br>
		Total <?php echo $Num_Rows;?> Record : <?php echo $Num_Pages;?> Page :
		<?php
		if($Prev_Page)
		{
			echo " <a href='$_SERVER[SCRIPT_NAME]?Page=$Prev_Page'><< Back</a> ";
		}

		for($i=1; $i<=$Num_Pages; $i++){
			if($i != $Page)
			{
				echo "[ <a href='$_SERVER[SCRIPT_NAME]?Page=$i'>$i</a> ]";
			}
			else
			{
				echo "<b> $i </b>";
			}
		}
		if($Page!=$Num_Pages)
		{
			echo " <a href ='$_SERVER[SCRIPT_NAME]?Page=$Next_Page'>Next>></a> ";
		}
		oci_close($objConnect);
	?>
</body>
</html>

รบกวนช่วยแนะนำด้วยครับ
ขอบคุณมากครับ



Tag : PHP, Oracle







Move To Hilight (Stock) 
Send To Friend.Bookmark.
Date : 2015-05-08 14:52:04 By : puupha View : 1783 Reply : 11
 

 

No. 1



โพสกระทู้ ( 381 )
บทความ ( 0 )



สถานะออฟไลน์
Twitter Facebook

Code
<img src='http://localhost/05oracle/image.php?Page=1'>

ลองดูครับ






แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2015-05-08 15:21:20 By : mee079
 


 

No. 2



โพสกระทู้ ( 74,058 )
บทความ ( 838 )

สมาชิกที่ใส่เสื้อไทยครีเอท

สถานะออฟไลน์
Twitter Facebook

Code
<img src="ViewImage.php?FilesID=<?=$objResult["FILESID"];?>">


PHP Upload Oracle BLOB (Binary Data)

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2015-05-08 16:40:56 By : mr.win
 

 

No. 3



โพสกระทู้ ( 9,586 )
บทความ ( 2 )



สถานะออฟไลน์


56.<img src="thaicreate/<?php echo $Result["FG_PIC"][$i];?>"><br>
57.<?php echo $Result["FG_CODE"][$i];?>

ดูจากโค๊ด $Result["FG_PIC"][$i] เป็น binary ใช่ไหมครับ คือเป็น string ของ รูปภาพ

$img_string = 'data:image/png;base64,'.base64_encode($Result["FG_PIC"][$i]);
<img src="<?=$img_string?>" ><br>

ส่วนบันทัด ที่ 57 นั่นเป็นส่วนที่แสดง ขยุกขยุยแหล่ะครับ ยังไงก็โชว์ เพราะ echo ออกมาด้วย
ส่วนใน บันทัดที่ 56 ไม่ได้แสดงออกมา เพราะ ถูก <img ... >ครอบไว้
แต่ก็คง แสดง เป็น ไอคอน ภาพเสีย



ปล.
data:image/png;
สีแดง png นี่ ต้องรู้ว่าเก็บ จาก type อะไรนะครับ png นี่ยกตัวอยา่งเฉยๆ


ประวัติการแก้ไข
2015-05-08 17:00:17
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2015-05-08 16:57:42 By : Chaidhanan
 


 

No. 4



โพสกระทู้ ( 70 )
บทความ ( 0 )



สถานะออฟไลน์


ขอขอบคุณทุกๆ ท่านมาก สำหรับคำแนะนำ ผมขอนำไปทดลองใช้งานดูก่อนติดขัดตรงไหนอาจจะขอคำแนะนำเพิ่ม
ขอบคุณมากครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2015-05-09 17:17:18 By : puupha
 


 

No. 5



โพสกระทู้ ( 70 )
บทความ ( 0 )



สถานะออฟไลน์


ตอบความคิดเห็นที่ : 2 เขียนโดย : mr.win เมื่อวันที่ 2015-05-08 16:40:56
รายละเอียดของการตอบ ::
ผมดูจากลิงค์ที่คุณ win ให้มา PHP Upload Oracle BLOB (Binary Data)
https://www.thaicreate.com/free-web-script/php-upload-oracle-blob.html
ผมลองทำตามดูแล้วสามารถบันทึกและแก้ไขภาพได้ครับ ผมมีคำถาม 2 คำถาม
1.กรณีใน oracle ชนิดของ ฟิลด์เป็น long raw แต่ในตัวอย่างเป็น blob ใช้ด้วยกันได้ไหม(ในฐานข้อมูลเดิมไม่สามารถเปลี่ยนเป็น blob ได้)
2.จะมีวิธีป้องกันกรณีที่ผู้ใช้อัพโหลดไฟล์ที่มีขนาดใหญ่ๆ กำหนดไม่ให้บันทึก(หรือเรากำหนดขนาดภาพเองเลย)จะได้ไหมครับ(กลัวว่าฐานข้อมูลจะมีปัญหาถ้าขนาดไฟล์ภาพใหญ่) และผมไม่รู้จะเข้าไปแก้ไขใน Code ไฟล์ PageUploadToOracle2.php ตรงไหนครับเพื่อป้องกันปัญหา

รบกวนช่วยแนะนำหรือขอตัวอย่างเพื่อเป็นแนวทางหน่อยครับ
ขอบคุณมากครับคุณ win




ประวัติการแก้ไข
2015-05-13 17:18:14
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2015-05-13 16:34:39 By : puupha
 


 

No. 6



โพสกระทู้ ( 9,586 )
บทความ ( 2 )



สถานะออฟไลน์


ขนาดภาพ ไม่ได้มีปัญหากับ database ครับ แต่มีปัญหากับ harddisk เต็มเร็ว
แต่สมัยนี้ จุเป็น tera ไม่น่ามีปัญหา แต่อาจจะมีปัญหา ถ้าถูกจำกัด bandwidth หรือ ปริมาณการเก็บ ลง harddisk

ส่วน type raw กับ blob ต่างกันที่ชื่อเรียกครับ

โค๊ดเช็คไซด์
Code (PHP)
$limit = 20000;
if( filesize ( $_FILES['...']['tmp_name'] )>$limit){
   // echo alert ......
}

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2015-05-14 07:46:02 By : Chaidhanan
 


 

No. 7



โพสกระทู้ ( 70 )
บทความ ( 0 )



สถานะออฟไลน์


ตอบความคิดเห็นที่ : 6 เขียนโดย : Chaidhanan เมื่อวันที่ 2015-05-14 07:46:02
รายละเอียดของการตอบ ::
ขอบคุณ คุณ Chaidhanan มาก ที่ให้ความรู้ (NO.3 และ NO.6) ครับ
ผมขอปรึกษาเรื่อง Code ครับ
ดูจาก Code ด้านล่าง ในการบันทึกข้อมูลลง database oracle ฟิล์ FILESNAME เป็น BLOB (สามารถบันทึกข้อมูลได้)
แต่ถ้าผมเปลี่ยน FILESNAME เป็น LONG RAW จะไม่สามารถบันทึกได้ต้องแก้ไข code พอจะแนะนำได้ไหมครับว่าต้องแก้เป็นอย่างไร(จำเป็นต้องใช้ long raw) ครับ

Code (PHP)
<html>
<head>
<title>ทดสอบ</title>
</head>
<body>
<?
	if($_FILES["filUpload"]["name"] != "")
	{

		//*** Insert Record ***//
		$objConnect = oci_connect("user","789","test");
		$lob = oci_new_descriptor($objConnect, OCI_D_LOB);
   เริ่ม >>   $strSQL = "INSERT INTO FILES ";
	       $strSQL .="(FILESID,NAME,FILESTYPE,FILESNAME) VALUES ";
		$strSQL .="(seq_next_filesid.nextval,'".$_POST["txtName"]."' ";
		$strSQL .=",'".$_FILES["filUpload"]["type"]."',EMPTY_BLOB()) RETURNING FILESNAME INTO :BLOBDATA";

		$objParse = oci_parse($objConnect, $strSQL);
		oci_bind_by_name($objParse, ':BLOBDATA', $lob, -1, OCI_B_BLOB);
		$objExecute = oci_execute($objParse, OCI_DEFAULT);	
   ถึง >>    $lob->savefile($_FILES['filUpload']['tmp_name']);

		if($objExecute)
		{
			oci_commit($objConnect); 
			echo "Copy/Upload Complete<br>";
		}
		else
		{
			oci_rollback($objConnect); 
			echo "Copy/Upload is not Complete";
		}

		oci_free_descriptor($lob);
		oci_free_statement($objParse);
		oci_close($objConnect);

	}
?>
<a href="PageUploadToOracle3.php">View files</a>
</body>
</html>



ผมรบกวนด้วยครับ
ขอบคุณมากครับ

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2015-05-14 09:03:07 By : puupha
 


 

No. 8



โพสกระทู้ ( 9,586 )
บทความ ( 2 )



สถานะออฟไลน์


ผมก็ไม่ค่อยชำนาญ กับ oracle นะครับ ออกตัวก่อน

ลองดูตัวอย่าง นะครับ
Code (PHP)
$db=ocilogon("user","password", "database");
$qs = "insert into longRawTable  (id, fileimage)" . " values (:id, :fileimage)";
$stmt = OCIParse($db, $qs);
$i=1;
$fileimage = file_get_contents( "a_file" );
OCIBindByName ( $stmt, ":id", $i, -1);
OCIBindByName ( $stmt, ":fileimage", $fileimage, -1, SQL_LBI);
ociexecute($stmt, OCI_DEFAULT);
ocicommit($db);

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2015-05-14 11:58:00 By : Chaidhanan
 


 

No. 9



โพสกระทู้ ( 70 )
บทความ ( 0 )



สถานะออฟไลน์


ตอบความคิดเห็นที่ : 8 เขียนโดย : Chaidhanan เมื่อวันที่ 2015-05-14 11:58:00
รายละเอียดของการตอบ ::
คุณ Chaidhanan ครับ
ไม่รู้ว่าผิดตรงไหนครับ ขึ้น error ตามภาพด้านล่าง

3

ผมเอาโค๊ดมาผสมกัน
code ไฟล์ที่ใช้บันทึกครับ

Code (PHP)
<html>
<head>
<title>ThaiCreate.Com Tutorial</title>
</head>
<body>
<?
     $limit = 100;

	if($_FILES["filUpload"]["name"] != "")
	{
 		//-----------
/*		$db=ocilogon("user","5878", "test");
$qs = "insert into FILES  (FILESID, IMAGE)" . " values (:id, :fileimage)";
$stmt = OCIParse($db, $qs);
$i=1;
$fileimage = file_get_contents( "a_file" );
OCIBindByName ( $stmt, ":id", $i, -1);
OCIBindByName ( $stmt, ":fileimage", $fileimage, -1, SQL_LBI);
ociexecute($stmt, OCI_DEFAULT);
ocicommit($db);
*/		//-------
		//*** Insert Record ***//
		$objConnect = oci_connect("user","5878","test");
		$lob = oci_new_descriptor($objConnect, OCI_D_LOB);
		$strSQL = "INSERT INTO FILES ";
		$strSQL .="(FILESID,NAME,FILESTYPE,IMAGE) VALUES ";
		$strSQL .="(seq_next_filesid.nextval,'".$_POST["txtName"]."' ";
		$strSQL .=",'".$_FILES["filUpload"]["type"]."',:fileimage";
        
		$fileimage = file_get_contents( "a_file" );
		$objParse = oci_parse($objConnect, $strSQL);
		oci_bind_by_name($objParse, ':fileimage', $fileimage, -1, SQL_LBI);
		$objExecute = oci_execute($objParse, OCI_DEFAULT);	
		$lob->savefile($_FILES['filUpload']['tmp_name']);

		if($objExecute)
		{
			oci_commit($objConnect); 
			echo "Copy/Upload Complete<br>";
		}
		else
		{
			oci_rollback($objConnect); 
			echo "Copy/Upload is not Complete";
		}

		oci_free_descriptor($lob);
		oci_free_statement($objParse);
		oci_close($objConnect);

	}

?>
<a href="PageUploadToOracle3.php">View files</a>
</body>
</html>


ไม่ได้ไม่เป็นไรครับ แค่นี้ผมก็ขอบคุณมากแล้วที่ช่วยแนะนำผม
ขอบคุณมากครับ
แต่บอกว่า ยากจริงๆ สำหรับมือใหม่อย่างพวกผม


แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2015-05-14 16:54:33 By : puupha
 


 

No. 10



โพสกระทู้ ( 9,586 )
บทความ ( 2 )



สถานะออฟไลน์


a_file
เปลี่ยนเป็น
$_FILES["filUpload"]["tmp_name"]
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2015-05-15 04:50:51 By : Chaidhanan
 


 

No. 11



โพสกระทู้ ( 70 )
บทความ ( 0 )



สถานะออฟไลน์


ตอบความคิดเห็นที่ : 10 เขียนโดย : Chaidhanan เมื่อวันที่ 2015-05-15 04:50:51
รายละเอียดของการตอบ ::
ผมเปลี่ยน code จาก a_file เป็น $_FILES["filUpload"]["tmp_name"] ตามที่คุณ Chaidhanan แนะนำ
code ที่เปลี่ยน-----------

Code (PHP)
//*** Insert Record ***//
		$db=ocilogon("user","5878", "test");
		$lob = oci_new_descriptor($objConnect, OCI_D_LOB);
		$strSQL = "INSERT INTO FILES ";
		$strSQL .="(FILESID,NAME,FILESTYPE,IMAGE) VALUES ";
		$strSQL .="(seq_next_filesid.nextval,'".$_POST["txtName"]."' ";
		$strSQL .=",'".$_FILES["filUpload"]["type"]."',:fileimage";
        
		$fileimage = file_get_contents( $_FILES['filUpload']['tmp_name'] );
		$objParse = oci_parse($objConnect, $strSQL);
		oci_bind_by_name($objParse, ':fileimage', $fileimage, -1, SQL_LBI);
		$objExecute = oci_execute($objParse, OCI_DEFAULT);	
		$lob->savefile($_FILES['filUpload']['tmp_name']);

		if($objExecute)
		{
			oci_commit($objConnect); 
			echo "Copy/Upload Complete<br>";
		}
		else
		{
			oci_rollback($objConnect); 
			echo "Copy/Upload is not Complete";
		}

		oci_free_descriptor($lob);
		oci_free_statement($objParse);
		oci_close($objConnect);

	}

?>

----------------------------
ลองรันแล้ว error ตามภาพด้านล่างครับ
php290558

รบกวนท่านผู้รู้ช่วยแนำนำหน่อยครับ
ขอบคุณมากครับ

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2015-05-29 13:40:21 By : puupha
 

   

ค้นหาข้อมูล


   
 

แสดงความคิดเห็น
Re : php แสดงรูปภาพจากฐานข้อมูล oracle แบบ ไบนารี่ เป็นตัวหนังสือขยุกขยุยแทนที่จะเป็นรูป
 
 
รายละเอียด
 
ตัวหนา ตัวเอียง ตัวขีดเส้นใต้ ตัวมีขีดกลาง| ตัวเรืองแสง ตัวมีเงา ตัวอักษรวิ่ง| จัดย่อหน้าอิสระ จัดย่อหน้าชิดซ้าย จัดย่อหน้ากึ่งกลาง จัดย่อหน้าชิดขวา| เส้นขวาง| ขนาดตัวอักษร แบบตัวอักษร
ใส่แฟลช ใส่รูป ใส่ไฮเปอร์ลิ้งค์ ใส่อีเมล์ ใส่ลิ้งค์ FTP| ใส่แถวของตาราง ใส่คอลัมน์ตาราง| ตัวยก ตัวห้อย ตัวพิมพ์ดีด| ใส่โค้ด ใส่การอ้างถึงคำพูด| ใส่ลีสต์
smiley for :lol: smiley for :ken: smiley for :D smiley for :) smiley for ;) smiley for :eek: smiley for :geek: smiley for :roll: smiley for :erm: smiley for :cool: smiley for :blank: smiley for :idea: smiley for :ehh: smiley for :aargh: smiley for :evil:
Insert PHP Code
Insert ASP Code
Insert VB.NET Code Insert C#.NET Code Insert JavaScript Code Insert C#.NET Code
Insert Java Code
Insert Android Code
Insert Objective-C Code
Insert XML Code
Insert SQL Code
Insert Code
เพื่อความเรียบร้อยของข้อความ ควรจัดรูปแบบให้พอดีกับขนาดของหน้าจอ เพื่อง่ายต่อการอ่านและสบายตา และตรวจสอบภาษาไทยให้ถูกต้อง

อัพโหลดแทรกรูปภาพ

Notice

เพื่อความปลอดภัยของเว็บบอร์ด ไม่อนุญาติให้แทรก แท็ก [img]....[/img] โดยการอัพโหลดไฟล์รูปจากที่อื่น เช่นเว็บไซต์ ฟรีอัพโหลดต่าง ๆ
อัพโหลดแทรกรูปภาพ ให้ใช้บริการอัพโหลดไฟล์ของไทยครีเอท และตัดรูปภาพให้พอดีกับสกรีน เพื่อความโหลดเร็วและไฟล์ไม่ถูกลบทิ้ง

   
  เพื่อความปลอดภัยและการตรวจสอบ กระทู้ที่แทรกไฟล์อัพโหลดไฟล์จากที่อื่น อาจจะถูกลบทิ้ง
 
โดย
อีเมล์
บวกค่าให้ถูก
<= ตัวเลขฮินดูอารบิก เช่น 123 (หรือล็อกอินเข้าระบบสมาชิกเพื่อไม่ต้องกรอก)







Exchange: นำเข้าสินค้าจากจีน, Taobao, เฟอร์นิเจอร์, ของพรีเมี่ยม, ร่ม, ปากกา, power bank, แฟลชไดร์ฟ, กระบอกน้ำ

Load balance : Server 01
ThaiCreate.Com Logo
© www.ThaiCreate.Com. 2003-2024 All Rights Reserved.
ไทยครีเอทบริการ จัดทำดูแลแก้ไข Web Application ทุกรูปแบบ (PHP, .Net Application, VB.Net, C#)
[Conditions Privacy Statement] ติดต่อโฆษณา 081-987-6107 อัตราราคา คลิกที่นี่