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 :

Pas de connexion bdd [PDO]


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti Avatar de Yvon73
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2014
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Savoie (Rhône Alpes)

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

    Informations forums :
    Inscription : Juillet 2014
    Messages : 31
    Par défaut Pas de connexion bdd
    Bonjour et bonne année à tous,

    J'ai un souci de connexion à ma bdd. J'ai créé un fichier inc_connexion.php sensé établir la connexion avec ma bdd et mon fichier index.php sauf que celui-ci ne le fait pas et me retourne un gentil message d'erreur.
    Quand je test la requête seul dans l'utilitaire SQL, ça fonctionne sans problèmes.
    Si je mets la même requête dans la variable query, plus rien fonctionne. Si je supprime la fin de ligne à partir du INNER JOIN, la ça fonctionne.
    Voici le message d'erreur ;
    Fatal error: Uncaught PDOException: SQLSTATE[3D000]: Invalid catalog name: 1046 No database selected in D:\xampp\htdocs\Departements\admin\index.php:34 Stack trace: #0 D:\xampp\htdocs\Departements\admin\index.php(34): PDO->query('SELECT villes_p...') #1 {main} thrown in D:\xampp\htdocs\Departements\admin\index.php on line 34

    Voici les deux fichiers;

    inc_connexion.php
    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
     
    <?php
        class Database
        {
            /**
             * Déclarations variables connexion à la base de données
             */
     
            private static $dbHost = "localhost";
            private static $dbName = "db_france";
            private static $dbUsername = "root";
            private static $dbUserPassword = "";
     
            private static $connection = NULL;
     
            public static function connect() {
                if (self::$connection == NULL) {
                    try {
                        self::$connection = new PDO("mysql:host=" . self::$dbHost . "; dbName =" . self::$dbName, self::$dbUsername, self::$dbUserPassword);
                        self::$connection -> setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
                    }
                    catch (PDOException $e) {
                        die($e -> getMessage());
                    }
                }
         return self::$connection;
            }
     
            public static function disconnect() {
         self::$connection = NULL;
            }
        }
    et index.php
    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
     
    <!doctype html>
    <html lang = "fr">
        <head>
            <meta charset = "UTF-8">
            <meta name = "viewport" content = "width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
            <meta http-equiv = "X-UA-Compatible" content = "ie=edge">
            <link rel="stylesheet" type="text/css" href="../css/styles.css">
            <title>Administration</title>
        </head>
        <body>
        <main id="container">
            <header id="head">
                <h1 id="titre">Départements et régions de France</h1>
            </header>
            <section id="tableau">
                <table>
                    <caption>Liste des villes et régions</caption>
                    <thead>
                    <tr>
                        <th>Ville</th>
                        <th>Numéro</th>
                        <th>Départements</th>
                        <th>Régions</th>
                        <th>Actions</th>
                    </tr>
                    </thead>
                    <tbody>
                    <?php
                        require_once 'inc_connexion.php';
                        $db = Database::connect();
                        $statement = $db->query('SELECT villes_prefecture.nom_ville, villes_prefecture.texte_ville, villes_prefecture.sp_dept, regions.nom_region FROM villes_prefecture INNER JOIN regions ON
    regions.id = villes_prefecture.region');
                        while ($item = $statement->fetch()) {
                            echo '<tr>';
                            echo '<td width="200">' . $item['nom_ville'] . '</td>';
                            echo '<td width="28">' . $item['numero'] . '</td>';
                            echo '<td width="200">' . $item['nom_ville'] . '</td>';
                            echo '<td width="300">' . $item['nom_region'] . '</td>';
                            echo '<td width="350">';
                            echo '<a class="bouton" href="view.php?id=' . $item['dept_id'] . '"> Voir</a>';
                            echo '<a class="bouton" href="update.php?id=' . $item['dept_id'] . '"> Modifier</a>';
                            echo '<a class="bouton" href="delete.php?id=' . $item['dept_id'] . '"> Supprimer</a>';
                            echo '</td>';
                            echo '</tr>';
                        }
                        Database::disconnect();
                    ?>
     
                    </tbody>
                </table>
            </section>
        </main>
        </body>
    </html>
    Si quelqu'un peut m'expliquer mon erreur, je l'en remercie d'avance.

  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
    Par défaut
    Tu as des espaces qui trainent :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    self::$connection = new PDO("mysql:host=" . self::$dbHost . ";dbname=" . self::$dbName, self::$dbUsername, self::$dbUserPassword);
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre averti Avatar de Yvon73
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2014
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Savoie (Rhône Alpes)

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

    Informations forums :
    Inscription : Juillet 2014
    Messages : 31
    Par défaut
    Bonjour Sabotage,

    Merci pour t'a réponse, mais même en supprimant les espaces, je n'est rien.

    J'ai pourtant vérifié plusieurs fois le code, pour voir si il n'y a pas d'erreur d'écriture, tout est correct, je comprends pas.

  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
    Par défaut
    Tu as toujours exactement la même erreur ?
    Tu peux nous montrer le nouveau code ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Membre averti Avatar de Yvon73
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2014
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Savoie (Rhône Alpes)

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

    Informations forums :
    Inscription : Juillet 2014
    Messages : 31
    Par défaut
    Le message d'erreur est

    Fatal error: Uncaught Error: Call to a member function query() on null in D:\xampp\htdocs\Europe\admin\index.php:30 Stack trace: #0 {main} thrown in D:\xampp\htdocs\Europe\admin\index.php on line 30

    Pour le code, pas de soucis il y a rien de secret

    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
     
    <?php
     
    	/**
    	 * Déclarations variables connexion à la base de données
    	 */
     
    	class Database {
     
    		private static $dbHost = "localhost:8095";
    		private static $dbName = "bdeurope";
    		private static $dbUsername = "root";
    		private static $dbUserpassword = "";
    		private static $connection = NULL;
     
    		public static function connect() {
     
    			if (self::$connection = NULL) {
     
    				try {
    					self::$connection = new PDO("mysql:host=" . self::$dbHost . ";dbName=" . self::$dbName , self::$dbUsername, self::$dbUserpassword);
    				}
    				catch (PDOException $e) {
    					die($e->getMessage());
    				}
    			}
    	  		return self::$connection;
    		}
     
    		public static function disconnect() {
    	  		self::$connection = NULL;
    		}
      	}
    et

    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
     
    <!doctype html>
    <html lang = "fr">
    <head>
    	<meta charset = "UTF-8">
    	<meta name = "viewport" content = "width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
    	<meta http-equiv = "X-UA-Compatible" content = "ie=edge">
    	<link rel="stylesheet" type="text/css" href="../css/styles.css">
    	<title>Administration</title>
    </head>
    <body>
    <main id="container">
    	<header id="head">
    		<h1 id="titre"><strong>Liste des items  </strong><a class="boutton" href="insert.php">Ajouter</a></h1>
    	</header>
    	<section id="tableau">
    		<table>
    			<thead>
    			<tr>
    				<th>Villes</th>
    				<th>Départments</th>
    				<th>Régions</th>
    				<th>Pays</th>
    				<th>Actions</th>
    			</tr>
    			</thead>
    			<tbody>
    				<?php
    					require 'inc_connexion.php';
    					$db = Database::connect();
    					$statement = $db->query('SELECT * FROM province');
    					while($item = $statement->fetch()) {
    						echo '<tr>';
    						echo '<td>' . $item['prov_cptl'] .'</td>';
    						echo '<td>' . $item['prov_name'] . '</td>';
    						echo '<td>' . $item['region_name'] . '</td>';
    						echo '<td>' . $item['prov_pays'] . '</td>';
    						echo '<td>
    
    							</td>';
    						echo '</tr>';
    					}
     
    					Database::disconnect();
    				?>
    			</tbody>
    		</table>
    	</section>
    </main>
     
     
    </body>
    </html>
    La requête est comme ça pour voir si quelque chose veuille bien s'afficher.

    J'ai tout repris de zéro, pour voir, mais ça change rien

  6. #6
    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
    Par défaut
    Donc tu n'as pas du tout la même erreur qu'au début nous sommes d'accord ou pas ?

    Tu as mis = NULL au lieu de == NULL dans ta condition dans ce nouveau code et il y a un port 8095 qui est apparu.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

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

Discussions similaires

  1. Connexion bdd qui echoue en local et pas en réseau
    Par lorinthal dans le forum Connexion aux bases de données
    Réponses: 4
    Dernier message: 29/03/2015, 12h12
  2. Réponses: 5
    Dernier message: 28/01/2009, 16h17
  3. [tomcat][jsp] Comment gerez vous vos connexions bdd?
    Par olive.m dans le forum Tomcat et TomEE
    Réponses: 4
    Dernier message: 21/06/2004, 17h35
  4. pb de connexion bdd
    Par picoti2 dans le forum Bases de données
    Réponses: 6
    Dernier message: 16/03/2004, 18h53
  5. [BCB6] DBGrid et mode de connexion BDD... demain
    Par Seb des Monts dans le forum C++Builder
    Réponses: 5
    Dernier message: 19/01/2004, 13h56

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