Pb avec include du fichier de connexion à la base

Eléphant du PHP | 113 Messages

16 nov. 2013, 12:49

Bonjour,

J'ai un unique fichier de connexion à ma base de données et je l'appelle sur mes pages au besoin.
Plutôt que de devoir remplir mes codes d'accès sur certain fichier config de script, j'appelle également ce fichier de connexion.

Et sur un fichier, j'ai un problème sans trop comprendre pourquoi.

Voici le fichier config d'un script de vote:
<?php

session_start();
ob_start();
error_reporting(E_ALL-E_NOTICE);

define('PULSE_DIR', 'Vote'); // absolute path of the dir where Pulse is; WITHOUT trailing slash

/** DATABASE CONNECTION CONFIGURATION **/
define('HOSTNAME', '**************'); // hostname of your database; it is localhost in most cases
define('USERNAME', '***********'); // username of the database
define('PASSWORD', '************'); // password for the database
define('DATABASE', '************'); // name of the database

@mysql_connect(HOSTNAME, USERNAME, PASSWORD);
@mysql_select_db(DATABASE);

?>
Ca fonctionne.
Voici le fichier modifié:
<?php
include("include/connexbdd.php");

ob_start();
error_reporting(E_ALL-E_NOTICE);

define('PULSE_DIR', 'Vote); // absolute path of the dir where Pulse is; WITHOUT trailing slash

/** DATABASE CONNECTION CONFIGURATION **/
define('HOSTNAME', '$hostname'); // hostname of your database; it is localhost in most cases
define('USERNAME', '$user'); // username of the database
define('PASSWORD', '$password'); // password for the database
define('DATABASE', '$nom_base_donnees'); // name of the database

@mysql_connect(HOSTNAME, USERNAME, PASSWORD);
@mysql_select_db(DATABASE);

?>
Avec ça, j'ai un message box "impossible de se connecter à la base". Pourtant, ça marche bien pour d'autre script.
Je m'intéresse alors au chemin du fichier "connexbdd.php" et mettant "../include/connexbdd.php" mais là, le fichier est introuvable. C'est bizarre car ce chemin doit me renvoyer à la racine du site, non ?

Pour comprendre, mon fichier de connexion est dans le dossier "include" et le fichier config du script, dans le dossier "Vote". Ces 2 dossiers sont à la racine du site.

Merci pour votre aide.
Parce qu'on vit dans un monde de CONs, il faut bien ça: http://www.espacedecon.fr/

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

16 nov. 2013, 16:44

salut,

dans le second ficher tu :
- redéfinis des constante existante
- utilise des variables qui n'existe pas
- a oublier une ' dans la définition de la première constante ;)

en dehors de cela pourquoi ne pas simplement utiliser la connexion créer dans le premier fichier ?
une fois inclus (correctement tu n'as pas besoin du reste la connexion étant déja faite.

ensuite l'utilisation des constantes ne sert à rien autant mettre directement les infos dans la fonction mysql_connect.

dernière chose, sur la connexion mysql, tu devrais regarder du coté de l'extension mysqli en remplacement de l'extension mysql qui est vouée à disparaître.

pour ce qui est de l'inclusion du fichier il faut voir dans qu'elle fichier tu te trouve et si ton fichier "incluant" est déjà dans un autre fichier (cas de pseudo frame par exemple).
si c'est le cas c'est l'emplacement du 1er fichier qui compte et pas celui qui inclus ;)

sinon oui le ../ te permet de "remonter" d'un répertoire (d’accéder au répertoire parent).

@+
Il en faut peu pour être heureux ......

Eléphant du PHP | 113 Messages

16 nov. 2013, 18:24

Merci pour toutes ces remarques:
- utilise des variables qui n'existe pas
Comment ça ?
en dehors de cela pourquoi ne pas simplement utiliser la connexion créer dans le premier fichier ?
une fois inclus (correctement tu n'as pas besoin du reste la connexion étant déja faite.
J'y ai pensé, mais dans le fichier config, il y a une variable en plus, le dossier pulse_dir. Je ne voulais pas l'inclure dans le fichier connexionbdd.php pour plus de "propreté". Si un jour je supprime ce système de vote, ça m'évitera d'oublier de supprimer cette ligne de code.
ensuite l'utilisation des constantes ne sert à rien autant mettre directement les infos dans la fonction mysql_connect.
Ca permet de renouveler le mot de passe plus rapidement.
Parce qu'on vit dans un monde de CONs, il faut bien ça: http://www.espacedecon.fr/

Eléphant du PHP | 77 Messages

16 nov. 2013, 18:27

Comment ça ?
$user, $hostname... tu les définis où ?

Par contre, je comprends pas, tu fais un include d'un fichier de connexion à la base de données et ensuite derrière tu refais une connexion à la base de données ?
Développeur PHP/Javascript/HTML

Mes sites perso :
construire une piscine => http://www.construire-sa-piscine.com
Le cadre végétal => http://www.cadre-vegetal.org

Eléphant du PHP | 113 Messages

16 nov. 2013, 19:11

Ces variables viennent du fichier connexbdd.php.
Et j'ai en effet supprimer la connexion dans le fichier config mais c'est pareil.

Le code ci dessous est le fichier d'un autre script et ça marche bien.
<?php include("../include/connexbdd.php"); ?>

<?php
  $host = "$hostname";
  $db_uname = "$user";
  $db_pass = "$password";
  $database = "$nom_base_donnees";
  $dbtable = "likes_rep";
  
  $conn = mysql_connect($host,$db_uname,$db_pass) or die(mysql_error());
		  mysql_select_db($database,$conn) or die(mysql_error());
?>
Parce qu'on vit dans un monde de CONs, il faut bien ça: http://www.espacedecon.fr/

ViPHP
xTG
ViPHP | 7331 Messages

16 nov. 2013, 19:22

Les variables entre simple quote ne sont pas interprétées. ;)

Eléphant du PHP | 113 Messages

16 nov. 2013, 20:09

Merci, j'ai mis les doubles quotes mais il doit y avoir autre chose. :(
Parce qu'on vit dans un monde de CONs, il faut bien ça: http://www.espacedecon.fr/

ViPHP
xTG
ViPHP | 7331 Messages

16 nov. 2013, 20:12

Si tu n'as aucune autre erreur que l'erreur mysql c'est que le problème vient du contenu des variables.
Affiches les et vérifies leur contenu.

Eléphant du PHP | 113 Messages

18 nov. 2013, 14:25

Pas de message si j'ai pas fait d'erreur.
<?php
include("include/connexbdd.php");



define('PULSE_DIR', 'Pulse_quest'); // absolute path of the dir where Pulse is; WITHOUT trailing slash

/** DATABASE CONNECTION CONFIGURATION **/
define('HOSTNAME', "$hostname"); // hostname of your database; it is localhost in most cases
define('USERNAME', "$user"); // username of the database
define('PASSWORD', "$password"); // password for the database
define('DATABASE', "$nom_base_donnees"); // name of the database

mysql_connect(HOSTNAME, USERNAME, PASSWORD)or die("Impossible de se connecter (mauvais host , mauvais pass , mauvais user)");

mysql_select_db(DATABASE)or die("Impossible de se connecter (mauvais nom de BD)");

?>

Eléphanteau du PHP | 21 Messages

18 nov. 2013, 15:43

Si tu fais un var_dump de tes variables tu verra bien ...
Blog d'aide pour développeur web: http://www.yetaland.com

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

18 nov. 2013, 16:41

les " autour des variables sont totalement inutile et "cpuphage" une varaable s'utilise simplement
<?php
include('../include/connexbdd.php');
// histoire de voir ce que les variables ont comme contenu
var_dump($hostname, $user, $password,$nom_base_donnees);
define('PULSE_DIR', 'Pulse_quest'); // absolute path of the dir where Pulse is; WITHOUT trailing slash

mysql_connect($hostname, $user, $password)or die("Impossible de se connecter (mauvais host , mauvais pass , mauvais user)");

mysql_select_db($nom_base_donnees)or die("Impossible de se connecter (mauvais nom de BD)");
connais tu le niveau de rapport d'erreur ?
pour le dev il doit être à E_ALL impérativement sinon tu perds énormément d'information qui peuvent être utile.

@+
Il en faut peu pour être heureux ......

Eléphant du PHP | 113 Messages

18 nov. 2013, 21:57


connais tu le niveau de rapport d'erreur ?
pour le dev il doit être à E_ALL impérativement sinon tu perds énormément d'information qui peuvent être utile.

@+
J'suis largué là.
Parce qu'on vit dans un monde de CONs, il faut bien ça: http://www.espacedecon.fr/

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

18 nov. 2013, 22:30

creer un fichier avec dedans
<?php
phpinfo();
et cherche dedans le paramètre : error_reporting;)


@+
Il en faut peu pour être heureux ......

Eléphant du PHP | 113 Messages

19 nov. 2013, 08:40

C'est l'include qui marche pas. En la remplaçant pas les variables du fichier connexbdd.php, ça fonctionne.

C'est ce qui m'interpeler dès le départ.
include("../include/connexbdd.php"); Pourquoi ça marche pas puisque ça renvoie à la racine du site, donc avec le fichier facile à trouver ?
<?php
$hostname = "**************";
$user     = "*************";
$password = "***************";
$nom_base_donnees = "*************";

define('PULSE_DIR', 'Pulse_quest'); // absolute path of the dir where Pulse is; WITHOUT trailing slash

/** DATABASE CONNECTION CONFIGURATION **/
define('HOSTNAME', $hostname); // hostname of your database; it is localhost in most cases
define('USERNAME', $user); // username of the database
define('PASSWORD', $password); // password for the database
define('DATABASE', $nom_base_donnees); // name of the database

mysql_connect(HOSTNAME, USERNAME, PASSWORD)or die("Impossible de se connecter (mauvais host , mauvais pass , mauvais user)");

mysql_select_db(DATABASE)or die("Impossible de se connecter (mauvais nom de BD)");

?>
Parce qu'on vit dans un monde de CONs, il faut bien ça: http://www.espacedecon.fr/

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

19 nov. 2013, 08:50

pour ce qui est de l'inclusion du fichier il faut voir dans qu'elle fichier tu te trouve et si ton fichier "incluant" est déjà dans un autre fichier (cas de pseudo frame par exemple).
si c'est le cas c'est l'emplacement du 1er fichier qui compte et pas celui qui inclus ;)
Il te faut savoir dans quel cas tu es et quel est le chemin a utiliser.
Si tu n'as pas d'erreur sur l'inclusion du fichier c'est que ton niveau de rapport d'erreur n'est pas a e_all.

Sur ton pc tu peux le modifier simplement dans le php.ini ensuite tu redémarre le serveur.

Autrement soit avec un.htaccess soit directement dans le code avec un ini_set.
Cela devrais t'afficher un beau message t'indiquant que le fichier n'est pas trouvé et sur tout l'emplacent globale du fichier.

Le jeux des multiple inclusion de fichier est assez pénible et peux faire tourner chèvre si l'on a pas les bonnes informations pour suivre la chose ;)

@+
Il en faut peu pour être heureux ......