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 :

Cloner de la classe MySQLi..


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Janvier 2006
    Messages
    111
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2006
    Messages : 111
    Par défaut Cloner de la classe MySQLi..
    Bonjour,
    MySQLi est une extension de PHP voir ici : http://www.php.net/mysqli

    Ne pouvant pas intégrer cette extension, je veux faire une class similaire (voir ci-dessous)

    Mais j'ai pas du tout l'habitude de l'objet sous PHP (je m'en veux), et j'aimerai pouvoir faire çà:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    $db = new mysqli($BD_serveur, $BD_utilisateur, $BD_motDePasse, $BD_base);
    $request = 'SELECT * FROM user;';
    $result = $db->query($request);
    while ($row = $result->fetch_assoc()) {
    ....
    }
    Le problème est avec $row = $result->fetch_assoc()
    Avec MySQLi, on écrit exactement comme cela...
    Mais j'ai de la buée devant les yeux et je sais pas ce que je dois modifier dans la class...

    Merci d'avance pour ce coup de pouce et de vos explication!





    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
    <?php
    class mysqli {
    // Définition des variables internes
    	var $_con = 0;//Pour la connexion
    	var $_res = 0;//Pour le resultat
    	var $_res_data = Array(); // Resultat
    	var $_nbres = 0; //Nombre de réponse
    	var $_err = ""; // Pemet l'affichage des erreurs
    	var $_debug_sql = 0; //Pour le debug :)
     
    	//Construteur de la classe
    	function mysqli($_host,$_user="www",$_password="",$_db) {
     
    		// Se connect en mode persistent et n'affiche pas les erreurs (@ devant la fonction)
    		$this->_con = @mysql_pconnect($_host, $_user, $_password) or die("Impossible de se connecter a $_host");		
    		mysql_select_db($_db) or die("Impossible d'ouvrir la base de donnee $_db");		
    	}
     
    	//Active le debug
    	function setDebug() {	
    		$this->_debug_sql = 1 ;
    		echo "debug Activé<br>";
    	}
     
    	//Execute un requete
    	function query($_sql) {
    		if($this->_debug_sql) echo "Requete : $_sql <br>";
    		mysql_free_result ($this->_res);//Dans le cas ou d'autre requete on déja été effectué
    		$this->_res=@mysql_query($_sql,$this->_con);
    		if(!$this->_res) {//Erreur
    			$this->_err = "Erreur sur la requete : $_sql <br>Réponse : ".mysql_error()."<br>"; 
    			if($this->_debug_sql) echo $_err;//On affiche l'erreur
    		} else if(!$_nbres = mysql_num_rows($this->_res)) return 0;//S'il n y a pas de résultat
    			else if($this->_debug_sql) echo "Nombre de réponse : $_nbres<br>";// Si il y en a alors on affiche le nombre
    			else return $this->_res;
    	}
    	//Recupere le resultat d'une ligne
    	function fetch_assoc() {	
    		if(!$this->_res) return 0;//Erreur de la requete
    		$this->_res_data=mysql_fetch_array($this->_res);//On met le resultat d'une ligne dans un tableau
    		return $this->_res_data;
    	}
    	//Affiche la valeur d'un champ
    	function field($f) {
    		return($this->_res_data[$f]);
    	}
    	//Recupère le nom des champs
    	function getInfoTable() {
    		if(!$this->_res) return 0;
    		$_nbfield = mysql_num_fields($this->_res);//Nombre de champs de la requete
    		if(!$_nbfield) $this->_err = "Erreur lors du comptage de champ ".mysql_error()."<br>";
    		if($this->_debug_sql) 
    			if(!$_nbfield) echo $this->_err;
    			else echo "Nombre de champs : $_nbfield <br>";
    		for($zz=0;$zz<$_nbfield;$zz++) $_fields[]=@mysql_field_name($this->_res,$zz);
    		return $_fields;
    	}
    }
    ?>

  2. #2
    Membre Expert
    Avatar de s.n.a.f.u
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2006
    Messages
    2 760
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Août 2006
    Messages : 2 760
    Par défaut
    Salut,

    Désolé, je vais répondre par des questions...

    - Pourquoi ne peux-tu pas utiliser MySqli ?
    - Ne serait-il pas plus judicieux d'utiliser PDO ? (si non, argumenter )

  3. #3
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Janvier 2006
    Messages
    111
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2006
    Messages : 111
    Par défaut
    Je suis sur un serveur dont je n'ai pas la main, donc je peux pas installer d'extention, ni en faire une demande...

    Du coup j'essais de m'en faire une pour ne pas modifier tous les pages PHP utilisant cette extention.

  4. #4
    Membre Expert
    Avatar de s.n.a.f.u
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2006
    Messages
    2 760
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Août 2006
    Messages : 2 760
    Par défaut
    C'est du php 4 ?

  5. #5
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Janvier 2006
    Messages
    111
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2006
    Messages : 111
    Par défaut
    PHP Version 4.4.9

Discussions similaires

  1. Cloner une classe anonyme
    Par sebge2 dans le forum Langage
    Réponses: 8
    Dernier message: 27/11/2008, 18h36
  2. [MySQL] Fatal error: Class 'mysqli' not found in site
    Par rashid120 dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 29/07/2008, 08h42
  3. cloner une arborescence de classe
    Par jc63 dans le forum Hibernate
    Réponses: 2
    Dernier message: 05/09/2007, 11h16
  4. [MySQLi] Classe PHP5 pour MySQLi
    Par RyuTib dans le forum SQL Procédural
    Réponses: 3
    Dernier message: 06/03/2007, 19h43
  5. [MySQLi] Classe Session, problèmes Help !
    Par sirbaldur dans le forum Requêtes
    Réponses: 1
    Dernier message: 27/11/2006, 09h43

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