IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

Mysql et php 7 les classes


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 15
    Par défaut Mysql et php 7 les classes
    Bonjour,

    J'ai une classes assez vieille et php me dit : Methods with the same name as their class will not be constructors in a future version of PHP; parameters has a deprecated constructor

    Que dois je faire, voici le code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    class parameters
    {
      var $values ='';
      function parameters()
      {
        $this->load();
      }  // constructor
     
      function load()
      {
        global $db;
        $sql = "select id, value from parameters where session like 'O'";
    //    $sql = "select id, value from parameters where session = 'O'";
        $c = $db->Select($sql,'');
        while ($p = $c->fetch_object()) { $this->values[$p->id] = $p->value; } 
    //    while ($p = mysql_fetch_object($c)) { $this->values[$p->id] = $p->value; } 
        $this->registered();
      }
     
      function get($id)
      {
        global $db;
    		if(!isset($this->values[$id])) { 
    //   		$v = $this->values[$id];
    //    if ($v == '')
    //    {
          $sql = "select id, value from parameters where id = '$id'";
          $p = $db->SelectOne($sql);
          if (!$p) { 
    				 return false; 
    		  } else   {
            $this->values[$p->id] = $p->value; return $p->value;
            $this->registered();
          }
        } else {
       	$v = $this->values[$id];
    		 return $v; 
    		 }
      }
     
      function registered()
      {
        global $_sess_parameters;
        $_sess_parameters = serialize($this);
    //    session_register("_sess_parameters");
        $_SESSION['_sess_parameters']=$_sess_parameters;
      }
     
      function unregistered()
      {
        $this->values = null;
    //    session_unregister("_sess_parameters");
    		unset($_SESSION['_sess_parameters']);
      }
    } // class
    merci

  2. #2
    Membre émérite Avatar de Willy_k
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2011
    Messages
    541
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2011
    Messages : 541
    Par défaut
    Salut,
    pour ce premier problème function parameters() devient function __construct()

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 15
    Par défaut Mysql et php7 les classes
    Merci
    par contre j'en ai un autre où c'est galère :
    Methods with the same name as their class will not be constructors in a future version of PHP; database has a deprecated

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    class database_1 {
    //  var $dbh;
    //  var $db;
    //  var $cursor;
    //  var $nbrows;
    //  var $row;
     
    function __construct($dbh, $db, $cursor,$nbrows,$row )  {
        $this->dbh = $dbh;
        $this->db = $db;
        $this->cursor = $cursor;
        $this->nbrows = $nbrows;
        $this->row = $row;
      }  
     
      function database($host,$user,$pass,$name)   {
        $this->dbh = mysqli_connect($host,$user,$pass);
        //$this->dbh = mysql_pconnect($host,$user,$pass);
        if (!$this->dbh) { die($host."___".$user."_____Server connexion failed");}
     	$this->dbh->query("SET NAMES 'latin1'");
    	  if (!$this->select_db($name)) { 
    		 die($name." DB connexion failed "); 
    		 return false;
    	} 
      }  // constructeur
       function select_db($db) { 
          // Selectionne la database à utiliser.  Si le paramètre de la fonction select est 
          // passé à la fonction database la variable de class sera mise à jour.
          if (!empty($db)) $this->db = $db; 
          if (!$this->dbh->select_db($this->db)) {
    //      if (!mysql_select_db($this->db)) {
     
             $this->last_error = mysql_error();
             return false;
          }
          return true;
       }
      function Query($sql,$action) {
        $this->nbrows = -1;
        if (!$this->cursor = mysqli_query($this->dbh,$sql)) 
    	{
    	  if ($action == 'no_error') {echo mysql_error();'<br>'; return false;}
    	  else                       {die("[".$sql."] : ".mysql_error());}
    	}
        $query_type = array("insert","delete","update");
        // loop through the above array
        foreach ( $query_type as $word ) {
          // This is true if the query starts with insert, delete or update
          if ( preg_match("/$word /i",$sql) ) { $this->nbrows = mysqli_affected_rows($this->dbh); }
        }
        return $this->nbrows;
      }  // Query
      function Select($sql) {
    //    if (!$this->cursor = mysql_query($sql,$this->dbh)) { die("[".$sql."] : ".mysql_error()); }
        if (!$this->cursor = mysqli_query($this->dbh,$sql)) { die("[".$sql."] : ".mysql_error()); }
    		$this->nbrows = $this->cursor->num_rows;
        return $this->cursor;
      }  // Select
      function SelectOne($sql) {
        $this->Select($sql);
        if ($this->nbrows == 1) { $this->row = mysqli_fetch_object($this->cursor); }
        else                    { $this->row = false; }
        return $this->row;
      }  
    	// SelectOne
      function fetchObject()  {
        if (!$this->cursor) return false;
        $this->row = $this->cursor->fetch_object();
        return $this->row;
      }
    	function insertid() {
    	    if (!empty($db)) $this->db = $db; 
          if (!$this->dbh->select_db($this->db)) {
    			         $this->last_error = mysql_error();
             return false;
          }
    			 return (mysqli_insert_id($this->dbh));
    	}
    } // class

  4. #4
    Membre émérite Avatar de Willy_k
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2011
    Messages
    541
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2011
    Messages : 541
    Par défaut
    Avec ce code là tu as déjà renommé database en database_1 donc l'erreur ne devrait plus s'afficher, même si le nouveau nom database_1 n'est pas très intéressant... Me demande en fin de compte si le véritable constructeur n'est pas méthode database , parce qu'en l'état je ne sais pas trop à quoi sert ton __construct

    Regarde la doc pour la transition de mysql à mysqli parce que tu as un mélange des 2 à quelques endroits de ton code
    Pour
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $this->dbh->query("SET NAMES 'latin1'");
    comme précisé dans la doc il est préférable d'utiliser http://php.net/manual/fr/mysqli.set-charset.php

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 15
    Par défaut DB Class PHP7
    Bonjour,
    Je suis sous wampserver en local
    J'ai revu le db class ci après sosu php7 et tout fonctionnait bien.
    je suis revenu à php5 (qui est actuellement la version exploitation et tout est OK
    En revenant à PHP7 j'ai :
    Fatal error: Uncaught Error: Call to undefined function mysqli_connect() in E:\wamp64\www\dev\common\classes\db.class.php:16 Stack trace: #0 E:\wamp64\www\dev\common\application.php(62): database->__construct('localhost', 'root', '', 'sympa') #1 E:\wamp64\www\dev\index_a.php(27): require_once('E:\\wamp64\\www\\d...') #2 {main} thrown in E:\wamp64\www\dev\common\classes\db.class.php on line 16
    Je n'y comprends rien ...
    Merci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    <?php
    class database{
      var $dbh;
      var $db;
      var $cursor;
      var $nbrows;
      var $row;
      var $Debogue = true,
    	$NbRequetes  = 0;
     
    function __construct($host,$user,$pass,$name) {
    		$this->host= $host;
    		$this->user =$user;
    		$this->pass= $pass;
    		$this->name = $name;
    		$this->dbh = mysqli_connect($host,$user,$pass,$name);
    		if (!$this->dbh) { die("Serveur ==================>".$host."<br />Utilisateur================>".$user."<br /><br />=======================><b> impossible de se connacter au serveur ".$host."</b> =======================");}
    		$Base = mysqli_select_db($this->dbh, $this->name);
    		if (!$Base ) {
    			die("Serveur ==================>".$host."<br />Utilisateur================>".$user."<br /><br />=======================><b> impossible de se connacter à la base ".$this->name."</b> =======================");
    		}
    		$this->dbh->query("SET NAMES 'latin1'");
      if (!$this->select_db($name)) { 
    		 die($name." DB connexion failed "); 
    		 return false;
    	} 
      }  // constructeur
       function select_db($db) { 
          // Selectionne la database à utiliser.  Si le paramètre de la fonction select est 
          // passé à la fonction database la variable de class sera mise à jour.
          if (!empty($db)) $this->db = $db; 
          if (!$this->dbh->select_db($this->db)) {
    //      if (!mysql_select_db($this->db)) {
     
             $this->last_error = mysql_error();
             return false;
          }
          return true;
       }
      function Query($sql,$action) {
        $this->nbrows = -1;
        if (!$this->cursor = mysqli_query($this->dbh,$sql)) 
    	{
    	  if ($action == 'no_error') {echo mysql_error();'<br>'; return false;}
    	  else                       {die("[".$sql."] : ".mysql_error());}
    	}
        $query_type = array("insert","delete","update");
        // loop through the above array
        foreach ( $query_type as $word ) {
          // This is true if the query starts with insert, delete or update
          if ( preg_match("/$word /i",$sql) ) { $this->nbrows = mysqli_affected_rows($this->dbh); }
        }
        return $this->nbrows;
      }  // Query
      function Select($sql) {
    //    if (!$this->cursor = mysql_query($sql,$this->dbh)) { die("[".$sql."] : ".mysql_error()); }
        if (!$this->cursor = mysqli_query($this->dbh,$sql)) { die("[".$sql."] : ".mysql_error()); }
    			$this->nbrows= $this->cursor->num_rows;
        return $this->cursor;
      }  // Select
      function SelectOne($sql) {
        $this->Select($sql);
        if ($this->nbrows == 1) { $this->row = mysqli_fetch_object($this->cursor); }
        else                    { $this->row = false; }
        return $this->row;
      }  
    	// SelectOne
      function fetchObject()  {
        if (!$this->cursor) return false;
        $this->row = $this->cursor->fetch_object();
        return $this->row;
      }
    	function insertid() {
    	    if (!empty($db)) $this->db = $db; 
          if (!$this->dbh->select_db($this->db)) {
    			         $this->last_error = mysql_error();
             return false;
          }
    			 return (mysqli_insert_id($this->dbh));
    	}
    } // class
     
    ?>

  6. #6
    Membre émérite Avatar de Willy_k
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2011
    Messages
    541
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2011
    Messages : 541
    Par défaut
    Bonjour
    Ton code n'est pas très lisible, pourquoi tu ne veux pas le formater proprement !?
    Sinon l'erreur est due au fait que l'extension php_mysqli.dll n'est pas décommentée dans ton php.ini (extension=php_mysqli.dll ) .. S'il ya un ; dans le cas supprime le ; et redemarre ton wampserver

    Tes $this->last_error = mysql_error(); utilise toujours l'extension mysql, faudrait convertir cette partie avec mysqli_error http://php.net/manual/fr/mysqli.error.php..
    Je me perds grandement dans ta classe désolé, il y'a sûrement moyen d'améliorer tout ça

Discussions similaires

  1. php et les classes. dur dur d'apprendre
    Par zerros dans le forum Langage
    Réponses: 1
    Dernier message: 07/04/2010, 13h41
  2. Réponses: 1
    Dernier message: 31/01/2007, 11h59
  3. MySQL ne prend pas les ordres donnés par le script PHP
    Par arkelmy dans le forum Requêtes
    Réponses: 4
    Dernier message: 27/04/2006, 02h06
  4. [PHP5][MYSQL]Préserver une connexion entre les classes
    Par Invité dans le forum SQL Procédural
    Réponses: 3
    Dernier message: 02/02/2006, 11h51
  5. Réponses: 3
    Dernier message: 23/08/2004, 17h49

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo