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 :

transmettre la variable de connexion PDO [PDO]


Sujet :

PHP & Base de données

  1. #1
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 369
    Points : 5 734
    Points
    5 734
    Billets dans le blog
    1
    Par défaut transmettre la variable de connexion PDO
    Bonsoir,

    dans une fonction, j'effectue la connexion PDO ce qui génère un objet PDO $bdd, puis j'appelle des fonctions qui doivent travailler sur la même base de données. Pour faire la transmission de $bdd, mon idée était de convertir la variable $bdd via serialize ($bddstring=serialize($bdd);) puis de transmettre cette variable par URL (add-event.php?bdd=<?php echo $bddstring;?>) mais pas le droit :
    You cannot serialize or unserialize PDO instances' in C:\wamp\www\cal\admin\index.php on line 11
    comment peut-on faire ?
    Il vaut mieux viser la perfection et la manquer que viser l'imperfection et l'atteindre. - Bertrand Russell

    Si la discussion est résolue, merci de cliquer sur le bouton

  2. #2
    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
    Pourquoi tu ne refais pas simplement la connexion dans la page de destination ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 369
    Points : 5 734
    Points
    5 734
    Billets dans le blog
    1
    Par défaut
    Effectivement je le ferai demain et une fois au point, résolu
    Il vaut mieux viser la perfection et la manquer que viser l'imperfection et l'atteindre. - Bertrand Russell

    Si la discussion est résolue, merci de cliquer sur le bouton

  4. #4
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par sabotage Voir le message
    Pourquoi tu ne refais pas simplement la connexion dans la page de destination ?
    Je rajouterais : "COMME TOUT LE MONDE" !

  5. #5
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 369
    Points : 5 734
    Points
    5 734
    Billets dans le blog
    1
    Par défaut
    La raison de ma méthode était : pourquoi faire simple si on peut faire compliqué ?
    Il vaut mieux viser la perfection et la manquer que viser l'imperfection et l'atteindre. - Bertrand Russell

    Si la discussion est résolue, merci de cliquer sur le bouton

  6. #6
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 369
    Points : 5 734
    Points
    5 734
    Billets dans le blog
    1
    Par défaut
    Je rouvre cette discussion car je tombe sur une difficulté : je souhaite faire comme tout le monde donc faire la connexion dans chaque fichier qui en a besoin. Le code de la connexion est fait dans un fichier et j'inclus ce fichier partout où j'ai besoin de me connecter. Mais dans ce fichier de connexion, il y a un aussi include et donc si je souhaite mettre une connexion dans des fichiers pas au même niveau dans l'arborescence, cet include n'est pas toujours bon.

    Voici le code de la connexion :

    connect_MySQL.php :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <?php 
    if(empty($bdd)){
    	include_once ('includes/class_MyPdo.php');
    }
    //// connexion
    try{
    				$bdd = new MyPdo("vercors");
      }
    catch(PDOException $e){
    				echo "argggggggggggggg".$e->getMessage();
    				return(FALSE);
    			}			
    ?>

    class_MyPdo.php
    Code php : 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
    <?php
    error_reporting(E_ALL ^ E_DEPRECATED ^ E_NOTICE);
    ini_set('display_errors','1'); 
     
    // MyPDO
     // ls : la classe MyPdo hérite de la classe PDO (extends)
    class MyPdo extends PDO {
     
    	protected $DB_NAME;
     
    	protected $HOST = "localhost:3306";
     
    	protected $USER ="----";
     
    	protected $PASS ="----";
     
     
     
    // ls : le constructeur de MyPdo appelle le constructeur de PDO en lui passant ses paramètres	
    	function __construct($db_name) {	
    	/* ls : la variable $pdo_options, ça date de ma formation de 2012 */ 
    	$pdo_options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION;
    	$pdo_options[PDO::ATTR_EMULATE_PREPARES] = false;//important sur les configs récentes
    	$pdo_options[PDO::ATTR_DEFAULT_FETCH_MODE] = PDO::FETCH_OBJ;//pour le mode objet
    	$pdo_options[PDO::MYSQL_ATTR_INIT_COMMAND] = "SET NAMES utf8";//pour l'utf-8
     
    	$this->DB_NAME = $db_name;
    	parent::__construct('mysql:host=' . $this->HOST . ';dbname=' . $this->DB_NAME,$this->USER,$this->PASS,$pdo_options);
     
    	}
     
    }
    ?>

    Je fais la connexion avec include_once "./includes/connect_mysql.php"; (dans un fichier à la racine alors que MySQL_connect se trouve dans le répertoire includes. mais si je dois faire aussi une connexion dans un autre fichier qui se trouve aussi dans le répertoire includes, j'inclue connect_mysql.php par include_once "connect_mysql.php"; mais l'include de la ligne 3 de connect_mysql.php n'est plus bon, donc comment faut-il faire ?
    Il vaut mieux viser la perfection et la manquer que viser l'imperfection et l'atteindre. - Bertrand Russell

    Si la discussion est résolue, merci de cliquer sur le bouton

  7. #7
    Invité
    Invité(e)
    Par défaut
    • __DIR__
    • dirname(__DIR__)

  8. #8
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 369
    Points : 5 734
    Points
    5 734
    Billets dans le blog
    1
    Par défaut
    Je me doutais bien qu'il fallait utiliser ces constantes magiques, mais __DIR__ indique le répertoire du fichier et dirname(__DIR__) le répertoire qui contient ce répertoire. Or le fichier qui inclut connect_mysql.php n'est pas toujours au même niveau de l'arborescence donc quand on inclut ce fichier, la constante __DIR__ ne pointe pas toujours au même niveau et donc je ne sais pas quoi faire...
    Il vaut mieux viser la perfection et la manquer que viser l'imperfection et l'atteindre. - Bertrand Russell

    Si la discussion est résolue, merci de cliquer sur le bouton

  9. #9
    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
    $_SERVER['DOCUMENT_ROOT'] alors
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  10. #10
    Invité
    Invité(e)
    Par défaut
    La position relative * d'un fichier inclus par rapport à celui dans lequel il est inclus ne change jamais.

    Même si ce dernier est lui-même inclus dans un autre, lui-même inclus dans un autre, lui-même inclus dans un autre, lui-même inclus dans un autre,.......


    * Ne pas confondre avec "chemin relatif".

    En clair, ici, il faut écrire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    	include_once (__DIR__.'/class_MyPdo.php');
    Ça ne t'aurait pas casse une patte de TESTER !!

  11. #11
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 369
    Points : 5 734
    Points
    5 734
    Billets dans le blog
    1
    Par défaut
    OK, les 2 écritures fonctionnent :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    	//include_once $_SERVER['DOCUMENT_ROOT'].'/html5test/caltest/includes/class_MyPdo.php';
    	include_once (__DIR__.'/class_MyPdo.php');
    Celle de Jérôme est beaucoup plus simple.
    Autrement dit, même si le fichier est inclus n fois (comme l'indique Jérôme au post 10), la constante __DIR__ est relative au fichier lui-même et pas à celui dans lequel il est inclus. N'est-ce pas ?
    Il vaut mieux viser la perfection et la manquer que viser l'imperfection et l'atteindre. - Bertrand Russell

    Si la discussion est résolue, merci de cliquer sur le bouton

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Transmettre variables de connexion aux différents job
    Par semsima dans le forum Développement de jobs
    Réponses: 2
    Dernier message: 25/04/2012, 11h23
  2. Transmettre une variable ?
    Par K20 dans le forum Langage
    Réponses: 10
    Dernier message: 01/01/2006, 22h55
  3. comment transmettre 1 variable de formulaire a 2 page cible
    Par NoobX dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 23/03/2005, 15h29
  4. Transmettre une variable via un lien href
    Par developpeur_mehdi dans le forum Balisage (X)HTML et validation W3C
    Réponses: 6
    Dernier message: 08/01/2005, 14h49
  5. Réponses: 12
    Dernier message: 23/06/2004, 13h50

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