• 1 رای - 4 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
گرفتن آرایه ها در شی گرایی
#1
درود بر همه
من کم کم دارم شی گرایی رو شروع می کنم
برای همین اینجوری شروع کردم
از دوستان حرفه ای یه سوال دارم
جطور می تونم آرایه ها رو برکپگردونم و چاپ کنم
مثلا با فچ کردن از پایگاه داده
کد پی‌اچ‌پی:
<?php
    
class db
    
{
        private 
$dblink;
        private 
$query;
        
        function 
__construct()
        {
            
define("_HOST""localhost");
            
define("_USER""root");
            
define("_PASS""");
            
define("_NAME""st");
            
            
$this->dblink mysql_connect(_HOST_USER_PASS_NAME) or die('connect ');
            
mysql_select_db(_NAME$this->dblink);

        }
        
        function 
set_query($query)
        {
            
$this->query $query;
        }
    
        
//     NUM Rows
        
function num_row()
        {
            
$result mysql_query($this->query) or die('num row query error');
            
$num_row mysql_num_rows($result) or die('num row error');
            return 
$num_row;
            
        }
        
//   Fetch rows
        
function fetch_row()
        {
            
$result = @mysql_query($this->query) or die('select query error');
            
$fetch = @mysql_fetch_array($result) or die('select all error');
            return 
$fetch;
        }
    }
?>

حالا چطور از تابع num_row و fetch_row استفاده کنم؟

کدی که من نوشتم اینه ولی جواب نمی ده

کد پی‌اچ‌پی:
    $a = new db();
    
$a->set_query("select * from exam");
    echo 
$a->fetch_row(); 

نظرتون رو هم بگین که کلا روش کدنوشتن درسته یا نه

ممنون
همه جوره اش رو داریم ظاهرن
  پاسخ
تشکر شده توسط :
#2
محمدامین عزیز سپاسگذارم
اما اینو نفهمیدم
نقل قول:num_row براش یه تابع جدا تعریف کن
یه تابع جداست دیگه نیست؟
من اینو اصلاحش کردم به این صورت
یه نگاهی بهش بندازین:
کد پی‌اچ‌پی:
<?php
    
class db
    
{
        private 
$dblink;
        private 
$query;
        private 
$num_row;
        private 
$result;
        private 
$fetch;
        
        function 
__construct()
        {
            
define("_HOST""localhost");
            
define("_USER""root");
            
define("_PASS""");
            
define("_NAME""st");
            
            
$this->dblink mysql_connect(_HOST_USER_PASS_NAME) or die('connect ');
            
mysql_select_db(_NAME$this->dblink);
        }
        
        function 
set_query($query)
        {
            
$this->query $query;
        }
    
        
//     NUM Rows
        
function set_num_row()
        {
            
$result mysql_query($this->query) or die('num row query error');
            
$this->num_row mysql_num_rows($result) or die('num row error');
        }
        
        function 
get_num_row()
        {
            echo 
$this->num_row;
        }
        
        
//   Fetch rows
        
function fetch_row()
        {
            
$this->result = @mysql_query($this->query) or die('select query error');
            
$this->fetch = @mysql_fetch_array($this->result) or die('select all error');
        }
        
        function 
get_fetch()
        {
            for(
$i=0$i<$this->num_row; ++$i)
            {
                
$row $this->fetch();
                echo 
print_r($row);
            } 
        }
        
        function 
__distruct()
        {
            
mysql_close();
        }
    }
    
?>

و اینجوری ازش استفاده کردم که خطا داد:
کد پی‌اچ‌پی:
    include('db.php');
    
    
$a = new db();
    
$a->set_query("select * from exam");
    
$a->set_num_row();
    
$a->get_fetch(); 

خطا هم اینه :
کد:
Fatal error: Call to undefined method db::fetch() in D:\wamp\www\z1\db.php on line 49
همه جوره اش رو داریم ظاهرن
  پاسخ
تشکر شده توسط :
#3
بسم الله الرحمن الرحیم
سلام
یک سوالی داشتم / البته چندان به شی گرایی هم آشنایی ندارم ولی:
چرا در کد زیر:
کد پی‌اچ‌پی:
include('db.php');
    
    
$a = new db();
    
$a->set_query("select * from exam");
    
$a->set_num_row();
    
$a->get_fetch(); 

در قسمت زیر:
کد پی‌اچ‌پی:
$a = new db(); 

این پارانتز ها را گذاشته اید؟

مگر نباید اینگونه باشد؟ :
کد پی‌اچ‌پی:
$a = new db

؟
  پاسخ
تشکر شده توسط :
#4
والا فرقی نمی کنه
تو جفتشون کار می کنه
اما حق با شماست
درستش همونیه که شما می گین
همه جوره اش رو داریم ظاهرن
  پاسخ
تشکر شده توسط :
#5
بسم الله الرحمن الرحیم
سلام
بنظرم باید ایراد از خط 49 در کد اصلی باشد ( که در خطا هم خودش ذکر کرده است )/ در خطا هم ذکر شده که همچین متدی وجود ندارد.

منظورم این خطه:
کد پی‌اچ‌پی:
$row $this->fetch(); 

شما اینگونه بنویسید ببینید چه می شود:
کد پی‌اچ‌پی:
$row $this->fetch
  پاسخ
تشکر شده توسط :
#6
درست شد
خروجی فقط یه یک بود
خوب قاعدتاً من اینو نمی خوام
من می خوام اطلاعات پایگاه داده رو که کانکت کردم بهش چاپ کنم
چی کار کنم؟
همه جوره اش رو داریم ظاهرن
  پاسخ
تشکر شده توسط :
#7
بسم الله الرحمن الرحیم
سلام
خوب من کدتون رو به این صورت تغییر دادم:

کد پی‌اچ‌پی:
<?php
    
class db
    
{
        private 
$dblink;
        private 
$query;
        private 
$num_row;
        private 
$result_num_row;
        private 
$result_fetch;
        private 
$fetch;
        
        function 
__construct()
        {
            
define("_HOST""localhost");
            
define("_USER""root");
            
define("_PASS""");
            
define("_NAME""st");
            
            
$this->dblink mysql_connect(_HOST_USER_PASS_NAME) or die('connect ');
            
mysql_select_db(_NAME$this->dblink);
        }
        
        function 
set_query($query)
        {
            
$this->query $query;
        }
    
        
//     NUM Rows
        
function set_num_row()
        {
            
$result_num_row mysql_query($this->query) or die('num row query error');
            
$this->num_row mysql_num_rows($result_num_row) or die('num row error');
        }
        
        function 
get_num_row()
        {
            echo 
$this->num_row;
        }
        
        
//   Fetch rows
        
function set_fetch()
        {
            
$result_fetch mysql_query($this->query) or die('select query error');
            
$this->fetch mysql_fetch_array($result_fetch) or die('select all error');
        }
        
        function 
get_fetch()
        {
            for(
$i=0$i $this->num_row; ++$i)
            {
                
$row $this->fetch;
                echo 
print_r($row);
            } 
        }
        
        function 
__distruct()
        {
            
mysql_close();
        }
    }
    
?>

و برای نشان دادن مقادیر به این صورت عمل کنید:
کد پی‌اچ‌پی:
<?php
    
    
include('db.php');
    
    
$a = new db();
    
$a->set_query("select * from exam");
    
$a->set_num_row();
    
$a->get_num_row();
    
$a->set_fetch();
    
$a->get_fetch();
    
?>

یک توضیح کوچک:
شما اگر این کدها را در کد دوم قرار ندهید:
کد پی‌اچ‌پی:
$a->set_num_row();
    
$a->get_num_row(); 

آن موقع حلقه بینهایت اجرا خواهد شد.

این کدها هم برای ثبت و دریافت اطلاعات مروبطه از دیتابیس است:
کد پی‌اچ‌پی:
$a->set_num_row();
    
$a->get_num_row(); 

===
یک چیزی هم امروز از این کلاس آموختم Smile
  پاسخ
تشکر شده توسط :
#8
بسم الله الرحمن الرحیم
سلام
و البته destruct درست است نه distruct .
  پاسخ
تشکر شده توسط :


پرش به انجمن:


کاربران در حال بازدید این موضوع: 1 مهمان