PHP Ionic Angularjs Phonegap AJAX Javascript CSS MySQL jQuery Forum

อยากให้รูปแสดงเรียงตามชื่อที่ตั้งไว้ใน Gallery เช่น 1-30

อยากให้รูปแสดงเรียงตามชื่อที่ตั้งไว้ใน Gallery เช่น 1-30

ผมทำ Gallery ด้วย jqery Php ผมตั้งชื่อรูป 1-30 แต่เวลารูปแสดง รูปจะสลับกัน ไม่เรียงตามชื่อรูป เช่น อยากให้แสดงเริ่มจากรูปชือ 1.jpg-30 อ่ะครับไม่ทราบต้องทำไงให้รูปเรียงตามชื่อ ผมแปะโค๊ดมาด้วยครับ
 

$directory = 'gallery/Mother-Day53';/*ตรงนี้คือผมเอารูปจาก folder ชือ Mother-Day53*/

$allowed_types=array('jpg','jpeg','gif','png');
$file_parts=array();
$ext='';
$title='';
$i=0;

$dir_handle = @opendir($directory) or die("There is an error with your image directory!");

while ($file = readdir($dir_handle)) 
{
	if($file=='.' || $file == '..') continue;
	
	$file_parts = explode('.',$file);
	$ext = strtolower(array_pop($file_parts));

	$title = implode('.',$file_parts);
	$title = htmlspecialchars($title);
	
	$nomargin='';
	
	if(in_array($ext,$allowed_types))
	{
		if(($i+1)%4==0) $nomargin='nomargin';
	
		echo '
		<div class="pic '.$nomargin.'" style="background:url('.$directory.'/'.$file.') no-repeat 50% 50%;">
		<a href="'.$directory.'/'.$file.'" title="'.$title.'" target="_blank">'.$title.'</a>
		</div>';
		
		$i++;
	}
}


โดย:  Boy415 IP: 113.53.10.xxx วันที่: 18-08-2010 เวลา: 13:40:43

คำแนะนำ และการใช้งาน

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


  • ถาม-ตอบ กรุณา ล็อกอินเข้าระบบ


  • ( หรือ สามารถทำการ สมัครสมาชิก และล็อกอิน ด้วย ปุ่ม Log in with Facebook ด้านล่าง )
 ความคิดเห็นที่ 8

ตาม คห.7 ผมลองก๊อฟโค๊ดที่พี่ใส่มา แต่มันออกน่ะครับ และตาม คห.6 รูปที่แสดงจะเรียงตาม size ของรูปน่ะครับ มันจะไม่เรียงตาม ชื่อรูปน่ะครับ ช่วยหนอยน่ะครับ พี่ๆ ขอบคุณครับ



โดย:  Boy415 IP: 114.128.150.xxx วันที่: 18-08-2010 เวลา: 22:40:58
 ความคิดเห็นที่ 7

จากโค้ดตามคำถาม ที่ใช้อยู่ เป็นการ วนดึงชื่อใน โฟลเดอร์มาแสดงด้วยคำสั่ง readdir
และถ้าจะใช้วิธีการ ตามความเห็นที่ 2 จะต้องวนเอาซื่อไปกำหนดเป็น array ก่อน แล้วค่อยวนแสดงใหม่หลังจากมีการจัดเรียงแล้ว 
ถ้าไม่จำเป็นที่ต้องใฃ้ รูปแบบโค้ดเดิม แนะนำ รูปแบบที่ง่ายกว่า
 

<?php
$allowed_types=array('jpg','jpeg','gif','png');
$directory="gallery/Mother-Day53/";
$files1 = scandir($directory);
$i=0;
foreach($files1 as $key=>$value){
	if($key>1){
		$file_parts = explode('.',$value);
		$ext = strtolower(array_pop($file_parts));
		if(in_array($ext,$allowed_types)){
      		if(($i+1)%4==0) $nomargin='nomargin';     
			echo '
			<div class="pic '.$nomargin.'" style="background:url('.$directory.$file.') no-repeat 50% 50%;">   
			<a href="'.$directory.$file.'" title="'.$title.'" target="_blank">'.$title.'</a>   
			</div>';    
			        
			$i++;   			
		}

	}
}
?> 

ฟังก์ชัน scandir จะจัดเรียงรายการชื่อไฟล์ให้อัตโนมัติ



โดย:  Ninenik IP: 110.164.244.xxx วันที่: 18-08-2010
 ความคิดเห็นที่ 6

 จากสคริปที่ให้มาผมทดสอบให้แล้วครับ มันก็เรียงจากน้อยไปหามากอยู่แล้วครับ 

ตามรูปภาพเลยนะครับ นั้นแหละที่ผมทดสอบให้แล้วมันก็แสดง 1-6 ตามชื่อภาพครับ



โดย:  Cpuhost IP: 124.121.147.xxx วันที่: 18-08-2010 เวลา: 16:49:40
 ความคิดเห็นที่ 5

 

$directory = 'gallery/Mother-Day53';/*ตรงนี้คือผมเอารูปจาก folder ชือ Mother-Day53*/

$allowed_types=array('jpg','jpeg','gif','png');
$file_parts=array();
$ext='';
$title='';
$i=0;

$dir_handle = @opendir($directory) or die("There is an error with your image directory!");

while ($file = readdir($dir_handle)) 
{
	if($file=='.' || $file == '..') continue;
	
	$file_parts = explode('.',$file);
	$ext = strtolower(array_pop($file_parts));

	$title = implode('.',$file_parts);
	$title = htmlspecialchars($title);
	
	$nomargin='';
	
	if(in_array($ext,$allowed_types))
	{
		if(($i+1)%4==0) $nomargin='nomargin';
	
		echo '
		<div class="pic '.$nomargin.'" style="background:url('.$directory.'/'.$file.') no-repeat 50% 50%;">
		<a href="'.$directory.'/'.$file.'" title="'.$title.'" target="_blank">'.$title.'</a>
		</div>';
		
		$i++;
	}
}

พี่ครับช่วยแทรกให้ผมได้ป่าวครับ ไม่ถูกจริงๆๆ ผมก๊อฟโค๊ดมาอีกที ช่วยหน่อยน่ะครับ รบกวนพี่ด้วยครับ



โดย:  Boy415 IP: 118.173.167.xxx วันที่: 18-08-2010 เวลา: 16:03:02
 ความคิดเห็นที่ 4

 ลองเอาใส่ตรงนี้ดูครับ sort($title); ดูครับหรือเอาลองดัดแปลงตามที่พี่ Ninenik บอกก็ได้ครับหรือลองศึกษาโค้ดตัวนี้อีกทีครับ

<?php
$array1 = $array2 = array('IMG0.png', 'img12.png', 'img10.png', 'img2.png', 'img1.png', 'IMG3.png');

sort($array1);
echo "Standard sortingn";
print_r($array1);

natcasesort($array2);
echo "nNatural order sorting (case-insensitive)n";
print_r($array2);
?>

ได้ไม่ได้บอกด้วยนะครับเดียวผมแวะเข้ามาใหม่



โดย:  Cpuhost IP: 124.121.147.xxx วันที่: 18-08-2010 เวลา: 15:23:47
 ความคิดเห็นที่ 3

sort() หรือ natcasesort() เอาไปใส่บรรทัด ไหนครับ ขอบคุณน่ะครับทุกๆคำตอบ



โดย:  Boy415 IP: 118.173.167.xxx วันที่: 18-08-2010 เวลา: 15:04:51
 ความคิดเห็นที่ 2

 ลองใช้คำสั่ง sort() หรือ natcasesort() ดูครับ

น่าจะช่วยได้ครับ



โดย:  Cpuhost IP: 124.121.147.xxx วันที่: 18-08-2010 เวลา: 14:49:08
 ความคิดเห็นที่ 1

ลองเอาโค้ดนี้ไปประยุกต์ดู

 

<?php
$allowed_types=array('jpg','jpeg','gif','png');
$dir    ="pic_img/";
$files1 = scandir($dir);
$i=1;
foreach($files1 as $key=>$value){
	if($key>1){
		$file_parts = explode('.',$value);
		$ext = strtolower(array_pop($file_parts));
		if(in_array($ext,$allowed_types)){
			echo $value."<br>";			
		}

	}
}
?> 

 



โดย:  Ninenik IP: 183.89.223.xxx วันที่: 18-08-2010