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 > สอนถามเรื่องการใช้งาน OOP กับการ WHILE หน่อยครับ เขียน CLASS ใช้งานครับ



 

สอนถามเรื่องการใช้งาน OOP กับการ WHILE หน่อยครับ เขียน CLASS ใช้งานครับ

 



Topic : 093217

Guest




พอดีผมมีปัญหาเรื่องการ while ข้อมูล Code ดังนี้ครับ

Code (PHP)
$db1=new db;
$db1->open();
$db1->setContent("utf8");
$sql_cat = "SELECT * FROM category";
$db1->query($sql_cat);

while($arr_cat = $db1->fetchAssoc())
	{

		echo "<ul>".$arr_cat['cname'];
		echo $sql_subcat = "SELECT * FROM subcategory where cid=".$arr_cat['cid']."";
		$db1->query($sql_subcat);
			while($arr_subcat = $db1->fetchAssoc())
				{
					echo "<li>".$arr_subcat['subname']."</li>";
				}
		echo "</ul>";
	}



ลูปออกมาได้แค่ record เดียว
ผมเลยลอง CODE

Code (PHP)
while($arr_cat = $db1->fetchAssoc())
	{

		echo "<ul>".$arr_cat['cname'];
		echo $sql_subcat = "SELECT * FROM subcategory where cid=".$arr_cat['cid']."";
		$db2=new db;
		$db2->open();
		$db2->setContent("utf8");
		$db2->query($sql_subcat);
			while($arr_subcat = $db2->fetchAssoc())
				{
					echo "<li>".$arr_subcat['subname']."</li>";
				}
		echo "</ul>";
	}



ปรากาฏว่าค่าออกมาได้ แต่จะทำยังไงให้สะดวกกว่านี้ครับ คือผมมีปัญหาในส่วนของ $db2 คือต้องกำหนดเองตลอด เช่น ถ้าซ้อน LOOP เข้าไปอีก จะต้่องเป็น $db3 แบบนี้ครับ ไม่ทราบว่าพอมีวิธีใช้งานที่ง่ายกว่านี้ไหมครับ

CLASS
Code (PHP)
class DB

{

    // Connection parameters

	var $host = 'localhost';
    var $user ="root";
    var $password ="1234";
    var $persistent = false;
	var $adminid='';
	var $adminipwd='';
	var  $database = 'test';

	// Database connection handle

    var $conn = NULL;
    var $result = false;   // Query result
	
	function setContent($type)
	{
		$cs1 = "SET character_set_results=".$type;
		mysql_query($cs1) or die('Error query: ' . mysql_error()); 
		$cs2 = "SET character_set_client =".$type;
		mysql_query($cs2) or die('Error query: ' . mysql_error()); 
		$cs3 = "SET character_set_connection =".$type;
		mysql_query($cs3) or die('Error query: ' . mysql_error());
	}
	
    function open()

    {
        // Choose the appropriate connect function
        if ($this->persistent) {
            $func = 'mysql_pconnect';
        } else {
            $func = 'mysql_connect';
        }

        // Connect to the MySQL server
        $this->conn = $func($this->host, $this->user, $this->password);
        if (!$this->conn) {
            return false;
        }

        // Select the requested database
        if (!@mysql_select_db($this->database, $this->conn)) {
            return false;
        }
		
        return true;

    }

    function close()
    {
        return (@mysql_close($this->conn));
    }

    function error()
    {

        return (mysql_error());
    }

    function query($sql = '')

    {
        $this->result = @mysql_query($sql, $this->conn);
		return ($this->result != false);
    }

    function affectedRows()
    {

        return (@mysql_affected_rows($this->conn));
    }

    function numRows()

    {
        return (@mysql_num_rows($this->result));
    }

	function fieldName($field)
    {
       return (@mysql_field_name($this->result,$field));
    }

	 function insertID()
    {
        return (@mysql_insert_id($this->conn));
    }



    function fetchObject()
    {
        return (@mysql_fetch_object($this->result, MYSQL_ASSOC));
    }



    function fetchArray()
    {
        return (@mysql_fetch_array($this->result, MYSQL_NUM));
    }



    function fetchAssoc()
    {
        return (@mysql_fetch_assoc($this->result));
    }



    function freeResult()
    {
        return (@mysql_free_result($this->result));
    }

}





Tag : PHP







Move To Hilight (Stock) 
Send To Friend.Bookmark.
Date : 2013-03-31 16:34:10 By : ifush View : 850 Reply : 1
 

 

No. 1



โพสกระทู้ ( 1,819 )
บทความ ( 20 )

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

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

เท่าที่ผมสังเกตดูคลาส DB ของคุณมันก็ไม่ได้ช่วยให้เขียนโปรแกรมสะดวกขึ้นนะครับ
เป็นแค่เขียนครอบคำสั่ง mysql ให้อยู่ในรูปแบบของ OOP แต่ไม่ได้ใช้ความสามารถของ OOP จริงๆ เลยแม้แต่น้อย
การเขียนแบบนี้ไม่ช่วยลดขั้นตอนเลยครับ ลองคิดดู
คุณต้องเรียก query() แล้วคุณก็ต้องเรียก fetchAssoc() อยู่ดี
มันไม่ต่างอะไรกับการเขียนแบบปกติเลย
แถมแย่กว่าอีก เพราะกลายเป็นว่าคุณสามารถจัดการกับ result ได้ทีละอันเท่านั้น

วิธีแก้ ไม่ต้องใช้มันครับ กลับไปเขียนแบบเก่าดีกว่า






แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2013-03-31 17:55:19 By : cookiephp
 

   

ค้นหาข้อมูล


   
 

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