Lien avec id - PHP
Fermé
hogz
Messages postés
9
Date d'inscription
mercredi 29 mai 2013
Statut
Membre
Dernière intervention
4 juillet 2013
-
29 mai 2013 à 14:09
hogz - 3 juin 2013 à 08:38
hogz - 3 juin 2013 à 08:38
A voir également:
- Lien avec id - PHP
- Lien url - Guide
- Créer un lien pour partager des photos - Guide
- Verifier un lien - Guide
- Sommaire word avec lien - Guide
- Aucune application permettant d'ouvrir ce lien n'a été trouvée - Forum Mobile
10 réponses
Salut,
Le message d'erreur t'indique que la variable $response n'est pas un objet et que tu ne peux donc pas appeler la fonction fetch.
En effet la fonction PDO query retourne soit un objet PDOStatement, soit FALSE si une erreur est survenue pendant l'exécution de ta requête, ce qui semble être le cas pour ton code.
Il faut donc que tu vérifies si la variable $response est différent de FALSE avant d'appeler la fonction fetch, et que tu corriges ta requête sql qui est vraisemblablement fausse.
Bonne journée
Le message d'erreur t'indique que la variable $response n'est pas un objet et que tu ne peux donc pas appeler la fonction fetch.
En effet la fonction PDO query retourne soit un objet PDOStatement, soit FALSE si une erreur est survenue pendant l'exécution de ta requête, ce qui semble être le cas pour ton code.
Il faut donc que tu vérifies si la variable $response est différent de FALSE avant d'appeler la fonction fetch, et que tu corriges ta requête sql qui est vraisemblablement fausse.
Bonne journée
Utilisateur anonyme
Modifié par kyser soze le 29/05/2013 à 15:02
Modifié par kyser soze le 29/05/2013 à 15:02
Salut salut,
Je suis d'accord avec Pitet c'est ce genre de ligne qui va poser problème :
$reponse = $bdd->query('SELECT * FROM 'base' WHERE SECTION=\'*******\'ORDER BY 'NOM'');
Je pense qu'il y a une erreur au niveau des guillemets simple, ta chaine est coupée essaie comme ça:
$reponse = $bdd->query("SELECT * FROM 'base' WHERE SECTION=\'*******\'ORDER BY 'NOM'");
-> guillemet double autour de la chaine contenu dans query
Résolu? ===> [RESOLU]
Je suis d'accord avec Pitet c'est ce genre de ligne qui va poser problème :
$reponse = $bdd->query('SELECT * FROM 'base' WHERE SECTION=\'*******\'ORDER BY 'NOM'');
Je pense qu'il y a une erreur au niveau des guillemets simple, ta chaine est coupée essaie comme ça:
$reponse = $bdd->query("SELECT * FROM 'base' WHERE SECTION=\'*******\'ORDER BY 'NOM'");
-> guillemet double autour de la chaine contenu dans query
Résolu? ===> [RESOLU]
hogz
Messages postés
9
Date d'inscription
mercredi 29 mai 2013
Statut
Membre
Dernière intervention
4 juillet 2013
Modifié par hogz le 29/05/2013 à 15:34
Modifié par hogz le 29/05/2013 à 15:34
Merci pour vos réponses, si je suis votre réponse et met un " ou double sur ma page liste.php, j'ai une erreur :
Parse error: syntax error, unexpected '"' in /htdocs/public/...../......php on line 339
Alors que, je n'ai pas d'erreur initialement sur celle-ci. (liste.php)
J'ai une erreur sur la seconde page fiche.php (mais le tableau apparait, c'est déjà ça..)
Fatal error: Call to a member function fetch() on a non-object in /htdocs/public/tuc/fiche.php on line 334
Et si je met des "" sur page fiche.php - message:
Parse error: syntax error, unexpected ''', expecting T_STRING or T_VARIABLE or T_NUM_STRING in /htdocs/public/tuc/fiche.php on line 330
Parse error: syntax error, unexpected '"' in /htdocs/public/...../......php on line 339
Alors que, je n'ai pas d'erreur initialement sur celle-ci. (liste.php)
J'ai une erreur sur la seconde page fiche.php (mais le tableau apparait, c'est déjà ça..)
Fatal error: Call to a member function fetch() on a non-object in /htdocs/public/tuc/fiche.php on line 334
Et si je met des "" sur page fiche.php - message:
Parse error: syntax error, unexpected ''', expecting T_STRING or T_VARIABLE or T_NUM_STRING in /htdocs/public/tuc/fiche.php on line 330
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
hogz
Messages postés
9
Date d'inscription
mercredi 29 mai 2013
Statut
Membre
Dernière intervention
4 juillet 2013
Modifié par hogz le 29/05/2013 à 15:43
Modifié par hogz le 29/05/2013 à 15:43
Page liste.php
$reponse = $bdd->query('SELECT * FROM 'base' WHERE SECTION=\'*******\'ORDER BY 'NOM')';
Page fiche.php
$reponse = $bdd->query('SELECT * FROM 'base' WHERE id=$_GET['id']');
Voila
$reponse = $bdd->query('SELECT * FROM 'base' WHERE SECTION=\'*******\'ORDER BY 'NOM')';
Page fiche.php
$reponse = $bdd->query('SELECT * FROM 'base' WHERE id=$_GET['id']');
Voila
hogz
Messages postés
9
Date d'inscription
mercredi 29 mai 2013
Statut
Membre
Dernière intervention
4 juillet 2013
29 mai 2013 à 15:57
29 mai 2013 à 15:57
Il n'y a pas d'erreur, mais en cliquant sur le lien id pour aller sur la page fiche.php
Sur la page fiche.php - Le tableau apparait avec au dessus
Fatal error: Call to a member function fetch() on a non-object in /htdocs/public/tuc/fiche.php on line 334
Sur la page fiche.php - Le tableau apparait avec au dessus
Fatal error: Call to a member function fetch() on a non-object in /htdocs/public/tuc/fiche.php on line 334
hogz
Messages postés
9
Date d'inscription
mercredi 29 mai 2013
Statut
Membre
Dernière intervention
4 juillet 2013
29 mai 2013 à 16:25
29 mai 2013 à 16:25
j'ai simplifié
$reponse = $bdd->query("SELECT * FROM base WHERE id=$_GET[id]");
Toujours même problème sur page fiche.php
Fatal error: Call to a member function fetch() on a non-object in /htdocs/public/tuc/fiche.php on line 334
$reponse = $bdd->query("SELECT * FROM base WHERE id=$_GET[id]");
Toujours même problème sur page fiche.php
Fatal error: Call to a member function fetch() on a non-object in /htdocs/public/tuc/fiche.php on line 334
Ton erreur vient de ta requête sql.
Modifie ton code comme ceci :
Tu verras ainsi l'erreur sql si une erreur survient lors de l'exécution de la requête.
Petite remarque : ta requête construite comme ci-dessus n'est pas sécurisée et tu pourrais être victime d'une injection sql.
Pour bien faire il faut protéger toutes les entrées (ici $_GET['id']) comme ceci :
Modifie ton code comme ceci :
$requete = 'SELECT * FROM base WHERE id=' . $_GET['id']; $reponse = $bdd->query($requete); if ($reponse === false) { echo 'Erreur sur la requête ' . $requete; echo '<br />'; var_dump($bdd->errorInfo()); } else { while ($donnees = $reponse->fetch()) { [...] } }
Tu verras ainsi l'erreur sql si une erreur survient lors de l'exécution de la requête.
Petite remarque : ta requête construite comme ci-dessus n'est pas sécurisée et tu pourrais être victime d'une injection sql.
Pour bien faire il faut protéger toutes les entrées (ici $_GET['id']) comme ceci :
$requete = 'SELECT * FROM base WHERE id=' . $bdd->quote($_GET['id']);
hogz
Messages postés
9
Date d'inscription
mercredi 29 mai 2013
Statut
Membre
Dernière intervention
4 juillet 2013
Modifié par hogz le 29/05/2013 à 17:52
Modifié par hogz le 29/05/2013 à 17:52
Ok ça avance...
j'ai enlevé
[...]
}
qui posaient problème (affichage:Parse error: syntax error, unexpected '[' in /htdocs/public/tuc/fiche.php on line 339)
Donc maintenant pas d'erreur dans la page fiche.php
On voit bien une seule ligne de tableau, mais les champs de sont pas remplis par les echo...
Donc, ce qui veut dire, que id n'est pas récupéré (certainement?)
j'ai enlevé
[...]
}
qui posaient problème (affichage:Parse error: syntax error, unexpected '[' in /htdocs/public/tuc/fiche.php on line 339)
Donc maintenant pas d'erreur dans la page fiche.php
On voit bien une seule ligne de tableau, mais les champs de sont pas remplis par les echo...
Donc, ce qui veut dire, que id n'est pas récupéré (certainement?)
Je reprends le sujet après avoir essayé de me dépatouiller afin de comprendre donc d'apprendre...
Donc ma ligne de première page liste.php pour l'id
<th scope width="30" class="Style500"><a href="fiche.php?id=<?php echo ($donnees['id']); ?></a></span></th>
Quand je clique sur le lien: affichage de ma page fiche.php
http://monsite.fr/fiche.php?id=11
Donc, si j'ai bien compris j'ai bien récupérer le bon id...de ma page liste.php
Sur ma page fiche.php le bon ( id ) s'affiche dans mon tableau sans que pour cela le reste suive...
Donc là, je cale...car je vois pas d'où peut provenir l'erreur...le GET est appelé et s'affiche... pour le reste se sont des echo de la base de données.
Encore merci de m'aider, surtout à comprendre...
REQUETE
$requete = 'SELECT * FROM base WHERE id=' $bdd->quote( $_GET['id']);
$reponse = $bdd->query($requete);
if ($reponse === false) {
echo 'Erreur sur la requête ' . $requete;
echo '<br />';
var_dump($bdd->errorInfo());
} else {
while ($donnees = $reponse->fetch()) {
}
?>
<table width="580" border="0">
<th scope width="30" class="Style500"><?php echo ($_GET['id']); ?></span></th>
<th scope width="80" class="Style500"><?php echo date ("d/m/Y",strtotime($donnees['DATE'])); ?></span></th>
<th scope width="150" class="Style500"><?php echo htmlentities ($donnees['NOM']); ?></span></th>
<th scope width="150" class="Style500"><?php echo htmlentities ($donnees['PRENOM']); ?></span></th>
<th scope width="90" class="Style500"><?php echo htmlentities ($donnees['SECTION']); ?></span></th>
<th scope width="80" class="Style500"><?php echo date ("d/m/Y",strtotime($donnees['DATENAISSANCE'])); ?></span></th>
</tr>
</table>
<?php
}
$reponse->closeCursor(); // Termine le traitement de la requête
?>
Donc ma ligne de première page liste.php pour l'id
<th scope width="30" class="Style500"><a href="fiche.php?id=<?php echo ($donnees['id']); ?></a></span></th>
Quand je clique sur le lien: affichage de ma page fiche.php
http://monsite.fr/fiche.php?id=11
Donc, si j'ai bien compris j'ai bien récupérer le bon id...de ma page liste.php
Sur ma page fiche.php le bon ( id ) s'affiche dans mon tableau sans que pour cela le reste suive...
Donc là, je cale...car je vois pas d'où peut provenir l'erreur...le GET est appelé et s'affiche... pour le reste se sont des echo de la base de données.
Encore merci de m'aider, surtout à comprendre...
REQUETE
$requete = 'SELECT * FROM base WHERE id=' $bdd->quote( $_GET['id']);
$reponse = $bdd->query($requete);
if ($reponse === false) {
echo 'Erreur sur la requête ' . $requete;
echo '<br />';
var_dump($bdd->errorInfo());
} else {
while ($donnees = $reponse->fetch()) {
}
?>
<table width="580" border="0">
<th scope width="30" class="Style500"><?php echo ($_GET['id']); ?></span></th>
<th scope width="80" class="Style500"><?php echo date ("d/m/Y",strtotime($donnees['DATE'])); ?></span></th>
<th scope width="150" class="Style500"><?php echo htmlentities ($donnees['NOM']); ?></span></th>
<th scope width="150" class="Style500"><?php echo htmlentities ($donnees['PRENOM']); ?></span></th>
<th scope width="90" class="Style500"><?php echo htmlentities ($donnees['SECTION']); ?></span></th>
<th scope width="80" class="Style500"><?php echo date ("d/m/Y",strtotime($donnees['DATENAISSANCE'])); ?></span></th>
</tr>
</table>
<?php
}
$reponse->closeCursor(); // Termine le traitement de la requête
?>