Rectifications avec PDO

Fermé
abdoulayecoumba - 19 oct. 2015 à 01:36
DelNC Messages postés 2234 Date d'inscription samedi 25 octobre 2014 Statut Membre Dernière intervention 22 février 2020 - 19 oct. 2015 à 22:21
Bonsoir finalement je suis allé me replonger dans les cours disponibles sur le net traitant PDO notamment de la connexion aux bases de données de la gestion des erreurs avec je rappelle j'ai créé une base de données dénommée ''amateurs'' et qui contient une table dénommée ''agents'' ayant 3 colonnes suivantes : ''prenom'' ''nom'' ''adresse'' (il s'agit des noms de chaque colonne tels que je les ai écrits dans la base avec l'interface mysql de wamp ) et que j'ai rempli via un formulaire jusque là tout marche bien la table reçoit correctement touts les enregistrements que j'y envois.
Mais c'est quand je veux afficher les données de la table que j'ai des problèmes.
J'ai essayé d'utiliser le try/catch pour la connexion avec la base de données je pense l'avoir réussi car si j'exécute le code jusqu'à la ligne 13 le navigateur m'affiche une page blanche donc je cocois tel que j'ai rédigé le code qu'il n'y a pas d'erreur de connexion.
Je voudrais que quelqu'un me donne son avis sur le reste du code car le navigateur m'affiche les erreurs suivantes :
Notice: Undefined index: prenom in C:\wamp\www\Nouveau dossier (2)\Site2\pour_essayer.php on line 27

Notice: Undefined index: nom in C:\wamp\www\Nouveau dossier (2)\Site2\pour_essayer.php on line 27

Notice: Undefined index: adresse in C:\wamp\www\Nouveau dossier (2)\Site2\pour_essayer.php on line

Je rappelle que la ligne 27 est celle qui correspond à l'avant derniere ligne du code ci dessous :

echo $donnee['prenom'].':'.$donnee['nom'].':'.$donnee['adresse'].'<br/>';

voici le code :


<html>

<?php
//tentative de connexion à la base de données
try
{
$conect = new PDO('mysql:host=localhost;dbname=amateurs','root','');
}
catch (PDOException $e)
{
echo "Problème de connexion avec la base de donnée / Database error<br/>".$e->getMessage();
die();
}

try
{
$retour = $conect->query('SELECT * FROM agents');
$donnee = $retour->fetchAll();
}
catch (PDOException $e)
{
echo "Problème pour lire la base <br/>Opération annulée";
die();
}


echo $donnee['prenom'].':'.$donnee['nom'].':'.$donnee['adresse'].'<br/>';

$base = null;

?>


</html>

1 réponse

DelNC Messages postés 2234 Date d'inscription samedi 25 octobre 2014 Statut Membre Dernière intervention 22 février 2020 2 002
19 oct. 2015 à 11:13
Bonjour,

pour la connexion avec PDO il faut comme ceci

Les variables à donner
$BDD_ADRESSE  = "mysql:host=127.0.0.1";
$BDD_DBNAME = "maBase";
$BDD_LOGIN = "root";
$BDD_PASSWORD = "";


// connexion à la base de données
try {
$bdd = new PDO("$BDD_ADRESSE;dbname=$BDD_DBNAME", $BDD_LOGIN, $BDD_PASSWORD);
} catch(Exception $e) {
exit('Impossible de se connecter à la base de données.');
}

// exécution de la requête
$resultat = $bdd->query($requete) or die(print_r($bdd->errorInfo()));


Par rapport au message d'erreur que vous avez, je pense que le problème vient du formulaire ou de la manière dont vous avez récupérer le nom et le prénom.

Code pour récupérer les données
if(isset($_REQUEST["nom"   	])) {$nom = $_REQUEST["nom"   ];}
else{$nom = "";}
0
abdoulayecoumba
19 oct. 2015 à 13:55
finalement j'ai rectifié l'erreur je pense mais le navigateur ne m'affiche que le premier enregistrement de ma table alors que moi je veux afficher toutes ses lignes
on dirait qu'il me manque une boucle qui me permet de lire et d'afficher toutes les enregistrements de la table
voici le code rectifié:
[code]
<html>

<?php
//tentative de connexion à la base de données
try
{
$conect = new PDO('mysql:host=localhost;dbname=amateurs','root','');
}
catch (PDOException $e)
{
echo "Problème de connexion avec la base de donnée / Database error<br/>".$e->getMessage();
die();
}

try
{
$retour = $conect->query('SELECT * FROM agents');
$donnee = $retour->fetch();
}
catch (PDOException $e)
{
echo "Problème pour lire la base <br/>Opération annulée";
die();
}


echo $donnee['prenom'].':'.$donnee['nom'].':'.$donnee['adresse'].'<br/>';


$base = null;

?>


</html>
/code
0
DelNC Messages postés 2234 Date d'inscription samedi 25 octobre 2014 Statut Membre Dernière intervention 22 février 2020 2 002 > abdoulayecoumba
19 oct. 2015 à 22:21
Bonjour,

Je vous donne un exemple avec une requête sql et l'affichage de tout le résultat
$query      = "SELECT   nom, prenom, agent ";
$query .= "FROM agents ";
$query .= ";";
$result = execute_query($query);
display_table_agents($result);



function display_table_agents($result) {
echo "<table border=1>\n";
//HEADER ROW
echo "<tr>\n";
echo " <th width=150> Nom </th>\n";
echo " <th width=150> Prenom </th>\n";
echo " <th width=150> Adresse </th>\n";;
echo "</tr>\n";
//DATA ROWS
while($row = mysql_fetch_array($result)) {
echo "<tr>\n";
echo " <td class=\"center\">" . $row[0] . "</td>\n";
echo " <td class=\"center\">" . $row[1] . "</td>\n";
echo " <td class=\"center\">" . $row[2] . "</td>\n";

echo "</tr>\n";
}//end while
echo "</table>\n";
}//end function
0