/
  • مشکل این کد کجاست؟

  • ارسال پاسخ   امتیاز موضوع:
    • 1 رأی - میانگین امیتازات: 5
    • 1
    • 2
    • 3
    • 4
    • 5

    حالت موضوعی | حالت خطی مشکل این کد کجاست؟
    نویسنده پیام
    cyletech غایب
    علیرضا اسکندرپور شوفری
    *****

    ارسال‌ها: 2,197
    تاریخ عضویت: ۱۳۸۸ فروردين ۸
    اعتبار: 42
    تشکرها : 1258
    ( 2239 تشکر در 1089 ارسال )
    ارسال: #1
    مشکل این کد کجاست؟
    سلام دوستان،

    خواهش می کنم دقت کنید و بگین که مشکل این کد کجاست که میگه مقداری که مثلا به mysql_fetch_array دادی قابل قبول نیست.

    کد PHP:
        //Simple Querise
        
    public function query $query )
        {
            if ( !
    $this->connected $this->open();
            
    $qdb = @mysql_query $query$this->db );
            
    $this->query_id $qdb;
            if ( !
    $qdb )
            {
                echo 
    "<h1>عدم توانایی در اتصال به پس جرس جو</h1>, " .mysql_error $this->db );
            }
            return 
    $qdb;
        }
        
        
    //Super Queries
        
    public function super_query $query )
        {
                
    $this->query($query);
                
    $rows = array();
                while ( 
    $row $this->fetchAssoc() )
                {
                    
    $rows[] = $row;
                }
                
    $this->freeResult();
                return 
    $rows;
        }
        
        
    //mysql_num_rows
        
    public function numRows()
        {
            return 
    mysql_num_rows $this->query_id );
        }
        
        
    //mysql_fetch_assoc
        
    public function fetchAssoc()
        {
            return 
    mysql_fetch_assoc $this->query_id );
        }
        
        
    //mysql_fetch_array
        
    public function fetchArray()
        {
            return 
    mysql_fetch_array $this->query_id );
        }
        
        
    //mysql_free_result
        
    public function freeResult()
        {
            return 
    mysql_free_result $this->query_id );
        } 

    من در تابع query مشخص کردم که query_id برابر اون query باشه اما باز خوانده نمیشه انگار!

    همچنین لطف کنید بگین که آیا نیاز داره در کلا دیتابیس از تابع close برای بستن دیتابیس استفاده کنیم؟ یعنی از کد زیر حتما باید استفاده بشه؟ چون اصلا بکارم نمیاد.

    کد PHP:
        //Close mySQL
        
    public function close()
        {
            
    $cdb = @mysql_close $this->db );
            if ( !
    $cdb )
            {
                echo 
    "<h1>عدم توانایی در بستن اتصال</h1>, " .mysql_error $this->db );
            }
            return 
    $cdb;
        } 


    ممنونم Angel
    ۱۳۸۸ تير ۹ ۱۰:۰۸ عصر
    یافتن ارسال‌ها پاسخ با نقل قول
     تشکر شده توسط :
    Y.P.Y آفلاین
    ناظم کل
    *******

    ارسال‌ها: 2,780
    تاریخ عضویت: ۱۳۸۷ دي ۲۸
    اعتبار: 103
    تشکرها : 2181
    ( 4856 تشکر در 2220 ارسال )
    ارسال: #2
    RE: مشکل این کد کجاست؟
    سلام،
    اولاً این خط if ( !$this->connected ) $this->open(); رو حذف کن. ایمن تره خودت مراحل اتصال و انتخاب Database رو انجام بدی. connect, open, query, close...
    دوماً کل تابع رو میتونی اینطوری بنویسی:
    کد PHP:
        public function query($query)
        {
            if(!
    $this->connected): return((bool)false);
            endif;
            
    $this->query_id= @mysql_query($query$this->db) or echo('<h1 dir="rtl">عدم توانایی در اجرای پرس و جو.</h1>, ' mysql_error($this->db));
        } 
    سوماً Query که اجرا میکنی چیه؟ و خطا رو هم بنویس.
    چهارماً همیشه Comment های توضیح رو از # یا // فاصله بده و Comment های کد رو بچسبون:
    کد PHP:
    # Close MySQL
    // Close MySQL

    #mysql_close();
    //mysql_close() 

    در مورد سوال دوم، نیازه. اون هم بدون Return مقدار.
    کد PHP:
        // Close MySQL
        
    public function close()
        {
            @
    mysql_close($this->db) or or echo('<h1 dir="rtl">عدم توانایی در بستن اتصال.</h1>, ' mysql_error($this->db));
        } 
    __________________________________________________________________________
    وبلاگ: Yousha.Blog.ir

    صدام: "اگر با ارتش شاه ایران طرف بودیم، یک ماهه جنگ را می بردیم"
    http://gulfnews.com/opinion/thinkers/ira...i-1.500997
    (آخرین ویرایش در این ارسال: ۱۳۸۸ تير ۱۰ ۰۲:۵۷ عصر، توسط Y.P.Y.)
    ۱۳۸۸ تير ۱۰ ۰۲:۵۶ عصر
    یافتن ارسال‌ها WWW پاسخ با نقل قول
     تشکر شده توسط :
    cyletech غایب
    علیرضا اسکندرپور شوفری
    *****

    ارسال‌ها: 2,197
    تاریخ عضویت: ۱۳۸۸ فروردين ۸
    اعتبار: 42
    تشکرها : 1258
    ( 2239 تشکر در 1089 ارسال )
    ارسال: #3
    RE: مشکل این کد کجاست؟
    از توضیحات اضافه ای که دادی خیلی ممنونم یوشا جان Heart واقعا بدردم خورد. حالا یک سوال اگر در مورد آخرین کدی که دادی return کنیم مشکلی داره؟
    در رابطه با اون $this->connected هم من اینطوری تغییرش دادم. ببین درسته یا نه لطفا.

    کد PHP:
        // You have to use this function to use of that queries do not have to anythings.
        
    public function query $query )
        {
            
    $this->db = @mysql_connectMS_HOSTNAMEMS_USERNAMEMS_PASSWORD );
            
    $sdb = @mysql_select_dbMS_NAME );
            
    $qdb = @mysql_query $query$this->db );
            if ( !
    $qdb )
            {
                echo 
    "<h1>عدم توانایی در اتصال به پس جرس جو</h1>, " .mysql_error $this->db );
            }
            return 
    $qdb;
            
    $this->query_id $qdb;
        } 

    اما من هنوز جواب اصلیم رو نگرفتم. لطفا تابع super_query رو ببینید. این تابعی هست که توش تمام عملیات انجام میشه مثل mysql_fetch_array و ... . من میخوام یک تابع super داشته باشم که بعضی جاها بدرد میخوره و یکی هم ساده که باز دارم و سالم هم هست. اما اون super_query که نوشتم مشکل داره. لطفا مشکلش رو بگید. ممنون
    ۱۳۸۸ تير ۱۰ ۰۶:۳۱ عصر
    یافتن ارسال‌ها پاسخ با نقل قول
     تشکر شده توسط :
    Y.P.Y آفلاین
    ناظم کل
    *******

    ارسال‌ها: 2,780
    تاریخ عضویت: ۱۳۸۷ دي ۲۸
    اعتبار: 103
    تشکرها : 2181
    ( 4856 تشکر در 2220 ارسال )
    ارسال: #4
    RE: مشکل این کد کجاست؟
    نقل قول: حالا یک سوال اگر در مورد آخرین کدی که دادی return کنیم مشکلی داره؟
    نه، ولی احتیاجی نیست خروجی بده. هست بنظرت؟

    نقل قول: در رابطه با اون $this->connected هم من اینطوری تغییرش دادم. ببین درسته یا نه لطفا.
    درست هست ولی اصولی و بهینه نیست. اینطوری نیازی به if نداری:
    کد PHP:
        $qdb= @mysql_query($query$this->db) or echo('<h1 dir="rtl">عدم توانایی در اجرای پس جرس جو.</h1>, ' mysql_error($this->db)); 

    یک چیزه دیگه: بهتر نیست در صورت عدم اجرای Query بجای echo از exit یا return(false) استفاده کنی؟ چون آخرش $qdb رو Return کردی؟!

    در مورد مشکل Super query، بهتره تابع
    کد:
    //mysql_fetch_assoc
        public function fetchAssoc()
        {
            return mysql_fetch_assoc ( $this->query_id );
        }
    رو کلاً حذف کنی. چراکه mysql_fetch_array رو داری!
    این رو جایگزین Super quiery بکن و امتحان کن:
    کد PHP:
        // Super queries
        
    public function super_query($query)
        {
            
    $this->query($query);
            
    $rows= array();
                while(
    $row $this->fetchArray())
                {
                    
    $rows[]= $row;
                }
            
    $this->freeResult();
            unset(
    $query$row);
        return((array)
    $rows);
        } 
    Query و خطا رو اگر مشکل داشت اینجا بنویس...
    __________________________________________________________________________
    وبلاگ: Yousha.Blog.ir

    صدام: "اگر با ارتش شاه ایران طرف بودیم، یک ماهه جنگ را می بردیم"
    http://gulfnews.com/opinion/thinkers/ira...i-1.500997
    ۱۳۸۸ تير ۱۰ ۰۹:۴۱ عصر
    یافتن ارسال‌ها WWW پاسخ با نقل قول
     تشکر شده توسط :
    cyletech غایب
    علیرضا اسکندرپور شوفری
    *****

    ارسال‌ها: 2,197
    تاریخ عضویت: ۱۳۸۸ فروردين ۸
    اعتبار: 42
    تشکرها : 1258
    ( 2239 تشکر در 1089 ارسال )
    ارسال: #5
    RE: مشکل این کد کجاست؟
    نقل قول: $qdb= @mysql_query($query, $this->db) or echo('<h1 dir="rtl">عدم توانایی در اجرای پس جرس جو.</h1>, ' . mysql_error($this->db));
    اینی که دادی اشتباه هست یوشا جان. چون هم امتحان کردم و هم قبلا Big Grin - راستش خطا parse error میده و فکر کنم واسه این باشه که or echo بکار بردی وگرنه جای دیگش مشکلی نداره!

    در رابطه با اون return false هم باید با if و else بکار ببرم چون با or return false خطا میگیره.

    نقل قول: در مورد مشکل Super query، بهتره تابع
    یوشا جان حالا من گذاشتم موردی نداره اما گفتم که چه خطایی میده! هیچ ربطی به عوض کردن نداره! مقداری که به query_id میره مشکل داره!

    اون کدی هم که دادی امتحان کردم باز همونه

    کد PHP:
    Warningmysql_fetch_array(): supplied argument is not a valid MySQL result resource in D:\wamp\www\practice\engine\classes\mysql_class.php on line 91

    Warning
    mysql_free_result(): supplied argument is not a valid MySQL result resource in D:\wamp\www\practice\engine\classes\mysql_class.php on line 97 
    ۱۳۸۸ تير ۱۱ ۱۱:۰۰ صبح
    یافتن ارسال‌ها پاسخ با نقل قول
     تشکر شده توسط :
    Y.P.Y آفلاین
    ناظم کل
    *******

    ارسال‌ها: 2,780
    تاریخ عضویت: ۱۳۸۷ دي ۲۸
    اعتبار: 103
    تشکرها : 2181
    ( 4856 تشکر در 2220 ارسال )
    ارسال: #6
    RE: مشکل این کد کجاست؟
    من اونایی که گفتم برای مثال هستش، قالب کارن. حالا خطای Synax/Parse هم شاید داشته باشن...
    چرا گفتم، چون در واقع Query رو در هیچ قرار دادی!! الان query_id= null
    جای این دو تا رو تغییر بده:
    کد:
    return $qdb;
            $this->query_id = $qdb;
    به:
    کد:
    $this->query_id = $qdb;
       return $qdb;
    چون بعد از return یعنی هیچی/Exit/حذف.
    کل کلاس درستت اینجاست: http://forum.iranphp.org/thread-511-page-2.html
    اونا رو هم نوشتم که توابعت رو درست کنی...
    __________________________________________________________________________
    وبلاگ: Yousha.Blog.ir

    صدام: "اگر با ارتش شاه ایران طرف بودیم، یک ماهه جنگ را می بردیم"
    http://gulfnews.com/opinion/thinkers/ira...i-1.500997
    ۱۳۸۸ تير ۱۱ ۰۱:۴۸ عصر
    یافتن ارسال‌ها WWW پاسخ با نقل قول
     تشکر شده توسط :
    « قدیمی تر | تازه‌ تر »

    ارسال پاسخ
    پرش به انجمن:


    کاربرانِ درحال بازدید از این موضوع: 1 مهمان
    IranPHP.org | تماس با ما | بازگشت به بالا | بازگشت به محتوا | بایگانی | پیوند سایتی RSS