/
  • يك php كار حرفه اي اينجا هست مرا راهنمائي كنه؟

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

    حالت موضوعی | حالت خطی يك php كار حرفه اي اينجا هست مرا راهنمائي كنه؟
    نویسنده پیام
    firethumbs آفلاین
    عضو جدید
    **

    ارسال‌ها: 13
    تاریخ عضویت: ۱۳۸۸ آذر ۲۰
    اعتبار: 0
    تشکرها : 10
    ( 0 تشکر در 0 ارسال )
    ارسال: #1
    يك php كار حرفه اي اينجا هست مرا راهنمائي كنه؟
    دوستان سلام
    من سر يك پروژه دانشگاهي مشكل دارم. يك برنامه به زبان پي اچ پي دارم مي نويسم كه يه جائي از آن ايراد داره خواهش مي كنم راهنمائي كنيد. خلاصه برنامه اينه كه مي خوام به بانك ماي اس كيو ال وصل بشم و عمل درج و حذف و انتخاب و بروز رساني را انجام بدم منتها مي خوام بوسيله يك كلاس اينكار را انجام بدم يعني query را بدم به توابع عضو اون كلاس و از اون كلاس جواب بگيرم. اينم برنامه مشكل دار من .
    اين همون كلاسيه كه گفتم:

    کد PHP:
    <?php

    class DataAccess{
    private 
    $pass="123";
    private 
    $user="root";
    private 
    $server="localhost";
    private 
    $port="3306";
    private 
    $database;
    private 
    $mysqli;
    private 
    $result;

    //////////////////////////////////////////////////////
    function _construct($value){
    $this->database=$value;
    }
    //end of constructor-

    ////////////////////////////////////////////////////
    function connect(){
    $this->mysqli=new mysqli($this->server,$this->user,$this->pass,$this->database);
    if(
    $this->mysqli->errno){
    printf("Unable to connect to the database:
    %s"
    ,$this->mysqli->error);
    exit();
    }
    //end of if statement
    }//end of connect


    ////////////////////////////////////////////
    function hello(){
    echo 
    "hello";
    }
    //end of hello-

    //////////////////////////////////
    function disconnect(){
    $mysqli.close();
    }
    //end of disconnect

    ///////////////////////////////////////////////////////////
    function select_query($valu){

    $this->result $this->mysqli->query($valuMYSQLI_STORE_RESULT);
    // Iterate through the result set
    [u]while ($row $this->result->fetch_array(MYSQLI_NUM))[/u]
    سطر بالا سطريه كه خطا روي آن گرفته شده است.
    {
    $sku $row[0];
    $name $row[1];
    $price $row[2];
    echo 
    "($sku$name$price 
    "
    ;
    }
    }
    //end of excute_query function
    ///////////////////////////////////////////////////////
    function executeQuery($val){
    $this->result=$this->mysqli->query($val,MYSQLI_STORE_RESULT);
    echo 
    "query has been excute";

    }
    // end of excuteQuery function.

    }//end of class
    ?>
    اينم فايلي است كه شئي از اين كلاس ايجاد و تابع عضو را صدا مي زنم
    کد PHP:
    <?php
    //passenger.php
    include "DataAccess.php";

    $dal=new DataAccess("bus");
    $dal->connect();
    $dal->hello();

    $query "select * from passenger ";

    $dal->select_query($query);

    //Fatal error: Call to a member function fetch_array() on a non-object in /opt/lampp/htdocs/DataAccess.php on line 42
    /*
    $mysqli=new mysqli("localhost","root","123","bus");
    if($mysqli->errno){
    printf("Unable to connect to the database:
    %s",$mysqli->error);
    exit();
    }

    $query = "SELECT * from passenger";
    $result = $mysqli->query($query, MYSQLI_STORE_RESULT);
    // Iterate through the result set
    while(list($ID, $Fname, $Lname,$codemelli,$email) = $result->fetch_row())
    printf("(%s) %s   %s: %s %s 
    ", $ID, $Fname, $Lname,$codemelli,$email);

    */
    ?>
    اينم خطائي كه مي ده
    Fatal error: Call to a member function fetch_array() on a non-object in /opt/lampp/htdocs/DataAccess.php on line 4[/i]2
    يه سوال ديگه هم دارم و اون اينكه چطور مي تونم نتيجه يك select را در يك چك ليست يا Drop down بياورم. اگه بخوام در پروژه دقيتر بگويم مي خواهم نتيجه يك select از جدول شهرها در ديتابيس را داخل يك drop down listيا optional listنمايش دهم.
    ممنون
    اين كد هم تازه نوشتم همون انتظار را ازش دارم منتها از ارث بري استفاده كرده ام. اين هم كار نمي كنه و خطا مي ده
    کد PHP:
    <?php
    class Dispatcher extends mysqli{
        private 
    $pass="123";
        private 
    $user="root";
        private 
    $server="localhost";
        private 
    $port="3306";
        private 
    $database;
        
        public function 
    _construct($database){
            
    parent::_construct($this->server,$this->user,$this->pass,$database);
            if (
    mysqli_connect_error()) {
                die(
    'Connect Error (' mysqli_connect_errno() . ') '
                        
    mysqli_connect_error());
            }
    //end of if        
        
    }// end of Constructor
        
        
    public function excute_query($val){
            
    $result=parent::query($val,MYSQL_STORE_RESULT);
            while(list(
    $ID$Fname$Lname,$codemelli,$email) = $result->fetch_row()){
                
    printf("(%s) %s    %s: %s %s <br />"$ID$Fname$Lname,$codemelli,$email);
            }
    //end of while        
        
    }//end of excute_query function
    }//end of Dispatcher class
    ?>
    (آخرین ویرایش در این ارسال: ۱۳۸۸ آذر ۲۰ ۰۲:۰۴ صبح، توسط firethumbs.)
    ۱۳۸۸ آذر ۲۰ ۰۱:۵۶ صبح
    یافتن ارسال‌ها پاسخ با نقل قول
     تشکر شده توسط :
    hidensoft آفلاین
    عضو ارشد
    *****

    ارسال‌ها: 1,385
    تاریخ عضویت: ۱۳۸۸ شهريور ۳
    اعتبار: 46
    تشکرها : 729
    ( 1395 تشکر در 782 ارسال )
    ارسال: #2
    RE: يك php كار حرفه اي اينجا هست مرا راهنمائي كنه؟
    وقتی حرف برنامه نویس حرفه ای میاد وسط پاسخ دادن خیلی سخت می شه ، دوست عزیز من حرفه ای نیستم اما می تونید از این کلاسی که براتون میگزارم استفاده کنید

    کد PHP:
    <?php

    class mysql {

        
    // Database server information
        
    var $host;                 // (string)  Host server of database
        
    var $user;                 // (string)  User
        
    var $password;             // (string)  Password
        
    var $db_name;              // (string)  Database that will be selected
        
    var $port;                 // (int)     Server port
        
    var $connection false;   // (link identifier)   MySQL connection link identifier
        
    var $result;               // (link identifier)   MySQL result link identifier
        
        // Class operation setup
        
        
        // 0 LOG_NONE
        // 1 ECHO
        // 2 HIDDEN ECHO
        // 3 LOG FILE
        
    var $debuglv  ;
        var 
    $error_level  ;
        var 
    $error_desc   "No errors" ;
        var 
    $logfile      "datalog" ;
        var 
    $filehdl      ;
        var 
    $messsages    = array() ;  
          
        var 
    $affected_rows ;    
        var 
    $num_rows      ;    
        var 
    $recordcount   ;    
        var 
    $lastid        ;
        var 
    $sqlString;
        
        var 
    $query_no     ;    



        function 
    mysql($host ""$user ""$password ""$db_name ""$port "")
        {
            
    $this->host     = ( !empty( $host ) )      ?  (string)$host      :  "localhost";
            
    $this->user     = ( !empty( $user ) )      ?  (string)$user      :  "root";
            
    $this->password = ( !empty( $password ) )  ?  (string)$password  :  "";
            
    $this->db_name  = ( !empty( $db_name ) )   ?  (string)$db_name   :  "";
            
    $this->port     = ( !empty( $port ) )      ?  (int)$port         :  3306;
        }




        function 
    connect($is_persistent false)
        {                
            
    $this->logfile_init() ;

            if (!
    $is_persistent) {
                
    $this->connection = @mysql_connect($this->host.':'.$this->port$this->user$this->password);
            } else {
                
    $this->connection = @mysql_pconnect($this->host.':'.$this->port$this->user$this->password);
            }
            
    $this->error_report() ;
            
            if (!
    $this->connection) {
              
    // Conection failed
              
    $this->add_debug_message date("d/m/Y - H:i:s") . " - ERROR " $this->error_level ": " $this->error_desc "\r\n" ) ;          
              
    $this->release_db() ;
            } else { 
    $this->select_db(); }        
        }

        function  
    select_db($db_name=false){
             if (
    $db_name !== false$this->db_name=$db_name;
            
          
    // Select a database...
          
    if (@mysql_select_db($this->db_name,$this->connection)) {
            
    // Selecting Database OK
            
    $this->add_debug_message date("d/m/Y - H:i:s") . " - OPERATION O.K.: Connected to database " $this->db_name .  "\r\n" );
          } else {
            
    // Failed to select the database... abort connection process
            
    $this->error_report() ;
            
    $this->add_debug_message date("d/m/Y - H:i:s") . " - ERROR " $this->error_level ": " $this->error_desc "\r\n" ) ;
            
    $this->release_db() ;
            }                
        }
        
      
    // Releasing database connection
      
    function release_db()
        {
        
    // Checking if a conection is open?
        
    if ($this->connection) {
          
    // Trying to close the connection ...
          
    if (mysql_close($this->connection)) {
            
    $this->add_debug_message date("d/m/Y - H:i:s") . " - OPERATION O.K.: Database " $this->db_name " released" "\r\n" );
          } else {
            
    // Failed to liberate the database...
            
    $this->error_report() ;
            
    $this->add_debug_message date("d/m/Y - H:i:s") . " - ERROR " $this->error_level ": " $this->error_desc "\r\n" );
            }
        } else {
          
    // No database open
          
    $this->add_debug_message date("d/m/Y - H:i:s") . " - OPERATION CANCELLED: No database open" "\r\n" );
          }
        
    // LOG the operation and close logging operations
        
    $this->debug() ;
        
    $this->logfile_close() ;
        }
        

      
    // Error reporting auxiliary method
      
    function error_report()
        {
        
    $this->error_level mysql_errno() ;
        
    $this->error_desc mysql_error() ;
        }

      
    // Log operations initialization
      
    function logfile_init()
        {      
        if (
    $this->debuglv==3) {
             
    $this->add_debug_message date("d/m/Y - H:i:s") . " ===== SESSION STARTED BY " $GLOBALS["PHP_SELF"] . " =====" .  "\r\n" );
             
    $this->logfile $this->logfile "-" date("m") . "-" date("Y") ;
             
    $this->filehdl fopen($this->logfile,'a') ;
             if (!
    $this->filehdl) {
                    echo 
    "<!-- UNABLE TO OPEN SPECIFIED LOG FILE " $this->logfile " -->" ;
                    
    $this->debuglv-- ;
                    
    $this->logfile_init() ;
                    }
                  break ;
          }
        
    $this->debug() ;
        }
        
      
    // Closing log operations
      
    function logfile_close()
        {
        if (
    $this->filehdl) {
          
    // If we opened a file to log operations need to close it
          
    fclose($this->filehdl) ;
          }
        }

      function 
    add_debug_message($message)
        {
            
    $this->messsages[]=$message;
        }

      
    // Debugging operations
      
    function debug()
        {
        switch (
    $this->debuglv) {
          case 
    0// NO LOG OPERATIONS
                  
    break ;
          case 
    1// SCREEN OUTPUT
                  
    foreach ($this->messsages as $m) {
                    echo 
    '<BR>DEBUG: ' $m '<BR>' ;
                  }  
                  break ;
          case 
    2// SILENT OUTPUT (<!-- -->)
                  
    foreach ($this->messsages as $m) {
                    echo 
    "\n<!-- DEBUG: " $m "-->\n" ;
                  }  
                  break ;
          case 
    3// FILE OUTPUT
                  
    foreach ($this->messsages as $m) {
                    
    fwrite($this->filehdl,$this->msg) ;
                  }  
                  break ;
          }
        }    


      
    // Destructor
        
    function destroy()
          {
            
    $this->release_db() ;
          }
        
          
        
    // performes an sqlQuery
        
    function query($sqlString)
          {
              
    $this->sqlString=$sqlString;
              
    $this->query_no++;  
              
            if (
    $this->connection !== false) {
              
    $this->result mysql_query($sqlString,$this->connection) ;    
              
    $this->error_report() ;
              
    // Affectected rows...
              
    if ($this->result) {
                
    // Execution was o.k.          
                
    $this->affected_rows mysql_affected_rows$this->connection );
                if (
    is_resource($this->result)) {
                    
    $this->num_rows mysql_num_rows$this->result );
                } else 
    $this->num_rows 0;
                
    $this->lastid mysql_insert_id$this->connection );
                
    $this->add_debug_messagedate("d/m/Y - H:i:s") . " - OPERATION O.K.: Executed [" $this->sqlString ."] [affected " $this->affected_rows " rows] [rows in result " $this->num_rows " ]" "\r\n" );
                return 
    true;
              } else {
                
    // Execution Failed
                
    $this->affected_rows ;      
                
    $this->num_rows ;      
                
    $this->add_debug_messagedate("d/m/Y - H:i:s") . " - OPERATION FAILED: Executed [" $this->sqlString "] got " $this->error_level " " $this->error_desc "\r\n" );
                return 
    false;
                }
            } else {
              
    // No database ready to query
              
    $this->affected_rows ;
              
    $this->num_rows ;
              
    $this->add_debug_messagedate("d/m/Y - H:i:s") . " - OPERATION FAILED: No database open OR no SQL command provided" "\r\n"  );
              return 
    false;
              }          
          }
          
        function 
    fetch_assoc$result false )
           {
                if ( 
    $result === false $result $this->result;
            return 
    mysql_fetch_assoc$result  );
           }
        
        function 
    clean_data($data)
          {
          return 
    mysql_real_escape_string($data,$this->connection);    
          }

        function 
    fetch_data_array ()
           {
            
    $data=array();
            while( 
    $row $this->fetch_assoc() )
                { 
    $data[]=$row; }
            return 
    $data;    
           }

        
    // grabs a list of rows from a tabel ... returnes an array of data  
        
    function list_table$table_name$where false$parameters = array () )
           {
            
    $range       = ( isset($parameters['range'])       && !empty($parameters['range']) )       ? $parameters['range']       : " * " ;
            
    $sortColumn  = ( isset($parameters['sortColumn'])  && !empty($parameters['sortColumn']) )  ? $parameters['sortColumn']  : false ;
            
    $sortType    = ( isset($parameters['sortType'])    && !empty($parameters['sortType']) )    ? $parameters['sortType']    : "ASC" ;
            
    $limitOffset = ( isset($parameters['limitOffset']) && !empty($parameters['limitOffset']) ) ? $parameters['limitOffset'] : false ;
            
    $rowCount    = ( isset($parameters['rowCount'])    && !empty($parameters['rowCount']) )    ? $parameters['rowCount']    : false ;
            
            
    $queryString"SELECT $range FROM $table_name ";
            if ( 
    $where !== false $queryString .= " WHERE ".$where;
            if ( 
    $sortColumn !== false $queryString .= " ORDER BY `$sortColumn$sortType ";        
            if ( 
    $rowCount !== false ) {
                
    $queryString .= " LIMIT ";
                if ( 
    $limitOffset !== false $queryString .= $limitOffset, ";
                
    $queryString .= $rowCount ";
            }
            
            
    $this->query($queryString);
            if( 
    $this->num_rows ) { return false; }
            else { return 
    $this->fetch_data_array(); }
          }

        
    // fetch a row from a table
        
    function fetch_row$table_name$where false $parameters = array () )
          {
          
    $range       = ( isset($parameters['range'])       && !empty($parameters['range']) )       ? $parameters['range']       : " * " ;
          
    $range       = ( isset($parameters['range'])       && !empty($parameters['range']) )       ? $parameters['range']       : " * " ;
                      
            
    $queryString"SELECT $range FROM $table_name ";
            if ( 
    $where != false $queryString .= " WHERE $where LIMIT 1";

          
    $this->query($queryString);    

          if( 
    $this->num_rows ) { return false; }
          else { return 
    $this->fetch_assoc(); }              
            }

        function 
    count_records$table_name$where =false $parameters = array() )
            {                        
            
    $queryString"SELECT COUNT(*) as rNumber FROM $table_name ";
            if ( 
    $where != false $queryString .= " WHERE $where ";
          if (
    $this->query($queryString) == true ){
              
    $row=$this->fetch_assoc();
              return 
    $row["rNumber"];
          } else return 
    false;      
            }
            
        function 
    increment_field$table_name$field$where$parameters = array() )
          {
            
    $queryString"UPDATE $table_name SET `$field`=`$field`+1  WHERE $where ";
          
    $this->query($queryString);               
          }

        function 
    record_update$table_name$data$where$parameters = array() )
          {
          
    $queryString="UPDATE ".$table_name." SET ";
          
    $fields=array();
            
          foreach (
    $data as $key=>$value)    {
              
    $fields[] = " `$key`='".$this->clean_data$value )."' ";
          }
          
    $queryString .= implode(',',$fields)." WHERE ".$where;        
            
          return 
    $this->query($queryString);               
          }

        function 
    record_insert$table_name$data$parameters = array() )
          {
          
    $queryString="INSERT INTO ".$table_name." (";  
          
    $columns=array();        
          
    $values=array();
          
          foreach (
    $data as $key=>$value)
              {
                  
    $columns []= '`'.$key.'`';
                  
    $values  []= "'".$this->clean_data$value )."'";
            }      
              
          
    $queryString .= implode(',',$columns) .") VALUES ("implode(',',$values) .") ";          
          
          return 
    $this->query($queryString);                     
          }
     
        function 
    record_delete$table_name$where$parameters = array() )
          {
          
    $queryString "DELETE FROM "$table_name ." WHERE "$where;
          
    $this->query($queryString);                               
          }      

        function 
    table_info($table_name)
          {
           
    $this->query(" SELECT * FROM $table_name LIMIT 1");                               
           
    $fields mysql_num_fields($this->result);
        
           for (
    $i=0$i <= $fields$i++) {
             
    $fields[$i]['type'] = mysql_field_type($result$i);
             
    $fields[$i]['name'] = mysql_field_name($result$i);
             
    $fields[$i]['len']  = mysql_field_len($result$i);
           }
        
        return 
    $fields;
        }

       function 
    table_max_value$table$field)
         {
         
    $this->query(" SELECT max($field) as max_value FROM $table ");
         
    $data=$this->fetch_assoc();

         return 
    $data["max_value"];
         }
        
    }
    ?>
    آموزش استفاده از این کلاس هم بدین صورت هست
    کد PHP:
    <?php

    // conection
    $mysql= new mysql('localhost' 'userSQL''passwSQL''Selected_DB' );
    $mysql->connect();

    // fetch row
    $row=$mysql->fetch_row'TableName'" id='12' ");
    // SELECT * FROM TableName WHERE id='12'

    // fetch array of rows
    $rows=$mysql->list_table'TableName'" column='3' ", array ('range' => 'id,name') );  
    // select id,name from TableName WHERE column='3'
    // fetch rows from multiple tables
    $rows=$mysql->list_table' TableName1 t1,TableName1 t2 '" t1.column1=t2.column2 ", array ('range' => ' t1.column1_1, t2.column1_2 ') );  


    // fetch whole table
    $tableList=$mysql->list_table'TableName'false ,  );


    // fetch a part of a table - pagination example  
    $parameters['limitOffset']=10# Offet Start  
    $parameters['rowCount']=10# No of rows returned
    $where=" columnName='3' ";
    $tableList=$mysql->list_table'TableName'where $parameters );

    $data=array('columnName1' => 'value1',
                
    'columnName2' => 'value2',
                
    'columnName3' => 'value3',        
                );        
    // insert data ... it returns true or false
    $insertAtempt=$mysql->record_insert('TableName',$data);

    // update data
    $updateAtempt=$mysql->record_update('TableName',$data," id='3' ");  

        
    ?>
    ۱۳۸۸ آذر ۲۰ ۱۰:۳۸ صبح
    یافتن ارسال‌ها پاسخ با نقل قول
     تشکر شده توسط : firethumbs
    firethumbs آفلاین
    عضو جدید
    **

    ارسال‌ها: 13
    تاریخ عضویت: ۱۳۸۸ آذر ۲۰
    اعتبار: 0
    تشکرها : 10
    ( 0 تشکر در 0 ارسال )
    ارسال: #3
    RE: يك php كار حرفه اي اينجا هست مرا راهنمائي كنه؟
    دوست عزيزم
    خيلي از لطفت ممنون . مي شه در مورد اين كد يه توضيح كوچكي بدي كه چطور كار مي كنه. چون پروژه دانشگاهي است بايد ازش سر در بياورم تا بتوانم پروژه را كامل انجام دهم. و سوال ديگه اينكه كدهاي خودم چه اشكالي دارند؟ آيا نمي تونم از ارث بري استفاده كنم و كلاس mysqli را extends كنم و از توابع آن استفاده كنم؟
    (۱۳۸۸ آذر ۲۰ ۱۰:۳۸ صبح)hidensfot نوشته شده توسط:  وقتی حرف برنامه نویس حرفه ای میاد وسط پاسخ دادن خیلی سخت می شه ، دوست عزیز من حرفه ای نیستم اما می تونید از این کلاسی که براتون میگزارم استفاده کنید

    کد PHP:
    <?php

    class mysql {

        
    // Database server information
        
    var $host;                 // (string)  Host server of database
        
    var $user;                 // (string)  User
        
    var $password;             // (string)  Password
        
    var $db_name;              // (string)  Database that will be selected
        
    var $port;                 // (int)     Server port
        
    var $connection false;   // (link identifier)   MySQL connection link identifier
        
    var $result;               // (link identifier)   MySQL result link identifier
        
        // Class operation setup
        
        
        // 0 LOG_NONE
        // 1 ECHO
        // 2 HIDDEN ECHO
        // 3 LOG FILE
        
    var $debuglv  ;
        var 
    $error_level  ;
        var 
    $error_desc   "No errors" ;
        var 
    $logfile      "datalog" ;
        var 
    $filehdl      ;
        var 
    $messsages    = array() ;  
          
        var 
    $affected_rows ;    
        var 
    $num_rows      ;    
        var 
    $recordcount   ;    
        var 
    $lastid        ;
        var 
    $sqlString;
        
        var 
    $query_no     ;    



        function 
    mysql($host ""$user ""$password ""$db_name ""$port "")
        {
            
    $this->host     = ( !empty( $host ) )      ?  (string)$host      :  "localhost";
            
    $this->user     = ( !empty( $user ) )      ?  (string)$user      :  "root";
            
    $this->password = ( !empty( $password ) )  ?  (string)$password  :  "";
            
    $this->db_name  = ( !empty( $db_name ) )   ?  (string)$db_name   :  "";
            
    $this->port     = ( !empty( $port ) )      ?  (int)$port         :  3306;
        }




        function 
    connect($is_persistent false)
        {                
            
    $this->logfile_init() ;

            if (!
    $is_persistent) {
                
    $this->connection = @mysql_connect($this->host.':'.$this->port$this->user$this->password);
            } else {
                
    $this->connection = @mysql_pconnect($this->host.':'.$this->port$this->user$this->password);
            }
            
    $this->error_report() ;
            
            if (!
    $this->connection) {
              
    // Conection failed
              
    $this->add_debug_message date("d/m/Y - H:i:s") . " - ERROR " $this->error_level ": " $this->error_desc "\r\n" ) ;          
              
    $this->release_db() ;
            } else { 
    $this->select_db(); }        
        }

        function  
    select_db($db_name=false){
             if (
    $db_name !== false$this->db_name=$db_name;
            
          
    // Select a database...
          
    if (@mysql_select_db($this->db_name,$this->connection)) {
            
    // Selecting Database OK
            
    $this->add_debug_message date("d/m/Y - H:i:s") . " - OPERATION O.K.: Connected to database " $this->db_name .  "\r\n" );
          } else {
            
    // Failed to select the database... abort connection process
            
    $this->error_report() ;
            
    $this->add_debug_message date("d/m/Y - H:i:s") . " - ERROR " $this->error_level ": " $this->error_desc "\r\n" ) ;
            
    $this->release_db() ;
            }                
        }
        
      
    // Releasing database connection
      
    function release_db()
        {
        
    // Checking if a conection is open?
        
    if ($this->connection) {
          
    // Trying to close the connection ...
          
    if (mysql_close($this->connection)) {
            
    $this->add_debug_message date("d/m/Y - H:i:s") . " - OPERATION O.K.: Database " $this->db_name " released" "\r\n" );
          } else {
            
    // Failed to liberate the database...
            
    $this->error_report() ;
            
    $this->add_debug_message date("d/m/Y - H:i:s") . " - ERROR " $this->error_level ": " $this->error_desc "\r\n" );
            }
        } else {
          
    // No database open
          
    $this->add_debug_message date("d/m/Y - H:i:s") . " - OPERATION CANCELLED: No database open" "\r\n" );
          }
        
    // LOG the operation and close logging operations
        
    $this->debug() ;
        
    $this->logfile_close() ;
        }
        

      
    // Error reporting auxiliary method
      
    function error_report()
        {
        
    $this->error_level mysql_errno() ;
        
    $this->error_desc mysql_error() ;
        }

      
    // Log operations initialization
      
    function logfile_init()
        {      
        if (
    $this->debuglv==3) {
             
    $this->add_debug_message date("d/m/Y - H:i:s") . " ===== SESSION STARTED BY " $GLOBALS["PHP_SELF"] . " =====" .  "\r\n" );
             
    $this->logfile $this->logfile "-" date("m") . "-" date("Y") ;
             
    $this->filehdl fopen($this->logfile,'a') ;
             if (!
    $this->filehdl) {
                    echo 
    "<!-- UNABLE TO OPEN SPECIFIED LOG FILE " $this->logfile " -->" ;
                    
    $this->debuglv-- ;
                    
    $this->logfile_init() ;
                    }
                  break ;
          }
        
    $this->debug() ;
        }
        
      
    // Closing log operations
      
    function logfile_close()
        {
        if (
    $this->filehdl) {
          
    // If we opened a file to log operations need to close it
          
    fclose($this->filehdl) ;
          }
        }

      function 
    add_debug_message($message)
        {
            
    $this->messsages[]=$message;
        }

      
    // Debugging operations
      
    function debug()
        {
        switch (
    $this->debuglv) {
          case 
    0// NO LOG OPERATIONS
                  
    break ;
          case 
    1// SCREEN OUTPUT
                  
    foreach ($this->messsages as $m) {
                    echo 
    '<BR>DEBUG: ' $m '<BR>' ;
                  }  
                  break ;
          case 
    2// SILENT OUTPUT (<!-- -->)
                  
    foreach ($this->messsages as $m) {
                    echo 
    "\n<!-- DEBUG: " $m "-->\n" ;
                  }  
                  break ;
          case 
    3// FILE OUTPUT
                  
    foreach ($this->messsages as $m) {
                    
    fwrite($this->filehdl,$this->msg) ;
                  }  
                  break ;
          }
        }    


      
    // Destructor
        
    function destroy()
          {
            
    $this->release_db() ;
          }
        
          
        
    // performes an sqlQuery
        
    function query($sqlString)
          {
              
    $this->sqlString=$sqlString;
              
    $this->query_no++;  
              
            if (
    $this->connection !== false) {
              
    $this->result mysql_query($sqlString,$this->connection) ;    
              
    $this->error_report() ;
              
    // Affectected rows...
              
    if ($this->result) {
                
    // Execution was o.k.          
                
    $this->affected_rows mysql_affected_rows$this->connection );
                if (
    is_resource($this->result)) {
                    
    $this->num_rows mysql_num_rows$this->result );
                } else 
    $this->num_rows 0;
                
    $this->lastid mysql_insert_id$this->connection );
                
    $this->add_debug_messagedate("d/m/Y - H:i:s") . " - OPERATION O.K.: Executed [" $this->sqlString ."] [affected " $this->affected_rows " rows] [rows in result " $this->num_rows " ]" "\r\n" );
                return 
    true;
              } else {
                
    // Execution Failed
                
    $this->affected_rows ;      
                
    $this->num_rows ;      
                
    $this->add_debug_messagedate("d/m/Y - H:i:s") . " - OPERATION FAILED: Executed [" $this->sqlString "] got " $this->error_level " " $this->error_desc "\r\n" );
                return 
    false;
                }
            } else {
              
    // No database ready to query
              
    $this->affected_rows ;
              
    $this->num_rows ;
              
    $this->add_debug_messagedate("d/m/Y - H:i:s") . " - OPERATION FAILED: No database open OR no SQL command provided" "\r\n"  );
              return 
    false;
              }          
          }
          
        function 
    fetch_assoc$result false )
           {
                if ( 
    $result === false $result $this->result;
            return 
    mysql_fetch_assoc$result  );
           }
        
        function 
    clean_data($data)
          {
          return 
    mysql_real_escape_string($data,$this->connection);    
          }

        function 
    fetch_data_array ()
           {
            
    $data=array();
            while( 
    $row $this->fetch_assoc() )
                { 
    $data[]=$row; }
            return 
    $data;    
           }

        
    // grabs a list of rows from a tabel ... returnes an array of data  
        
    function list_table$table_name$where false$parameters = array () )
           {
            
    $range       = ( isset($parameters['range'])       && !empty($parameters['range']) )       ? $parameters['range']       : " * " ;
            
    $sortColumn  = ( isset($parameters['sortColumn'])  && !empty($parameters['sortColumn']) )  ? $parameters['sortColumn']  : false ;
            
    $sortType    = ( isset($parameters['sortType'])    && !empty($parameters['sortType']) )    ? $parameters['sortType']    : "ASC" ;
            
    $limitOffset = ( isset($parameters['limitOffset']) && !empty($parameters['limitOffset']) ) ? $parameters['limitOffset'] : false ;
            
    $rowCount    = ( isset($parameters['rowCount'])    && !empty($parameters['rowCount']) )    ? $parameters['rowCount']    : false ;
            
            
    $queryString"SELECT $range FROM $table_name ";
            if ( 
    $where !== false $queryString .= " WHERE ".$where;
            if ( 
    $sortColumn !== false $queryString .= " ORDER BY `$sortColumn$sortType ";        
            if ( 
    $rowCount !== false ) {
                
    $queryString .= " LIMIT ";
                if ( 
    $limitOffset !== false $queryString .= $limitOffset, ";
                
    $queryString .= $rowCount ";
            }
            
            
    $this->query($queryString);
            if( 
    $this->num_rows ) { return false; }
            else { return 
    $this->fetch_data_array(); }
          }

        
    // fetch a row from a table
        
    function fetch_row$table_name$where false $parameters = array () )
          {
          
    $range       = ( isset($parameters['range'])       && !empty($parameters['range']) )       ? $parameters['range']       : " * " ;
          
    $range       = ( isset($parameters['range'])       && !empty($parameters['range']) )       ? $parameters['range']       : " * " ;
                      
            
    $queryString"SELECT $range FROM $table_name ";
            if ( 
    $where != false $queryString .= " WHERE $where LIMIT 1";

          
    $this->query($queryString);    

          if( 
    $this->num_rows ) { return false; }
          else { return 
    $this->fetch_assoc(); }              
            }

        function 
    count_records$table_name$where =false $parameters = array() )
            {                        
            
    $queryString"SELECT COUNT(*) as rNumber FROM $table_name ";
            if ( 
    $where != false $queryString .= " WHERE $where ";
          if (
    $this->query($queryString) == true ){
              
    $row=$this->fetch_assoc();
              return 
    $row["rNumber"];
          } else return 
    false;      
            }
            
        function 
    increment_field$table_name$field$where$parameters = array() )
          {
            
    $queryString"UPDATE $table_name SET `$field`=`$field`+1  WHERE $where ";
          
    $this->query($queryString);               
          }

        function 
    record_update$table_name$data$where$parameters = array() )
          {
          
    $queryString="UPDATE ".$table_name." SET ";
          
    $fields=array();
            
          foreach (
    $data as $key=>$value)    {
              
    $fields[] = " `$key`='".$this->clean_data$value )."' ";
          }
          
    $queryString .= implode(',',$fields)." WHERE ".$where;        
            
          return 
    $this->query($queryString);               
          }

        function 
    record_insert$table_name$data$parameters = array() )
          {
          
    $queryString="INSERT INTO ".$table_name." (";  
          
    $columns=array();        
          
    $values=array();
          
          foreach (
    $data as $key=>$value)
              {
                  
    $columns []= '`'.$key.'`';
                  
    $values  []= "'".$this->clean_data$value )."'";
            }      
              
          
    $queryString .= implode(',',$columns) .") VALUES ("implode(',',$values) .") ";          
          
          return 
    $this->query($queryString);                     
          }
     
        function 
    record_delete$table_name$where$parameters = array() )
          {
          
    $queryString "DELETE FROM "$table_name ." WHERE "$where;
          
    $this->query($queryString);                               
          }      

        function 
    table_info($table_name)
          {
           
    $this->query(" SELECT * FROM $table_name LIMIT 1");                               
           
    $fields mysql_num_fields($this->result);
        
           for (
    $i=0$i <= $fields$i++) {
             
    $fields[$i]['type'] = mysql_field_type($result$i);
             
    $fields[$i]['name'] = mysql_field_name($result$i);
             
    $fields[$i]['len']  = mysql_field_len($result$i);
           }
        
        return 
    $fields;
        }

       function 
    table_max_value$table$field)
         {
         
    $this->query(" SELECT max($field) as max_value FROM $table ");
         
    $data=$this->fetch_assoc();

         return 
    $data["max_value"];
         }
        
    }
    ?>
    آموزش استفاده از این کلاس هم بدین صورت هست
    کد PHP:
    <?php

    // conection
    $mysql= new mysql('localhost' 'userSQL''passwSQL''Selected_DB' );
    $mysql->connect();

    // fetch row
    $row=$mysql->fetch_row'TableName'" id='12' ");
    // SELECT * FROM TableName WHERE id='12'

    // fetch array of rows
    $rows=$mysql->list_table'TableName'" column='3' ", array ('range' => 'id,name') );  
    // select id,name from TableName WHERE column='3'
    // fetch rows from multiple tables
    $rows=$mysql->list_table' TableName1 t1,TableName1 t2 '" t1.column1=t2.column2 ", array ('range' => ' t1.column1_1, t2.column1_2 ') );  


    // fetch whole table
    $tableList=$mysql->list_table'TableName'false ,  );


    // fetch a part of a table - pagination example  
    $parameters['limitOffset']=10# Offet Start  
    $parameters['rowCount']=10# No of rows returned
    $where=" columnName='3' ";
    $tableList=$mysql->list_table'TableName'where $parameters );

    $data=array('columnName1' => 'value1',
                
    'columnName2' => 'value2',
                
    'columnName3' => 'value3',        
                );        
    // insert data ... it returns true or false
    $insertAtempt=$mysql->record_insert('TableName',$data);

    // update data
    $updateAtempt=$mysql->record_update('TableName',$data," id='3' ");  

        
    ?>

    دوست عزيزم
    خيلي از لطفت ممنون . مي شه در مورد اين كد يه توضيح كوچكي بدي كه چطور كار مي كنه. چون پروژه دانشگاهي است بايد ازش سر در بياورم تا بتوانم پروژه را كامل انجام دهم. و سوال ديگه اينكه كدهاي خودم چه اشكالي دارند؟ آيا نمي تونم از ارث بري استفاده كنم و كلاس mysqli را extends كنم و از توابع آن استفاده كنم؟
    من يك مثال از ارث بري از اين كلاس در اينجا ديدم. مي خوام به اين صورت يك كلاس بنويسم ولي نمي دونم كه چطور بايد از متدهاي عضو كلاس پدر استفاده كنم
    (آخرین ویرایش در این ارسال: ۱۳۸۸ آذر ۲۰ ۰۱:۴۰ عصر، توسط firethumbs.)
    ۱۳۸۸ آذر ۲۰ ۱۲:۴۸ عصر
    یافتن ارسال‌ها پاسخ با نقل قول
     تشکر شده توسط :
    admin آفلاین
    وحید سهرابلو
    **********

    ارسال‌ها: 5,734
    تاریخ عضویت: ۱۳۸۷ آذر ۲۴
    اعتبار: 100
    تشکرها : 1362
    ( 6196 تشکر در 3438 ارسال )
    ارسال: #4
    RE: يك php كار حرفه اي اينجا هست مرا راهنمائي كنه؟
    کدتون درسته به جز این قسمت
    کد PHP:
    $mysqli.close(); 
    که باید بشه
    کد PHP:
    $this->mysqli->close(); 

    در مورد اون اخطار هم شما بعد از اینکه یه کویری رو میفرستین حتما بعدش چک کنین که mysql اخطاری نداده باشه. مثل همون کاری که واسه connect شدن می کنین
    (آخرین ویرایش در این ارسال: ۱۳۸۸ آذر ۲۰ ۰۲:۴۸ عصر، توسط admin.)
    ۱۳۸۸ آذر ۲۰ ۰۲:۴۲ عصر
    یافتن ارسال‌ها پاسخ با نقل قول
     تشکر شده توسط :
    firethumbs آفلاین
    عضو جدید
    **

    ارسال‌ها: 13
    تاریخ عضویت: ۱۳۸۸ آذر ۲۰
    اعتبار: 0
    تشکرها : 10
    ( 0 تشکر در 0 ارسال )
    ارسال: #5
    RE: يك php كار حرفه اي اينجا هست مرا راهنمائي كنه؟
    (۱۳۸۸ آذر ۲۰ ۰۲:۴۲ عصر)admin نوشته شده توسط:  کدتون درسته به جز این قسمت
    کد PHP:
    $mysqli.close(); 
    که باید بشه
    کد PHP:
    $this->mysqli->close(); 

    در مورد اون اخطار هم شما بعد از اینکه یه کویری رو میفرستین حتما بعدش چک کنین که mysql اخطاری نداده باشه. مثل همون کاری که واسه connect شدن می کنین
    دوست عزيز سلام
    خوب اگه كدم درسته چرا خطا مي ده؟ صدا زدن تابع excute_query باعث خطا مي شه. چرا؟
    ۱۳۸۸ آذر ۲۲ ۰۷:۲۷ صبح
    یافتن ارسال‌ها پاسخ با نقل قول
     تشکر شده توسط :
    admin آفلاین
    وحید سهرابلو
    **********

    ارسال‌ها: 5,734
    تاریخ عضویت: ۱۳۸۷ آذر ۲۴
    اعتبار: 100
    تشکرها : 1362
    ( 6196 تشکر در 3438 ارسال )
    ارسال: #6
    RE: يك php كار حرفه اي اينجا هست مرا راهنمائي كنه؟
    گفتم که query که‌ میفرستین مشکل داره.
    شما بعد از اینکه یه کويری رو با‌متد‌ query می‌فرستین‌ باید‌ چک کنین mysql اخطاری‌ داده یا نه
    ۱۳۸۸ آذر ۲۳ ۱۱:۴۹ صبح
    یافتن ارسال‌ها پاسخ با نقل قول
     تشکر شده توسط :
    « قدیمی تر | تازه‌ تر »

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


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