Je ne comprends pas pourquoi déclarer en global ne marche pas, vu que ce que tu expliques porte sur les variables
locales...
Je viens d'essayer de passer par une variable de session mais ça ne marche pas
Voici ce que j'ai fait :
indexpage.php (fichier principal) :
<?php
session_start();
error_reporting(E_ALL ^ (E_NOTICE|E_WARNING|E_DEPRECATED));
//global $bdd;
include dirname(__DIR__)."\pdo\connect_mysql.php";
if ((empty($bdd))) {
$bdd=connect_mysql();
}
...
connect_mysql.php :
<?php
session_start();
//global $bdd;
header('Content-type: text/html; charset=UTF-8');
//// connexion
function connect_mysql() {
include_once (dirname(__DIR__).'\pdo\new\MyPdo.php');
try{
$bdd = new MyPdo();
$_SESSION['bdd']=$bdd;
return($bdd);
}
catch(PDOException $e){
echo "argggggggggggggg".$e->getMessage();
return(FALSE);
}
}
?>
MyPdo.php :
<?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 {
static public $DB_NAME = "su_dev_eis"; // ls : static public, je sais + pourquoi...
static public $HOST = "localhost";
static public $USER ="root";
static public $PASS ="root";
// ls : le constructeur de MyPdo appelle le constructeur de PDO en lui passant ses paramètres
function __construct() {
/* 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
parent::__construct('mysql:host=' . MyPdo::$HOST . ';dbname=' . MyPdo::$DB_NAME, MyPdo::$USER,MyPdo::$PASS, $pdo_options);
//MyPdo::$USER
}
}
// fin MyPDO
?>
un fichier autre que indexpage.php :
<?php
session_start();
...
include dirname(__DIR__)."\header.inc.php";
...
header.inc.php :
<?php
session_start();
...
$bdd=$_SESSION['bdd'];
...
var_dump($bdd);
$query1="SELECT * from users WHERE user='".$_SESSION['user']."'";
$qid = $bdd->prepare($query1);
$qid->execute();
...
Le var_dump ci-dessus affiche NULL

Je ne comprends pas pourquoi déclarer en global ne marche pas, vu que ce que tu expliques porte sur les variables[b] locales[/b]...
Je viens d'essayer de passer par une variable de session mais ça ne marche pas :(
Voici ce que j'ai fait :
indexpage.php (fichier principal) :
[php]<?php
session_start();
error_reporting(E_ALL ^ (E_NOTICE|E_WARNING|E_DEPRECATED));
//global $bdd;
include dirname(__DIR__)."\pdo\connect_mysql.php";
if ((empty($bdd))) {
$bdd=connect_mysql();
}
...[/php]
connect_mysql.php :
[php]<?php
session_start();
//global $bdd;
header('Content-type: text/html; charset=UTF-8');
//// connexion
function connect_mysql() {
include_once (dirname(__DIR__).'\pdo\new\MyPdo.php');
try{
$bdd = new MyPdo();
$_SESSION['bdd']=$bdd;
return($bdd);
}
catch(PDOException $e){
echo "argggggggggggggg".$e->getMessage();
return(FALSE);
}
}
?>[/php]
MyPdo.php :
[php]<?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 {
static public $DB_NAME = "su_dev_eis"; // ls : static public, je sais + pourquoi...
static public $HOST = "localhost";
static public $USER ="root";
static public $PASS ="root";
// ls : le constructeur de MyPdo appelle le constructeur de PDO en lui passant ses paramètres
function __construct() {
/* 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
parent::__construct('mysql:host=' . MyPdo::$HOST . ';dbname=' . MyPdo::$DB_NAME, MyPdo::$USER,MyPdo::$PASS, $pdo_options);
//MyPdo::$USER
}
}
// fin MyPDO
?>[/php]
un fichier autre que indexpage.php :
[php]<?php
session_start();
...
include dirname(__DIR__)."\header.inc.php";
...[/php]
header.inc.php :
[php]<?php
session_start();
...
$bdd=$_SESSION['bdd'];
...
var_dump($bdd);
$query1="SELECT * from users WHERE user='".$_SESSION['user']."'";
$qid = $bdd->prepare($query1);
$qid->execute();
...[/php]
Le var_dump ci-dessus affiche NULL :(