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 :

Je manque de méthode


Sujet :

PHP & Base de données

  1. #1
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2012
    Messages
    144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2012
    Messages : 144
    Points : 88
    Points
    88
    Par défaut Je manque de méthode
    Bonjour

    Je débute avec PDO et j'ai quelques soucis.
    J'ai récupéré un fichier php contenant une classe permettant l"accès à une base de données Mysql.
    Je peux me connecter et lire et modifier les tables.
    Mon problème concerne les classes et méthodes prédéfinies. Mon fichier php a une classe permettant la connexion, et des méthodes query et exec.
    Mais où puis je trouver par exemple BeginTransaction ? Existe t'il un fichier contenant des méthodes prédéfinies ou doit-on les créer ?
    Merci !

  2. #2
    Membre émérite
    Avatar de badaze
    Homme Profil pro
    Chef de projets info
    Inscrit en
    Septembre 2002
    Messages
    1 412
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets info
    Secteur : Transports

    Informations forums :
    Inscription : Septembre 2002
    Messages : 1 412
    Points : 2 522
    Points
    2 522
    Par défaut
    Tu as des questions très précises.... mais tu ne donnes aucune information.
    Cela ne sert à rien d'optimiser quelque chose qui ne fonctionne pas.

    Mon site : www.emmella.fr

    Je recherche le manuel de l'Olivetti Logos 80B.

  3. #3
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2012
    Messages
    144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2012
    Messages : 144
    Points : 88
    Points
    88
    Par défaut
    Bonjour
    J'ai récupéré cette classe Db; les fonctions existantes étaient query et insert. Elles fonctionnent et je pense avoir compris.
    Je viens d'ajouter les fonctions beginTransaction, lastinsertId, et commit qui semblent ok.
    Mais je ne comprends pas bien leur fonctionnement réel. Par exemple, pour la fonction beginTransaction (dans mon code ci-après):
    - Le nom de la fonction est quelconque ?
    - "$this->connexion" fait référence je suppose à la connexion créée dans function__construct
    -la ligne "return $this->connexion->beginTransaction()" fait référence je suppose à une méthode prédéfinie de PDO, nommée beginTransaction ? Si oui, où puis je trouver ces valeurs prédéfinies ?
    Voilà les questions que je me pose...


    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
    class Db {
     
    	private $host = "sss";
    	private $name='nnn';
    	private $user="uuu";
    	private $pass=ppp;
     
    	function __construct($host=null,$name=null,$user=null,$pass=null){
    		if($host != null){
    			$this->host = $host;
    			$this->name = $name;
    			$this->user = $user;
    			$this->pass = $pass;
    		}
     
    		try{
     
    			$this->connexion = new PDO('mysql:host='.$this->host.';dbname='.$this->name,
    				$this->user,$this->pass,array(
    					PDO::MYSQL_ATTR_INIT_COMMAND =>'SET NAMES UTF8',
    					PDO::ATTR_ERRMODE => PDO::ERRMODE_WARNING));
     
    		}catch (PDOException $e){
    			echo 'Erreur : >>>>>Impossible de se connecter  à la BD !';die();
    		}
    	}
           //return last insert id
        public function lastInsertId($name = NULL) {
            if(!$this->connexion) {
                return false;
            }
            return $this->connexion->lastInsertId($name);
        }
     
      public function beginTransaction()
        {
            return $this->connexion->beginTransaction();
        }
     
          public function commit()
        {
            return $this->connexion->commit();
        }
     
    	public function query($sql , $data=array()){
    		$req = $this->connexion->prepare($sql);
    		$req->execute($data);
    		return $req->fetchAll(PDO::FETCH_OBJ); 
    	}
     
    	public function insert($sql , $data=array()){
    		$req = $this->connexion->prepare($sql);
    		$req->execute($data);
    	}
     
     
    }

  4. #4
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Je sais que ça peut paraitre fou mais ... dans la doc :
    http://php.net/manual/fr/pdo.begintransaction.php
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2012
    Messages
    144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2012
    Messages : 144
    Points : 88
    Points
    88
    Par défaut
    Ok.

    Donc pour utiliser les méthodes PDO, il faut que je crée dans mon fichier php toutes les fonctions qui me seront utiles.

    Je reprends l'exemple de la transaction . Je lis dans la doc pour beginTransaction :
    public bool PDO::beginTransaction ( void )

    Donc je crée une fonction avec le nom qui me convient (mais pour simplifier je garde le même nom que la méthode prédéfinie)
    je retire du nom PDO:: et je garde seulement le nom de la méthode prédéfinie :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    public function beginTransaction()
        {
            return $this->connexion->beginTransaction();
        }
    Comme je lis dans la doc que la valeur retournée est booléenne, je peux alors traiter ensuite, en php :



    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $retour=$DB->beginTransaction();
    if ($retour==false)
        {echo "erreur Transaction";}


    Merci de m'avoir mis sur la piste...Je découvre PDO (et la POO) peu à peu, et cela me plaît.

Discussions similaires

  1. Méthode ADO, il me manque toutes les 1ères lignes
    Par mouftie dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 05/05/2016, 16h14
  2. [1.x] [sf 2.0] Il manque des méthodes dans la classe Form
    Par rei.uchiwa dans le forum Symfony
    Réponses: 1
    Dernier message: 28/10/2010, 20h03
  3. [Singleton] Différences avec méthodes statiques
    Par Franche dans le forum Design Patterns
    Réponses: 1
    Dernier message: 26/02/2003, 17h10
  4. Probleme d'impression avec la méthode TForm->Print()
    Par Kid Icarus dans le forum C++Builder
    Réponses: 13
    Dernier message: 31/07/2002, 14h26
  5. Cryptage en C selon la méthode de césat
    Par shenron dans le forum C
    Réponses: 2
    Dernier message: 31/05/2002, 08h22

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