Erreur dans mon code php
Résolu
F2C
Messages postés
51
Date d'inscription
Statut
Membre
Dernière intervention
-
F2C Messages postés 51 Date d'inscription Statut Membre Dernière intervention -
F2C Messages postés 51 Date d'inscription Statut Membre Dernière intervention -
12 réponses
-
mon code si c'est pas visible:
<html lang="fr">
<head>
<meta charset="UTF-8"/>
<title>DDO</title>
<link rel="stylesheet" href="ddo.css" />
</head>
<body>
<header>
<h1>Liste des DDO Client</h1>
</header>
<content>
<?php
try
{
$bdd = new PDO('mysql:host=localhost;dbname=sap_cristal_bdd', 'root', '');
}
catch (Exception $e)
{
die('Erreur : ' . $e->getMessage());
}
?>
<table>
<tr class = "nc">
<td>MATRICULE</td>
<td>NOM</td>
<td>AFFECTATION</td>
<td>CATEGORIE</td>
<td>SORTI</td>
</tr>
<?php
$reponse = $bdd->query('SELECT Matricule, UPPER (Nom), LOWER(Prénom), Affectation, Catégorie, Sorti FROM matricules ORDER BY Nom ASC');
while ($donnees = $reponse->fetch())
{
?>
<tr>
<td> <?php echo $donnees['NOM'];?> </td>
<td> <?php echo $donnees['Nom']. ' ' .$donnees['Prénom'];?> </td>
<td> <?php echo $donnees['Affectation'];?> </td>
<td> <?php echo $donnees['Catégorie'];?> </td>
<td> <?php echo $donnees['Sorti'];?> </td>
</tr>
<?php
}
$reponse->closeCursor();
?>
</table>
</content>
<form class="ddo-form">
<li>
<a href="#" onClick="window.open('matricules_ajout.php','_blank','toolbar=0, location=0, directories=0, status=0, scrollbars=1, resizable=1, copyhistory=0, menuBar=0, width=500, height=500, left=500, top=500');return(false)">
AJOUTER MATRICULE
</a>
</li>
<li>
<a href="#" onClick="window.open('matricules_supp.php','_blank','toolbar=0, location=0, directories=0, status=0, scrollbars=1, resizable=1, copyhistory=0, menuBar=0, width=500, height=500, left=500, top=500');return(false)">
SUPPRIMER MATRICULE
</a>
</li>
<li>
<a href="#" onClick="window.open('matricules_modif.php','_blank','toolbar=0, location=0, directories=0, status=0, scrollbars=1, resizable=1, copyhistory=0, menuBar=0, width=500, height=500, left=500, top=500');return(false)">
MODIFIER MATRICULE
</a>
</li>
<li>
<a href="#" onClick="window.open('matricules_rech.php','_blank','toolbar=0, location=0, directories=0, status=0, scrollbars=1, resizable=1, copyhistory=0, menuBar=0, width=500, height=500, left=500, top=500');return(false)">
RECHERCHE
</a>
</li
</form>
</body>
</html> -
bonjour,
"PDO::query() retourne un objet PDOStatement, ou FALSE si une erreur survient."
Donc par sécurité faire :
if ($reponse == false){ // TRAITEMENT ERREUR } else { // LECTURE RESULTATS while ($donnees = $reponse->fetch()){ } }
L'erreur doit venir de la requête sql -
Désolée de vous avoir embêté je croyais avoir supprimer cette question;
en fait j'ai trouvé mon erreur elle venait du fait que comme une conne j'ai mit des accents dans le nom des mes tables et de mes champs dans ma base de données.
Par contre j'ai une autre question toujours par rapport à une requête qui ne fonctionne pas en fait c'est ça:
<?php
$reponse = $bdd->query('SELECT Matricule, Nom, Prenom, Affectation, Categorie, Sorti FROM matricules ORDER BY Nom ASC');
while ($donnees = $reponse->fetch())
{
?>
<tr>
<td> <?php echo $donnees['Matricule'];?> </td>
<td> <?php echo $donnees['Nom']; ?> </td>
<td> <?php echo $donnees['Prenom'];?> </td>
<td> <?php echo $donnees['Affectation'];?> </td>
<?php
$tmp = $donnees['Categorie'];
$reponse2 = $bdd->query('SELECT Categorie FROM categorie WHERE Code_Categ = $tmp');/*Je ne comprends pas pourquoi est ce que ??a ne fonctionne pas*/
if ($reponse2 == false)
{
// TRAITEMENT ERREUR
}
else
{
// LECTURE RESULTATS
//print_r($reponse->fetchAll());
while ($donnees2 = $reponse2->fetch())
{
?>
<td> <?php echo $reponse2;?> </td>
<?php
}
}
?>
j'ai roujouté du code et j'ai essayé votre solution mais:
-je ne sais pas comment traiter l'erreur;
-ma requête fonctionne bien dans phpmyadmin
-comment je fais? :( -
Pour l'erreur, affiche simplement qu'il y a un problème, le but étant de stopper le code.
Ta requête :$reponse2 = $bdd->query('SELECT Categorie FROM categorie WHERE Code_Categ = $tmp');Pose problème, il me semble que les variables PHP ne sont exécuté qu'entre guillemet et non apostrophe.
Tu envoi donc une chaîne de caractère ($tmp) et non sa valeur, ce qui cause une erreur. -
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
Desolée de ne répondre que maintenant, quand je mets "$tmp" j'ai une autre erreur qui est:
Catchable fatal error: Object of class PDOStatement could not be converted to string -
C'est que $tmp est un objet, que tu ne peut donc pas afficher comme cela :)
-
-
Désolé, j'ai répondu trop vite.
Le problème ce situe au niveau de ton Fetch, tu boucle dans la variable $donnees2 mais tu fais des echo sur $reponse2. -
bonjour,
je pense que tu peux faire qu'une seule requête SQL.
ça t'économise une variable temporaire ($tmp) et une requête vers ta BDD
SELECT M.Matricule, M.Nom, M.Prenom, M.Affectation, M.Categorie, M.Sorti FROM matricules AS M, categories AS C WHERE C.Code_Categ = M.Categorie ORDER BY M.Nom ASC
sous réserve que ça fonctionne car pas test et longtemps que j'ai pas pratiqué le sql
Qui ne tente rien n'a rien -
Si le champ Code_Categ est de type integer mettez:
$reponse2 = $bdd->query("SELECT Categorie FROM categorie WHERE Code_Categ = $tmp");
S'il est de type varchar mettez:
$reponse2 = $bdd->query("SELECT Categorie FROM categorie WHERE Code_Categ = '$tmp' "); -
Je vous remercie ça fonctionne maintenant.
-
ça donne ça:
<?php
$reponse = $bdd->query('SELECT Matricule, Nom, Prenom, Affectation, Categorie, Sorti FROM matricules ORDER BY Nom ASC');
while ($donnees = $reponse->fetch())
{
?>
<tr>
<td> <?php echo $donnees['Matricule'];?> </td>
<td> <?php echo $donnees['Nom']; ?> </td>
<td> <?php echo $donnees['Prenom'];?> </td>
<td> <?php echo $donnees['Affectation'];?> </td>
<?php
$tmp = $donnees['Categorie'];
$reponse2 = $bdd->query("SELECT Categorie FROM categorie WHERE Code_Categ = $tmp");
if ($reponse2 == false)
{
// TRAITEMENT ERREUR
}
else
{
// LECTURE RESULTATS
//print_r($reponse->fetchAll());
while ($donnees2 = $reponse2->fetch())
{
?>
<td> <?php echo $donnees2['Categorie'];?> </td>
<?php
}
}
?>
