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 > ตันแล้วครับ ขอความช่วยเหลือครับเรื่อง SmartyTemplate หน่อยครับ



 

ตันแล้วครับ ขอความช่วยเหลือครับเรื่อง SmartyTemplate หน่อยครับ

 



Topic : 069327



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



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




คือว่าผมพยายามแปลง จากการเขียนแบบผสมระหว่าง php +html มาใช้ Smarty ปรากฏว่ามาได้สักพักก็เริ่มตันที่ loop 2 ชั้น ซึ่งต้องรับค่าจากลูปแรกเพื่อตัดสินใจว่า ลูป 2 จะเอา record ไหนบ้าง

Code (PHP)
$stm_dep=$conn->query("select * from web_menu where menu_type='superuser'");
	while($row_dep = $stm_dep->fetch(PDO::FETCH_ASSOC)){
		echo "<li><a href=\"".$row_dep["link"]."\" target=\"".$row_dep["target"]."\">".$row_dep["name"]."</a>";
		
		if($conn->rowCount("select * from web_submenu where menu_id='".$row_dep["menu_id"]."'")<=0){
		}else{
			echo "<ul>";
			$stm_dep_inner=$conn->query("select * from web_submenu where menu_id='".$row_dep["menu_id"]."'");
			        while($row_dep_inner = $stm_dep_inner->fetch(PDO::FETCH_ASSOC)){
				echo "<li><a href=\"".$row_dep_inner["link"]."\" target=\"".$row_dep_inner["target"]."\">".$row_dep_inner["name"]."</a></li>";
			         }
				echo "</ul>";
			}
							
			echo "</li>";
		}


แต่พอผมแปลงเป็น

Code (PHP)
{foreach item=data from=$objectRs}
	<li><a href="{$data.link}" target="{$data.target}">{$data.name}</a>
	</li>
{/foreach}


ตอนที่ยัง loop เดียวยังไม่มีปัญหา

แต่พอผมใส่ไปยังงี้ ซึ่งผมก็ไม่แน่ใจเหมือนกันว่าถูกไหม

Code (PHP)
{foreach item=data from=$menuRs}
	<li><a href="{$data.link}" target="{$data.target}">{$data.name}</a>
			{foreach item=datatwo from=$submenuRs}
				{if {$data.menu_id} == {$datatwo.menu_id}}
					<ul><li><a href="{$datatwo.link}" target="{$datatwo.target}">{$datatwo.name}</a></li></ul>

				{/if}
			{/foreach}
	</li>
{/foreach}


ปรากฏว่า ที่ลูปแรก ลูปภายในทำงานได้ปรกติ แต่พอลูปแรกวนมาครั้งที่สอง ลูปในมันไม่ทำงานครับ

ใครพอเชี่ยวชาญในด้านนี้ขอคำปรึกษาหน่อยครับ



Tag : PHP









ประวัติการแก้ไข
2011-11-20 19:41:15
Move To Hilight (Stock) 
Send To Friend.Bookmark.
Date : 2011-11-20 18:46:59 By : bannanai View : 1025 Reply : 16
 

 

No. 1



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



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


น่าผิดตรง

Code
{foreach item=datatwo from=$data}


เพราะค่าที่มันอ่านคือ $data ที่มาจาก loop แรก ซึ่งผมเดาว่าค่า $data นั้นน่าจะมี array ตามนี้

$data[link]
$data[target]
$data[menu_id]

มันจะไม่แสดงผลเพราะคำสั่ง

Code
{if {$data.menu_id} == {$datatwo.menu_id}}


ผมว่า

{foreach item=datatwo from=$data}

ตรง form น่าจะใช้ค่าที่ส่งมาจากไฟล์ php หลักที่เป็นการคิวรี่จากตาราง web_submenu มามากกว่า ใช้ $data จาก loop แรก






แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2011-11-20 19:17:34 By : zankumuro
 


 

No. 2



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



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


ขออภัยครับ โค๊ดครั้งแรกผิดครับ แก้ให้ใหม่แล้วครับ

โดยในลูปแรก กับลูปที่ สอง เป็นข้อมูลคนละชุดกัน ซึ่งมาจากสอง ตาราง ครับ

โดยลูปแรกจะเป็น Menu ส่วนลูปสองจะเป็น subMenu โดยมีความสัมพันธ์แบบ 1- M ซึ่ง Primary key ของ Menu จะไปเป็น Foreign Keys ของ Submenu

ซึ่งตอนลูป subMenu ก็จำเ็ป็นต้องตรวจสอบค่า ว่าเป็น subMenu ของ Menu โดยการเทียบ Key ว่าตรงกันไหมครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2011-11-20 19:49:21 By : bannanai
 

 

No. 3



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



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


ลอง

Code
{foreach $menuRs as $data}
<li><a href="{$data.link}" target="{$data.target}">{$data.name}</a>
{foreach $submenuRs as $datatwo}
{if {$data.menu_id} == {$datatwo.menu_id}}
<ul><li><a href="{$datatwo.link}" target="{$datatwo.target}">{$datatwo.name}</a></li></ul>

{/if}
{/foreach}
</li>
{/foreach}


ว่าออกไหม
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2011-11-20 20:14:32 By : zankumuro
 


 

No. 4



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



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


ตอบความคิดเห็นที่ : 3 เขียนโดย : zankumuro เมื่อวันที่ 2011-11-20 20:14:32
รายละเอียดของการตอบ ::
ไม่ต่างจากเดิมเลยครับ...

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2011-11-20 20:59:28 By : bannanai
 


 

No. 5



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



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

โห้ ผมยังไม่เคยลองนะครับ

แล้วถ้า แยก loop ตัวแปรมันแสดงผลไหมครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2011-11-21 00:29:28 By : icman
 


 

No. 6



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



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


โค๊ดที่ผมให้ไป รันของผมเองออกนะ ลองสร้างเล่นเลย ยังไงขอดูหน้า ที่คิวรี่ด้วย
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2011-11-21 00:49:16 By : zankumuro
 


 

No. 7



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



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


หน้าคิวรี่ก็ประมาณนี้นะครับ


Code (PHP)
include("includes/connect.mysql.class.php");
require('smarty/libs/Smarty.class.php');

$smarty = new Smarty;
$smarty->debugging = true;
$smarty->caching = true;
$smarty->cache_lifetime = 120;
$smarty->template_dir = 'templates/'; 
$smarty->compile_dir = 'smarty/templates_c/'; 
$smarty->config_dir = 'smarty/configs/'; 
$smarty->cache_dir = 'smarty/cache/';

$conn= new mysqlConnection();
$conn->connect();
$menuRs=$conn->execute("select * from web_menu where menu_type='superuser'");												
$submenuRs=$conn->execute("select * from web_submenu");
$smarty->assign("menuRs",$menuRs);
$smarty->assign("submenuRs",$submenuRs);
$smarty->display('home.tpl');


ส่วนใน connect.mysql.class.php

Code (PHP)
	public function execute($sql_query){
		try {
					$rs = $this->connection->prepare($sql_query);
					$rs->execute();
					$rs->setFetchMode(PDO::FETCH_ASSOC);
					return $rs;
		}catch (PDOException $e) {return $e->getMessage();}
	}//end funtion


เรื่องเซตคอนฟิคผมไม่แน่ใจว่ามันมีผลหรือปล่าว หรือผมเซตผิด ???
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2011-11-21 08:05:39 By : bannanai
 


 

No. 8



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



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


ลองปรับให้เป็น array ตามนี้ครับ

Code
$menuRs[] = $conn->execute("select * from web_menu where menu_type='superuser'");
$submenuRs[] = $conn->execute("select * from web_submenu");

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2011-11-21 08:19:27 By : zankumuro
 


 

No. 9



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



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


ตอบความคิดเห็นที่ : 8 เขียนโดย : zankumuro เมื่อวันที่ 2011-11-21 08:19:27
รายละเอียดของการตอบ ::
ไม่ได้ครับ

ขอโค๊ดแบบเต็มๆ ที่คุณ Yoshikuni Masato รันผ่านได้ไหมครับ

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2011-11-21 08:38:03 By : bannanai
 


 

No. 10



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



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


หน้า query

Code
$db_connect = mysql_connect('localhost', 'root', 'root');
$db_select = mysql_select_db("test");
$db_set_name = mysql_query('SET NAMES UTF8');

$menuRs_query = mysql_query('SELECT * FROM menu');
while($menuRs[] = mysql_fetch_assoc($menuRs_query)){
}

$submenuRs_query = mysql_query('SELECT * FROM submenu');
while($submenuRs[] = mysql_fetch_assoc($submenuRs_query)){
}


หน้า template

Code
<ul>
{foreach $menuRs as $data}
<li><a href="{$data.link}" target="{$data.target}">{$data.name}</a>
{foreach $submenuRs as $datatwo}
{if {$data.menu_id} == {$datatwo.menu_id}}
<ul><li><a href="{$datatwo.link}" target="{$datatwo.target}">{$datatwo.name}</a></li></ul>

{/if}
{/foreach}
</li>
{/foreach}
</ul>

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2011-11-21 09:05:17 By : zankumuro
 


 

No. 11



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



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


ตอบความคิดเห็นที่ : 10 เขียนโดย : zankumuro เมื่อวันที่ 2011-11-21 09:05:17
รายละเอียดของการตอบ ::

ผมเชื่อมต่อ database ผ่าน pdo ครับ ลองตามที่บอกมาหมดแล้วก็ยังไม่ออกเลยครับ

คงต้องล้มเลิกแล้วครับ ปัญหาคือ มันให้ {foreach} ได้ 1 ครังต่อ 1 ตัวแปรที่ assign เข้ามา ทำให้การทำลูปสองชั้นไม่ได้ผลครับ




ประวัติการแก้ไข
2011-11-21 09:35:32
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2011-11-21 09:31:38 By : bannanai
 


 

No. 12



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



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


ลอง print_r ตัวแปร $menuRs กับ $submenuRs มาให้ดูได้ไหมครับ จะดูว่า array เป็นแบบไหน วิธีการเรียกลูปผ่าน smarty template มันมี 2 - 3 แบบเลยครับ ขึ้นอยู่กับว่าจะเรียกข้อมูลออกมาแบบไหน
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2011-11-21 09:36:16 By : zankumuro
 


 

No. 13



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



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


มันมาเป็น object ครับ

print_r($menuRs)
Code
PDOStatement Object ( [queryString] => select * from web_menu where menu_type='superuser' )



print_r($submenuRs)
Code
PDOStatement Object ( [queryString] => select * from web_submenu )




แต่ถ้าเฟสมาแบบอารเรย์


print_r($menuRs)
Code
Array ( [0] => Array ( [menu_id] => 5 [order_id] => 0 [menu_type] => superuser [name] => จัดการหน้าแรก [link] => test.php [target] => _self ) [1] => Array ( [menu_id] => 6 [order_id] => 0 [menu_type] => superuser [name] => จัดการผู้ใช้ [link] => test.php [target] => _self ) [2] => Array ( [menu_id] => 7 [order_id] => 0 [menu_type] => superuser [name] => กระดานข่าว [link] => test.php [target] => _self ) [3] => Array ( [menu_id] => 8 [order_id] => 0 [menu_type] => superuser [name] => แชทรูม [link] => test.php [target] => _self ) [4] => Array ( [menu_id] => 9 [order_id] => 0 [menu_type] => superuser [name] => ห้องภาพ [link] => test.php [target] => _self ) [5] => )



print_r($submenuRs)
Code
Array ( [0] => Array ( [sub_id] => 1 [menu_id] => 5 [name] => จัดการเมนูหลัก [link] => manage_mainmenu.php [target] => _self ) [1] => Array ( [sub_id] => 2 [menu_id] => 5 [name] => จัดการเมนูสไลด์ข่าว [link] => manage_slide.php [target] => _self ) [2] => Array ( [sub_id] => 3 [menu_id] => 5 [name] => จัดการลิงค์บาร์ [link] => manage_linkbar.php [target] => _self ) [3] => Array ( [sub_id] => 4 [menu_id] => 6 [name] => เพิ่มผู้ใช้ [link] => add_user.php [target] => _self ) [4] => Array ( [sub_id] => 5 [menu_id] => 5 [name] => จัดการแบนเนอร์ [link] => [target] => ) [5] => Array ( [sub_id] => 6 [menu_id] => 5 [name] => จัดการโพล [link] => [target] => ) [6] => Array ( [sub_id] => 7 [menu_id] => 6 [name] => แก้ไขผู้ใช้ [link] => [target] => ) [7] => Array ( [sub_id] => 8 [menu_id] => 6 [name] => แบนผู้ใช้ [link] => [target] => ) [8] => Array ( [sub_id] => 9 [menu_id] => 6 [name] => แบน IP [link] => [target] => ) [9] => Array ( [sub_id] => 10 [menu_id] => 6 [name] => แบน Mac Address [link] => [target] => ) [10] => Array ( [sub_id] => 11 [menu_id] => 6 [name] => อนุมัติผู้ใช้ [link] => [target] => ) [11] => Array ( [sub_id] => 12 [menu_id] => 6 [name] => เพิ่มฟิลด์ผู้ใช้ [link] => [target] => ) [12] => Array ( [sub_id] => 13 [menu_id] => 0 [name] => กลุ่มผู้ดูแล [link] => [target] => ) [13] => Array ( [sub_id] => 14 [menu_id] => 6 [name] => กลุ่มผู้ใช้ [link] => [target] => ) [14] => Array ( [sub_id] => 15 [menu_id] => 6 [name] => ระดับการโพส [link] => [target] => ) [15] => Array ( [sub_id] => 16 [menu_id] => 7 [name] => จัดการหมวดหมู่ [link] => [target] => ) [16] => Array ( [sub_id] => 17 [menu_id] => 7 [name] => จัดการกระดาน [link] => [target] => ) [17] => )



ประวัติการแก้ไข
2011-11-21 09:50:43
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2011-11-21 09:49:04 By : bannanai
 


 

No. 14



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



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


ผมดูใน view source น่าจะได้แล้วครับ แต่มัน loop ค่าว่างเกินมา 1 ค่าทำให้การแสดงผลผิดพลาดไป


ข้อมูลมี 5 ชุด อาเรย์เริ่มเก็บที่ 0 ถึล 5 ทำให้ array ค่าที่5 ว่างแล้วมันก็นำมาแสดงผล


ประวัติการแก้ไข
2011-11-21 10:16:52
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2011-11-21 10:06:10 By : bannanai
 


 

No. 15



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



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


ใช้เงื่อนไข if แก้ปัญหาค่าว่างไปก่อนก้น่าจะได้ครับ ปกติผมใช้ loop แบบ section มากกว่า
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2011-11-21 10:25:43 By : zankumuro
 


 

No. 16



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



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


โอเคได้แล้วครับ ขอบคุณมากๆครับผม


ประวัติการแก้ไข
2011-11-21 10:33:57
2011-11-21 10:44:22
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2011-11-21 10:33:13 By : bannanai
 

   

ค้นหาข้อมูล


   
 

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