Pagina 1 din 3 123 UltimulUltimul
Rezultate 1 la 10 din 27

Subiect: PHP coding...

  1. #1
    Avatarul lui andypopa
    andypopa este deconectat Membru SeoPedia
    Reputatie:
    0
    Data înscrierii
    28th July 2005
    Locaţie
    Bucuresti
    Posturi
    417
    Putere Rep
    0


    Implicit PHP coding...

    It's been a few days de cand am inceput cu PHP-ul si MySQL-ul si totul mere fain... Am descoperit ca e super util si ca e, de fapt, usor de folosit nu cum imi inchipuiam eu acum 3 ani cine stie ce S.F... In fine, skipand vorbaraia, ma trezesc eu intr-o dimineata si zic: parca prea multa munca de sclav totusi... Aud tot soiul de chestii gen mojavi, smarty si ma simt partial idiot pt. ca nu stiu cu ce se mananca... Voi ce exp. aveti cu PHP-ul? Am auzit ca Dani Chirita e mare maestru... Poate isi da cu parerea... Mi-am corectat si codarea dupa guidelinurile alea ale lui WeaselMan... Intrebarea mea (simplificata): Voi faceti munca de sclav sau nu??? Scrieti toate liniile alea de cod gen

    Cod:
    $thumbnail=mysql_result($result,$i,"thumbnail");
    
    $picture=mysql_result($result,$i,"picture");
    
    $alternative=mysql_result($result,$i,"picture");
    Sau folositi ceva care face asta pt. voi?
    Merci... Scuze pentru intrebarea, ce-i drept, cam stupida, dar pe undeva tb. sa intreb...

    Merci pt. timpul acordat.

    Respect,
    Popa

  2. #2
    Avatarul lui Toto
    Toto este deconectat Ambasador
    Reputatie:
    46
    Data înscrierii
    14th June 2005
    Locaţie
    Bucuresti
    Posturi
    1.905
    Putere Rep
    46


    Implicit

    Depinde de situatie.. Sunt cazuri unde poti folosi un script realizat in asa maniera incat sa poata fi aplicat la mai multe aplicatii (gen sablon, template, etc ..) si sunt cazuti unde tre sa scrii cod "personalizat"..

    De exemplu eu folosesc pentru inserturi in baza din formulare (indiferent de campurile formului) acelasi script creatie "in house" In cazul unui select "jmecher" cu tz'shpe tabele, etc, cred ca e mai bine sa "o faci cu mana ta"

  3. #3
    Avatarul lui andypopa
    andypopa este deconectat Membru SeoPedia
    Reputatie:
    0
    Data înscrierii
    28th July 2005
    Locaţie
    Bucuresti
    Posturi
    417
    Putere Rep
    0


    Implicit

    aha... pai eu de ex nu am facut prea multe site-uri cu php / mysql so nu mi-am facut inca template-uri. Ma gandeam daca e un soft care sa imi usureze munca (aia de sclav, evident)... Si tre sa imi trag si eu smarty ala sa vad ce e... ma rog, template engine cu template engine da'... intelegeti voi.

    Hai salut,
    Popa

  4. #4
    Avatarul lui Toto
    Toto este deconectat Ambasador
    Reputatie:
    46
    Data înscrierii
    14th June 2005
    Locaţie
    Bucuresti
    Posturi
    1.905
    Putere Rep
    46


    Implicit Re: PHP coding...

    Cred ca te lamuresti mai bine pe forum la phpromania.net ...

  5. #5
    Avatarul lui andypopa
    andypopa este deconectat Membru SeoPedia
    Reputatie:
    0
    Data înscrierii
    28th July 2005
    Locaţie
    Bucuresti
    Posturi
    417
    Putere Rep
    0


    Implicit

    Super Smecher! Merci frumos.

  6. #6
    Avatarul lui danic
    danic este deconectat Membru SeoPedia
    Reputatie:
    0
    Data înscrierii
    16th November 2004
    Locaţie
    Timisoara, Timis
    Vârstă
    43
    Posturi
    255
    Putere Rep
    0


    Implicit Re: PHP coding...

    Originally posted by andypopa
    [b]Am auzit ca Dani Chirita e mare maestru...
    Nici macar la sah!

    Lasand gluma la o parte, cred ca ar fi bine sa iti pui la punct o clasa generica care sa se ocupe de partea de mySQL (e cacofonie "generica-care"? ).
    As fi snob sa zic ca folosesc o clasa scrisa de mine. E o clasa gasita acum vreun an si care mi s-a parut excelenta. Iata codul (nu mai stiu exact de unde e luata):

    Cod:
    <?php
    
    
    
    /*
    
     * Database Management for PHP
    
     *
    
     * Copyright (c) 1998-2000 NetUSE AG
    
     *          Boris Erdmann, Kristian Koehntopp
    
     *
    
     * db_mysql.php
    
     *
    
     */ 
    
    
    
    class DB_MySQL {
    
     
    
     /* public: connection parameters */
    
     var $DBHost   = "";
    
     var $DBPort   = "";
    
     var $DBDatabase = "";
    
     var $DBUser   = "";
    
     var $DBPassword = "";
    
     var $Persistent = false;
    
    
    
     /* public: configuration parameters */
    
     var $Auto_Free   = 1;   ## Set to 1 for automatic mysql_free_result()
    
     var $Debug     = 0;   ## Set to 1 for debugging messages.
    
     var $Halt_On_Error = "yes"; ## "yes" (halt with message), "no" (ignore errors quietly), "report" (ignore errror, but spit a warning)
    
     var $Seq_Table   = "db_sequence";
    
     var $Connected   = false;
    
    
    
     /* public: result array and current row number */
    
     var $Record  = array();
    
     var $Row;
    
    
    
     /* public: current error number and error text */
    
     var $Errno  = 0;
    
     var $Error  = "";
    
    
    
     /* public: this is an api revision, not a CVS revision. */
    
     var $type   = "mysql";
    
     var $revision = "1.2";
    
    
    
     /* private: link and query handles */
    
     var $Link_ID = 0;
    
     var $Query_ID = 0;
    
     
    
    
    
    
    
     /* public: constructor */
    
     function DB_Sql($query = "") {
    
       $this->query($query);
    
     }
    
    
    
     /* public: some trivial reporting */
    
     function link_id() {
    
      return $this->Link_ID;
    
     }
    
    
    
     function query_id() {
    
      return $this->Query_ID;
    
     }
    
    
    
     function try_connect($DBHost = "", $DBPort = "", $DBUser = "", $DBPassword = "") {
    
      $this->Query_ID = 0;
    
      /* Handle defaults */
    
      if ("" == $DBHost)    $DBHost   = $this->DBHost;
    
      if ("" == $DBPort)    $DBPort   = $this->DBPort;
    
      if ("" == $DBUser)    $DBUser   = $this->DBUser;
    
      if ("" == $DBPassword)  $DBPassword = $this->DBPassword;
    
       
    
      if($DBPort != "") $DBHost .= ":" . $DBPort;
    
    
    
      if($this->Persistent)
    
       $this->Link_ID = @mysql_pconnect($DBHost, $DBUser, $DBPassword);
    
      else
    
       $this->Link_ID = @mysql_connect($DBHost, $DBUser, $DBPassword);
    
      
    
      $this->Connected = $this->Link_ID ? true : false;
    
    
    
      return $this->Connected;
    
     }
    
    
    
     /* public: connection management */
    
     function connect($DBDatabase = "", $DBHost = "", $DBPort = "", $DBUser = "", $DBPassword = "") {
    
      /* Handle defaults */
    
      if ("" == $DBDatabase)  $DBDatabase = $this->DBDatabase;
    
      if ("" == $DBPort)    $DBPort   = $this->DBPort;
    
      if ("" == $DBHost)    $DBHost   = $this->DBHost;
    
      if ("" == $DBUser)    $DBUser   = $this->DBUser;
    
      if ("" == $DBPassword)  $DBPassword = $this->DBPassword;
    
       
    
      if($DBPort != "") $DBHost .= ":" . $DBPort;
    
    
    
      /* establish connection, select database */
    
      if (!$this->Connected) {
    
       $this->Query_ID = 0;  
    
       if($this->Persistent)
    
        $this->Link_ID=mysql_pconnect($DBHost, $DBUser, $DBPassword);
    
       else
    
        $this->Link_ID=mysql_connect($DBHost, $DBUser, $DBPassword);
    
    
    
       if (!$this->Link_ID) {
    
        $this->halt("pconnect($DBHost, $DBUser, $DBPassword) failed.");
    
        return 0;
    
       }
    
    
    
       if (!@mysql_select_db($DBDatabase,$this->Link_ID)) {
    
        $this->halt("cannot use database ".$this->DBDatabase);
    
        return 0;
    
       }
    
       $this->Connected = true;
    
      }
    
      
    
      return $this->Link_ID;
    
     }
    
    
    
     /* public: discard the query result */
    
     function free_result() {
    
      if(is_resource($this->Query_ID)) {
    
       @mysql_free_result($this->Query_ID);
    
      }
    
      $this->Query_ID = 0;
    
     }
    
    
    
     function getmicrotime()
    
     { 
    
    	list($usec, $sec) = explode(" ",microtime()); 
    
      return ((float)$usec + (float)$sec); 
    
     } 
    
    
    
     function query($Query_String) {
    
      /* No empty queries, please, since PHP4 chokes on them. */
    
      if ($Query_String == "")
    
       /* The empty query string is passed on from the constructor,
    
        * when calling the class without a query, e.g. in situations
    
        * like these: '$db = new DB_Sql_Subclass;'
    
        */
    
       return 0;
    
    
    
      if (!$this->connect()) {
    
       return 0; /* we already complained in connect() about that. */
    
      };
    
    
    
    	$lStart = $this->getmicrotime();
    
    
    
      # New query, discard previous result.
    
      if ($this->Query_ID) {
    
       $this->free_result();
    
      }
    
    
    
      if ($this->Debug)
    
       printf("Debug: query = %s<br>n", $Query_String);
    
    
    
      $this->Query_ID = @mysql_query($Query_String,$this->Link_ID);
    
      $this->Row  = 0;
    
      $this->Errno = mysql_errno();
    
      $this->Error = mysql_error();
    
      if (!$this->Query_ID) {
    
       $this->halt("Invalid SQL: ".$Query_String);
    
      }
    
    
    
    	$lStart = round($this->getmicrotime() - $lStart, 3);
    
    
    
    /*
    
    	if (!preg_match("/select 0/i", $Query_String))
    
    	{
    
     echo "[Execute]: <font color="#FF0000">$Query_String</font><br>";
    
     echo "[Return - SELECT]: " . @mysql_num_rows($this->Query_ID) . " rows<br>";
    
     echo "[Return - INSERT]: " . @mysql_affected_rows($this->Query_ID) . " affected rows<br>";
    
     echo "[Duration]: $lStart seconds<hr>";
    
    	}*/
    
      # Will return nada if it fails. That's fine.
    
      return $this->Query_ID;
    
     }
    
    
    
     /* public: walk result set */
    
     function next_record() {
    
      if (!$this->Query_ID) {
    
       $this->halt("next_record called with no query pending.");
    
       return 0;
    
      }
    
    
    
      $this->Record = @mysql_fetch_array($this->Query_ID);
    
      $this->Row  += 1;
    
      $this->Errno = mysql_errno();
    
      $this->Error = mysql_error();
    
    
    
      $stat = is_array($this->Record);
    
      if (!$stat && $this->Auto_Free) {
    
       $this->free_result();
    
      }
    
      return $stat;
    
     }
    
    
    
     /* public: position in result set */
    
     function seek($pos = 0) {
    
      $status = @mysql_data_seek($this->Query_ID, $pos);
    
      if ($status) {
    
       $this->Row = $pos;
    
      } else {
    
       
    
       /* half assed attempt to save the day, 
    
        * but do not consider this documented or even
    
        * desireable behaviour.
    
        */
    
       @mysql_data_seek($this->Query_ID, $this->num_rows());
    
       $this->Row = $this->num_rows();
    
      }
    
      return true;
    
     }
    
    
    
     /* public: table locking */
    
     function lock($table, $mode="write") {
    
      $this->connect();
    
      
    
      $query="lock tables ";
    
      if (is_array($table)) {
    
       while (list($key,$value)=each($table)) {
    
        if ($key=="read" && $key!=0) {
    
         $query.="$value read, ";
    
        } else {
    
         $query.="$value $mode, ";
    
        }
    
       }
    
       $query=substr($query,0,-2);
    
      } else {
    
       $query.="$table $mode";
    
      }
    
      $res = @mysql_query($query, $this->Link_ID);
    
      if (!$res) {
    
       $this->halt("lock($table, $mode) failed.");
    
       return 0;
    
      }
    
      return $res;
    
     }
    
     
    
     function unlock() {
    
      $this->connect();
    
    
    
      $res = @mysql_query("unlock tables");
    
      if (!$res) {
    
       $this->halt("unlock() failed.");
    
       return 0;
    
      }
    
      return $res;
    
     }
    
    
    
    
    
     /* public: evaluate the result (size, width) */
    
     function affected_rows() {
    
      return @mysql_affected_rows($this->Link_ID);
    
     }
    
    
    
     function num_rows() {
    
      return @mysql_num_rows($this->Query_ID);
    
     }
    
    
    
     function num_fields() {
    
      return @mysql_num_fields($this->Query_ID);
    
     }
    
    
    
     /* public: shorthand notation */
    
     function nf() {
    
      return $this->num_rows();
    
     }
    
    
    
     function np() {
    
      print $this->num_rows();
    
     }
    
    
    
     function f($Name) {
    
      return isset($this->Record[$Name]) ? $this->Record[$Name] : "";
    
     }
    
    
    
     function p($Name) {
    
      print $this->Record[$Name];
    
     }
    
    
    
     /* public: sequence numbers */
    
     function nextid($seq_name) {
    
      $this->connect();
    
      
    
      if ($this->lock($this->Seq_Table)) {
    
       /* get sequence number (locked) and increment */
    
       $q = sprintf("select nextid from %s where seq_name = '%s'",
    
            $this->Seq_Table,
    
            $seq_name);
    
       $id = @mysql_query($q, $this->Link_ID);
    
       $res = @mysql_fetch_array($id);
    
       
    
       /* No current value, make one */
    
       if (!is_array($res)) {
    
        $currentid = 0;
    
        $q = sprintf("insert into %s values('%s', %s)",
    
             $this->Seq_Table,
    
             $seq_name,
    
             $currentid);
    
        $id = @mysql_query($q, $this->Link_ID);
    
       } else {
    
        $currentid = $res["nextid"];
    
       }
    
       $nextid = $currentid + 1;
    
       $q = sprintf("update %s set nextid = '%s' where seq_name = '%s'",
    
            $this->Seq_Table,
    
            $nextid,
    
            $seq_name);
    
       $id = @mysql_query($q, $this->Link_ID);
    
       $this->unlock();
    
      } else {
    
       $this->halt("cannot lock ".$this->Seq_Table." - has it been created?");
    
       return 0;
    
      }
    
      return $nextid;
    
     }
    
    
    
     /* public: return table metadata */
    
     function metadata($table='',$full=false) {
    
      $count = 0;
    
      $id  = 0;
    
      $res  = array();
    
    
    
      /*
    
       * Due to compatibility problems with Table we changed the behavior
    
       * of metadata();
    
       * depending on $full, metadata returns the following values:
    
       *
    
       * - full is false (default):
    
       * $result[]:
    
       *  [0]["table"] table name
    
       *  [0]["name"]  field name
    
       *  [0]["type"]  field type
    
       *  [0]["len"]  field length
    
       *  [0]["flags"] field flags
    
       *
    
       * - full is true
    
       * $result[]:
    
       *  ["num_fields"] number of metadata records
    
       *  [0]["table"] table name
    
       *  [0]["name"]  field name
    
       *  [0]["type"]  field type
    
       *  [0]["len"]  field length
    
       *  [0]["flags"] field flags
    
       *  ["meta"][field name] index of field named "field name"
    
       *  The last one is used, if you have a field name, but no index.
    
       *  Test: if (isset($result['meta']['myfield'])) { ...
    
       */
    
    
    
      // if no $table specified, assume that we are working with a query
    
      // result
    
      if ($table) {
    
       $this->connect();
    
       $id = @mysql_list_fields($this->DBDatabase, $table);
    
       if (!$id)
    
        $this->halt("Metadata query failed.");
    
      } else {
    
       $id = $this->Query_ID; 
    
       if (!$id)
    
        $this->halt("No query specified.");
    
      }
    
     
    
      $count = @mysql_num_fields($id);
    
    
    
      // made this IF due to performance (one if is faster than $count if's)
    
      if (!$full) {
    
       for ($i=0; $i<$count; $i++) {
    
        $res[$i]["table"] = @mysql_field_table ($id, $i);
    
        $res[$i]["name"] = @mysql_field_name ($id, $i);
    
        $res[$i]["type"] = @mysql_field_type ($id, $i);
    
        $res[$i]["len"]  = @mysql_field_len  ($id, $i);
    
        $res[$i]["flags"] = @mysql_field_flags ($id, $i);
    
       }
    
      } else { // full
    
       $res["num_fields"]= $count;
    
      
    
       for ($i=0; $i<$count; $i++) {
    
        $res[$i]["table"] = @mysql_field_table ($id, $i);
    
        $res[$i]["name"] = @mysql_field_name ($id, $i);
    
        $res[$i]["type"] = @mysql_field_type ($id, $i);
    
        $res[$i]["len"]  = @mysql_field_len  ($id, $i);
    
        $res[$i]["flags"] = @mysql_field_flags ($id, $i);
    
        $res["meta"][$res[$i]["name"]] = $i;
    
       }
    
      }
    
      
    
      // free the result only if we were called on a table
    
      if ($table && is_resource($id)) @mysql_free_result($id);
    
      return $res;
    
     }
    
    
    
     function close()
    
     {
    
      if ($this->Query_ID) {
    
       $this->free_result();
    
      }
    
      if ($this->Connected && !$this->Persistent) {
    
       mysql_close($this->Link_ID);
    
       $this->Connected = false;
    
      }
    
     } 
    
    
    
     /* private: error handling */
    
     function halt($msg) {
    
      $this->Error = @mysql_error($this->Link_ID);
    
      $this->Errno = @mysql_errno($this->Link_ID);
    
      if ($this->Halt_On_Error == "no")
    
       return;
    
    
    
      $this->haltmsg($msg);
    
    
    
      if ($this->Halt_On_Error != "report")
    
       die("Session halted.");
    
     }
    
    
    
     function haltmsg($msg) {
    
      printf("</td></tr></table><b>Database error:</b> %s<br>n", $msg);
    
      printf("<b>MySQL Error</b>: %d (%s)<br>n",
    
       $this->Errno,
    
       $this->Error);
    
     }
    
    
    
     function table_names() {
    
      $this->query("SHOW TABLES");
    
      $i=0;
    
      while ($info=mysql_fetch_row($this->Query_ID))
    
       {
    
       $return[$i]["table_name"]= $info[0];
    
       $return[$i]["tablespace_name"]=$this->DBDatabase;
    
       $return[$i]["database"]=$this->DBDatabase;
    
       $i++;
    
       }
    
      return $return;
    
     }
    
    }
    
    ?>
    Mi se pare destul de straight-forward si usor de utilizat.

    Bafta!.

  7. #7
    Avatarul lui andypopa
    andypopa este deconectat Membru SeoPedia
    Reputatie:
    0
    Data înscrierii
    28th July 2005
    Locaţie
    Bucuresti
    Posturi
    417
    Putere Rep
    0


    Implicit

    Thanks man... Well, acum ma uit la ea asa :shock: , dar e probabil fiindca de-acia m-am sculat. Iti raman dator.

  8. #8
    Avatarul lui Bruzli
    Bruzli este deconectat Administrator
    Reputatie:
    42
    Data înscrierii
    26th April 2005
    Locaţie
    Oradea
    Vârstă
    46
    Posturi
    980
    Putere Rep
    42


    Implicit

    Face parte dintr-o colectie de clase - PHPlib, aici e si o documentatie:
    documentatie phplib

  9. #9
    Avatarul lui WeaselMan
    WeaselMan este deconectat Membru SeoPedia
    Reputatie:
    37
    Data înscrierii
    22nd July 2005
    Locaţie
    weaseland
    Vârstă
    41
    Posturi
    447
    Putere Rep
    37


    Implicit

    Clase in PHP... nasoale rau de tot, si nu recomand nimanui sa foloseasca asa ceva. Reduce timpul de executie, vine fiecare si isi baga codita in ele si mai adauga cate ceva, nu stii ce, care, de unde, cum se executa chestia X, Y, Z... :shock: in concluzie... OOP sucks!

    Pentru conexiuni si comenzi pentru MySQL eu folosesc un fisier sql.php care-l includ o sigura data in index.php, si functiile le folosesc peste tot unde e nevoie. L-am facut eu, dar daca sunt erori sau ceva nu-mi asum responsabilitatea

    Cod:
    <?php
    
    
    
    //by weasel 05.03.2005
    
    
    
    define('DB_SERVER_HOST', 'localhost');
    
    define('DB_SERVER_USERNAME', 'test');
    
    define('DB_SERVER_PASSWORD', 'test123');
    
    define('DB_NAME', 'test');
    
    
    
    $queries = 0; //keep the number of queries
    
    $sqltime = 0; //time spent on queries
    
    
    
    function db_handle_errors($query = NULL)
    
    {
    
    	echo("Fatal Error on query: {$query}<br />SQL Error: " . mysql_error());
    
    	die();
    
    }
    
    
    
    if(!$db = @mysql_connect(DB_SERVER_HOST, DB_SERVER_USERNAME, DB_SERVER_PASSWORD))
    
    {
    
    	db_handle_errors();
    
    }
    
    
    
    if(!mysql_select_db(DB_NAME))
    
    {
    
    	db_handle_errors();
    
    }
    
    
    
    function sql($query)
    
    {
    
    	global $debug_info, $queries, $sqltime;
    
    	
    
    	$begintimer = timer(true);
    
    
    
    	if(!$resource = mysql_query($query))
    
    	{
    
     db_handle_errors($query);
    
    	}
    
    	else
    
    	{
    
     $queries++;
    
    
    
     $debug_info .= "-> Query #{$queries} took " . ($endtime = round(timer(true) - $begintimer, 4)) . " seconds: {$query}nn";
    
     $sqltime += $endtime;
    
    
    
     return($resource);
    
    	}
    
    }
    
    
    
    function sql_fetchresult($query)
    
    {
    
    	$resource = sql($query);
    
    
    
    	$result = @mysql_result($resource, 0);
    
    
    
    	mysql_free_result($resource);
    
    
    
    	return($result);
    
    }
    
    
    
    function sql_fetchrow($query)
    
    {
    
    	$resource = sql($query);
    
    
    
    	$result = mysql_fetch_row($resource);
    
    
    
    	mysql_free_result($resource);
    
    
    
    	return($result);
    
    }
    
    
    
    function sql_fetcharray($query, $index = NULL)
    
    {
    
    	$resource = sql($query);
    
    
    
    	$result = array();
    
    
    
    	while($row = mysql_fetch_array($resource))
    
    	{
    
     if($index !== NULL)
    
     {
    
     	$result[$row[$index]] = $row;
    
     }
    
     else
    
     {
    
     	$result[] = $row;
    
     }
    
    	}
    
    
    
    	mysql_free_result($resource);
    
    
    
    	return($result);
    
    }
    
    
    
    ?>
    (\_/) I like bunnies
    (>.<) ...and people with b00bs. But especially bunnies with b00bs xD

  10. #10
    Avatarul lui danic
    danic este deconectat Membru SeoPedia
    Reputatie:
    0
    Data înscrierii
    16th November 2004
    Locaţie
    Timisoara, Timis
    Vârstă
    43
    Posturi
    255
    Putere Rep
    0


    Implicit

    Originally posted by WeaselMan
    [b]OOP sucks!
    Dupa cum am mai spus-o: "Mda!"
    Afirmatie total nefondata!

Pagina 1 din 3 123 UltimulUltimul

Informații subiect

Utilizatori care navighează în acest subiect

Momentan este/sunt 1 utilizator(i) care navighează în acest subiect. (0 membrii și 1 vizitatori)

Thread-uri Similare

  1. PHP Coding guidelines -> Super!
    De WeaselMan în forumul Server side
    Răspunsuri: 16
    Ultimul Post: 27th October 2005, 17:45

Permisiuni postare

  • Nu puteţi posta subiecte noi.
  • Nu puteţi răspunde la subiecte
  • Nu puteţi adăuga ataşamente
  • Nu puteţi modifica posturile proprii
  •