Connexion à la base de données en localhost avec Wampserver
Bonjour,
Je débute en programmation web et je me suis formé avec les livres.
Je suis arrivé à m'en sortir et avoir un résultat sur mon premier site que je créé pour un besoin perso.
J'ai terminé la formation html 5 /css et suis en cours sur le livre concevez votre site web avec PHP et MYSQL.
J'ai préparé le programme ci dessous pour lequel je vais alimenter à partir d'une base de données.
J'ai installé WAMPSERVER dernièrement dont php est la version 5.5.12 et mysql est la version 5.6.17.
J'ai écrit le code ci dessous avec la première formation et je tente d'afficher une information simple depuis une base de données :
Code:
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 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119
| <!doctype html>
<html>
<head>
<meta charset = "utf-8"/>
<link rel="stylesheet" href="stylefond.css"/>
<link rel="stylesheet" href="stylemenu.css"/>
<title>portefeuille charge d affaire raccordement c5 </title>
</head>
<body>
<div id="tout">
<header>
<div id="titrepage">
<h2> MENU PRINCIPAL </h2>
<h1> OUTIL APPUI CHARGE <br> D AFFAIRE RACCORDEMENT C5 </h1>
</div>
<img src="tnlogo.png" class="logo" alt="logo"/>
</header>
<?php
try
{
$bdd = new PDO( 'mysql:host=localhost;dbname=suivracc5','root@localhost','');
}
catch (Exception $e)
{
die('Erreur : '.$e->getMessage());
}
$reponse = $bdd -> query('SELECT * FROM test') or die( print_r($bdd->errorinfo()));
while ($donnees = $reponse->fetch());
{
?>
<p>
le numero d'enregistrement portant le <?php echo $donnees['id']; ?> contient l'information <?php echo $donnees['titre']; ?> <br />
le contenu est <?php echo $donnees['contenu']; ?> <br />
</p>
<?php
}
$reponse -> closeCursor();
?>
<section>
<article>
<table class="tableprincipal">
<caption> LISTE DES FICHIERS <?php echo "nom du fichier pour indiquer la liste"?> </caption>
<tr>
<th> OSR </th>
<th> COMMUNE </th>
<th> NOM CLIENT </th>
</tr>
</table>
</article>
<aside>
<table class="tablemenu">
<caption> ETAT DU PORTEFEUILLE</caption>
<tr>
<th> LISTE </th>
<th> NOMBRE</th>
<tr>
<td> <a href=#> ETUDE EN COURS </a>
<td> nombre de php </a>
</tr>
<tr>
<td> <a href=#> ATTENTE PAIEMENT </a> </td>
<td> nombre de php </a></td>
</tr>
<tr>
<td> <a href=#> COMMANDE TRAVAUX </a></td>
<td> nombre de php </a></td>
</tr>
<tr>
<td> <a href=#> PROGRAMMEE </a></td>
<td> nombre de php </a></td>
</tr>
<tr>
<td> <a href=#> TERMINE AVEC ECART OU SUIVI</a></td>
<td> nombre de php </a></td>
</tr>
<tr>
<td> <a href=#>PAIEMENT SUPERIEUR A 3 MOIS </a></td>
<td> nombre de php </a></td>
</tr>
<tr>
<td> <a href=#> PAIEMENT SUPERIEUR A 6 MOIS </a></td>
<td> nombre de php </a></td>
</tr>
<tr>
<td> <a href=#> REALISEE </a></td>
<td> nombre de php </a></td>
</tr>
<tr>
<td> <a href=#> ABANDON CLIENT </a></td>
<td> nombre de php </a></td>
</tr>
<tr>
<td> <a href=#> ENVOIE EXTENSION </a></td>
<td> nombre de php </a></td>
</tr>
<tr>
<td> <a href=#> ENVOIE COLLECTIF </a></td>
<td> nombre de php </a></td>
</tr>
</TABLE>
<nav>
<ul>
<li> <a href=# >VOIR / MODIFIER LE DOSSIER </A> </li> <br>
<li> <a href=# >CREER UN DOSSIER </A> </li><br>
<li> <a href=# >RECHERCHER UN DOSSIER </A> </li>
</UL>
</nav>
<form>
<input type="text" name="rech" id="rech"/>
<input type="submit" value="RECHERCHER"
</form>
</aside>
</section>
<?php include ("PIEDPAGE.PHP");?>
</div>
</body>
</html> |
J'ai fait quelques recherches et j'ai installé du code pour avoir l'erreur qui se génère.
J'obtient actuellement ce message d'erreur :
Citation:
Erreur : SQLSTATE[HY000] [1045] Acc�s refus� pour l'utilisateur: 'root@localhost'@'@localhost' (mot de passe: NON)
Il s'agit à priori d'un refus d'accès à la base de donnée.
Je n'ai pas de code d'accès en sql car j'ai vérifié.
Les noms de base de données et tables sont correct.
je ne trouve pas l'erreur.
j'ai pas contre trouvé sur internet que les versions 5 de php fonctionné avec mysqli à priori ?
Mais je ne trouve pas comment je dois adapté mon code et je ne trouve pas l'extension php-pdo-mysqli.
Pouvez vous me mettre sur une piste afin que je comprenne mon erreur et adapte mon code ?
Merci pour votre aide.
suite à vos conseils une avancée mais pas encore une réussite
Bonjour tout le monde,
Merci pour vos réactions et votre aide.
J'ai procédé aux modifications proposées par xdelatour que je n'avais pas vu, car j'avais pas de souci actuellement de présentation et de chargement.
La modification proposé par nb qui me propose de changer l'utilisateur était ma solution de départ et j'avoue le changement par "root" permet de ne pas avoir de message d'erreur et voir la page se chargée.
Malheureusement je n'ai aucune information qui remonte de ma base de donnée, les champs sont vides.
J'avais mis le dernier nom indiqué suite à une recherche sur internet.
J'ai adapté ma page avec l'exemple de connection que propose jreaux62.
ci dessous le code adapté :
Code:
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 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138
| !doctype html>
<html>
<head>
<meta charset = "utf-8"/>
<link rel="stylesheet" href="stylefond.css"/>
<link rel="stylesheet" href="stylemenu.css"/>
<title>portefeuille charge d affaire raccordement c5 </title>
</head>
<body>
<div id="tout">
<header>
<div id="titrepage">
<h2> MENU PRINCIPAL </h2>
<h1> OUTIL APPUI CHARGE <br> D AFFAIRE RACCORDEMENT C5 </h1>
</div>
<img src="tnlogo.png" class="logo" alt="logo"/>
</header>
<?php
// --------------------------------------------------------------
// Paramètres de connection à la Base de Données sur le serveur
// --------------------------------------------------------------
$pdo_conn = array();
$pdo_conn['hostname'] = 'localhost'; // voir hébergeur ou "localhost" en local
$pdo_conn['database'] = 'suivracc5'; // nom de la BdD
$pdo_conn['username'] = 'root'; // identifiant "root" en local
$pdo_conn['password'] = ''; // mot de passe (vide en local)
// ------------------------
// connexion à la Base de Données
try {
// chaine de connexion (DSN)
$pdo_conn['strConn'] = 'mysql:host='.$pdo_conn['hostname'].';dbname='.$pdo_conn['database'];
$pdo_conn['extraParam'] = array(
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, // rapport d'erreurs sous forme d'exceptions
PDO::ATTR_PERSISTENT => true, // Connexions persistantes
PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8" // encodage UTF-8
);
// Instancie la connexion
$pdo = new PDO($pdo_conn['strConn'], $pdo_conn['username'], $pdo_conn['password'], $pdo_conn['extraParam']);
}
catch(PDOException $e){
$msg = 'ERREUR PDO dans ' . $e->getFile().' L.' . $e->getLine().' : ' . $e->getMessage();
die($msg);
}
$reponse = $bdd -> query('SELECT * FROM test') or die( print_r($bdd->errorinfo()));
while ($donnees = $reponse->fetch());
{
?>
<p>
le numero d'enregistrement portant le <?php echo $donnees['id']; ?> contient l'information <?php echo $donnees['titre']; ?> <br />
le contenu est <?php echo $donnees['contenu']; ?> <br />
</p>
<?php
}
$reponse -> closeCursor();
?>
<section>
<article>
<table class="tableprincipal">
<caption> LISTE DES FICHIERS <?php echo "nom du fichier pour indiquer la liste"?> </caption>
<tr>
<th> OSR </th>
<th> COMMUNE </th>
<th> NOM CLIENT </th>
</tr>
</table>
</article>
<aside>
<table class="tablemenu">
<caption> ETAT DU PORTEFEUILLE</caption>
<tr>
<th> LISTE </th>
<th> NOMBRE</th>
<tr>
<td> <a href=#> ETUDE EN COURS </a>
<td> nombre de php </td>
</tr>
<tr>
<td> <a href=#> ATTENTE PAIEMENT </a> </td>
<td> nombre de php </td>
</tr>
<tr>
<td> <a href=#> COMMANDE TRAVAUX </a></td>
<td> nombre de php </td>
</tr>
<tr>
<td> <a href=#> PROGRAMMEE </a></td>
<td> nombre de php </td>
</tr>
<tr>
<td> <a href=#> TERMINE AVEC ECART OU SUIVI</a></td>
<td> nombre de php </td>
</tr>
<tr>
<td> <a href=#>PAIEMENT SUPERIEUR A 3 MOIS </a></td>
<td> nombre de php </td>
</tr>
<tr>
<td> <a href=#> PAIEMENT SUPERIEUR A 6 MOIS </a></td>
<td> nombre de php </td>
</tr>
<tr>
<td> <a href=#> REALISEE </a></td>
<td> nombre de php </td>
</tr>
<tr>
<td> <a href=#> ABANDON CLIENT </a></td>
<td> nombre de php </td>
</tr>
<tr>
<td> <a href=#> ENVOIE EXTENSION </a></td>
<td> nombre de php </td>
</tr>
<tr>
<td> <a href=#> ENVOIE COLLECTIF </a></td>
<td> nombre de php </td>
</tr>
</TABLE>
<nav>
<ul>
<li> <a href=# >VOIR / MODIFIER LE DOSSIER </a> </li> <br>
<li> <a href=# >CREER UN DOSSIER </a> </li><br>
<li> <a href=# >RECHERCHER UN DOSSIER </a> </li>
</UL>
</nav>
<form>
<input type="text" name="rech" id="rech"/>
<input type="submit" value="RECHERCHER"/>
</form>
</aside>
</section>
<?php include ("PIEDPAGE.PHP");?>
</div>
</body>
</html> |
Maintenant j'ai ce message d'erreur :
Citation:
( ! ) Notice: Undefined variable: bdd in C:\wamp\www\gestion portefeuille html\menup.php on line 57
Call Stack
# Time Memory Function Location
1 0.0009 143584 {main}( ) ..\menup.php:0
( ! ) Fatal error: Call to a member function query() on a non-object in C:\wamp\www\gestion portefeuille html\menup.php on line 57
Call Stack
# Time Memory Function Location
1 0.0009 143584 {main}( ) ..\menup.php:0
Pour info les lignes 62 à 65 me servent uniquement de test pour tester et apprendre ma première connection à une base de donnée.
Mais apparemment j'ai pas tout compris encore.
Sur cette page proposée, à termes, je compte remplacer les textes
Code:
<td> nombre de php </td>
par une valeur récupérée suite à une requête sql sur la base de donnée.
Je suis allé sur le site de wampserver et je suis en cours de téléchargement de la version 3.1.3 x64.
Je la mettrais en place dès demain voir si cela peut aider.
Je reste à votre écoute sur les modifications de la nouvelle page de code.
Merci,
Pour répondre à Kevin254kl
j'ai modifié mon code avec fetchall et j'ai demandé le contenu avec printr.
Code:
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
| <?php
// --------------------------------------------------------------
// Paramètres de connection à la Base de Données sur le serveur
// --------------------------------------------------------------
$pdo_conn = array();
$pdo_conn['hostname'] = 'localhost'; // voir hébergeur ou "localhost" en local
$pdo_conn['database'] = 'suivracc5'; // nom de la BdD
$pdo_conn['username'] = 'root'; // identifiant "root" en local
$pdo_conn['password'] = ''; // mot de passe (vide en local)
// ------------------------
// connexion à la Base de Données
try {
// chaine de connexion (DSN)
$pdo_conn['strConn'] = 'mysql:host='.$pdo_conn['hostname'].';dbname='.$pdo_conn['database'];
$pdo_conn['extraParam'] = array(
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, // rapport d'erreurs sous forme d'exceptions
PDO::ATTR_PERSISTENT => true, // Connexions persistantes
PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8" // encodage UTF-8
);
// Instancie la connexion
$pdo = new PDO($pdo_conn['strConn'], $pdo_conn['username'], $pdo_conn['password'], $pdo_conn['extraParam']);
}
catch(PDOException $e){
$msg = 'ERREUR PDO dans ' . $e->getFile().' L.' . $e->getLine().' : ' . $e->getMessage();
die($msg);
}
$pdo_conn = array(); // on vide
$reponse = $pdo -> query('SELECT * FROM test') or die( print_r($pdo->errorinfo()));
while ($donnees = $reponse->fetchall())
{
?>
<p>
le numero d'enregistrement portant le <?php echo $donnees['id']; ?> contient l'information <?php echo $donnees['titre']; ?> <br />
le contenu est <?php echo $donnees['contenu']; ?> <br />
</p>
<?php
}
$reponse -> closeCursor();
?> |
J'ai bien la variable qui se charge, par contre fetchall génère cette erreur :
Citation:
le numero d'enregistrement portant le
( ! ) Notice: Undefined index: id in C:\wamp\www\gestion portefeuille html\menup.php on line 54
Call Stack
# Time Memory Function Location
1 0.0010 143800 {main}( ) ..\menup.php:0
contient l'information
( ! ) Notice: Undefined index: titre in C:\wamp\www\gestion portefeuille html\menup.php on line 54
Call Stack
# Time Memory Function Location
1 0.0010 143800 {main}( ) ..\menup.php:0
le contenu est
( ! ) Notice: Undefined index: contenu in C:\wamp\www\gestion portefeuille html\menup.php on line 55
Call Stack
# Time Memory Function Location
1 0.0010 143800 {main}( ) ..\menup.php:0
LISTE DES FICHIERS nom du fichier pour indiquer la liste OSR
Par contre j'ai pas bien compris ta demande concernant l'execution de la requête.
J'ai tenté de modifier ma ligne sans résultat mais je n'ai eu que des erreurs.
Code:
$reponse = $pdo -> query('SELECT * FROM test') or die( print_r($pdo->errorinfo()));
.
La modification qu'a proposé jreaux62 a toutefois permis de faire apparaître les données donc je vais retenir pour le moment sa solution mais je reste à ton écoute pour apprendre un peu plus.
merci