8768 sujets
Développement web côté serveur, CMS
QuentinC a écrit :
Y a-t-il une erreur avec ton nouveau code ?
Vérifie avec la méthode errorInfo.
Bonsoir Quentin, la méthode errorinfo ne me retourne aucune erreurs !
est-ce que je l'ai bien écris ?
try
{
$bdd = new PDO("mysql:host=$host; dbname=*************", $user, $passwd, array (PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8"));
}
catch (Exception $e)
{
die('Erreur : ' . $e->getMessage());
}
$query= "SELECT * FROM `annuaire-diet` WHERE region='region' ORDER BY `id`";
$sth = $bdd->prepare($query);
$sth->execute(array("region" => "Provence-Alpes-Côte d'Azur"));
if (!$sth) {
echo "\nPDO::errorInfo():\n";
print_r($bdd->errorInfo());
}
while($tab = $sth->fetch(PDO::FETCH_ASSOC));
{
?>
aperçu ici
Pardon, j'avais loupé la page 2, je laisse le poste, il me semble qu'il complète le tien QuentinC
Je pense aussi que
si tu écris ça, il cherche une région qui s'appelle "région".
Idem avec
Modifié par loicbcn (08 Oct 2015 - 08:54)
Je pense aussi que
WHERE region='region'
n'est pas la même chose que WHERE region=:region
si tu écris ça, il cherche une région qui s'appelle "région".
Idem avec
$sth->execute(array("region" => "Provence-Alpes-Côte d'Azur"));
et $sth->execute(array(":region" => "Provence-Alpes-Côte d\'Azur"));
Modifié par loicbcn (08 Oct 2015 - 08:54)
Ici ils l'écrivent avec ":", ça doit être toléré.
http://php.net/manual/en/pdo.prepare.php
http://php.net/manual/en/pdo.prepare.php
QuentinC a écrit :
Idem avec
$sth->execute(array("region" => "Provence-Alpes-Côte d'Azur"));
et
$sth->execute(array(":region" => "Provence-Alpes-Côte d\'Azur"));
Loicbcn a écrit :
Bonjour messieurs, j'aurai bien aimé que vos propositions soit ma solutions !
avec ou sans :, avec ou sans échappement !! ma page n'affiche aucunes données de ma bdd, alors que mes autres pages fonctionnent.
Combien ta requête génère-t-elle de lignes de résultat ? 0 ?
Regarde le retour de la méthode rowCount.
Vérifie toujours les erreurs avec la méthode errorInfo.
Est-ce que ta requête fonctionne et donne le résultat attendu si tu l'exécutes en ligne de commande ou avec un outil du genre adminer ou phpmyadmin ?
Regarde le retour de la méthode rowCount.
Vérifie toujours les erreurs avec la méthode errorInfo.
Est-ce que ta requête fonctionne et donne le résultat attendu si tu l'exécutes en ligne de commande ou avec un outil du genre adminer ou phpmyadmin ?
QuentinC a écrit :
Combien ta requête génère-t-elle de lignes de résultat ? 0 ?
Regarde le retour de la méthode rowCount.
Effectivement le rowCount m'affiche 0, pourtant ma BDD a 10 lignes avec "Provence-Alpes-Côte d'Azur"
QuentinC a écrit :
Est-ce que ta requête fonctionne et donne le résultat attendu si tu l'exécutes en ligne de commande ou avec un outil du genre adminer ou phpmyadmin ?
Je suis allé sur ma bdd est j'ai directement écrit mes requêtes pour tester
ex : SELECT * FROM `annuaire-diet` WHERE region='Alsace' ORDER BY `id`
Affichage des lignes 0 - 5 (total de 6....
quand je fais la même opération avec :
SELECT * FROM `annuaire-diet` WHERE region="'Provence-Alpes-Côte d'Azur'" ORDER BY `id`
j'ai 0 lignes qui s'affiche et pourtant comme la photo en pièce jointe le monte ma bdd est bien remplie.
Est-ce que la requête dans ton script fonctionne et donne le résultat attendu si tu prends une autre région ?
Le but c'est de voir si ton script fonctionne cette fois-ci, et si le problème ne concerne plus que cette région en particulier, ou si ton script ne donne toujours pas ce que tu veux.
Si toutes les autres régions fonctionnent, il y a peut-être encore un problème avec le 'ô'. Dans ce cas, vérifie scrupuleusement que la collation de la base, la table et le champ soient bien en utf8. Essaie aussi like à la place de =, ça peut parfois changer des choses. Autre petite question, quel est le type du champ region ?
Le but c'est de voir si ton script fonctionne cette fois-ci, et si le problème ne concerne plus que cette région en particulier, ou si ton script ne donne toujours pas ce que tu veux.
Si toutes les autres régions fonctionnent, il y a peut-être encore un problème avec le 'ô'. Dans ce cas, vérifie scrupuleusement que la collation de la base, la table et le champ soient bien en utf8. Essaie aussi like à la place de =, ça peut parfois changer des choses. Autre petite question, quel est le type du champ region ?
Salut,
...
$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
Fait un petit tour sur cette page : Les erreurs et leur gestion et adapte ton code en conséquence . Ensuite, met tout ton code dans le try et dis nous ce que ça donne.
Est ce que l'apostrophe de PACA est un apostrophe informatique ou typographique ? Apriori, c'est informatique, mais je pense que ça vaille le coup de voir. Sinon, test avec un LIKE pour voir qi tu as un résultat.
Modifié par niuxe (10 Oct 2015 - 02:03)
...
$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
Fait un petit tour sur cette page : Les erreurs et leur gestion et adapte ton code en conséquence . Ensuite, met tout ton code dans le try et dis nous ce que ça donne.
Est ce que l'apostrophe de PACA est un apostrophe informatique ou typographique ? Apriori, c'est informatique, mais je pense que ça vaille le coup de voir. Sinon, test avec un LIKE pour voir qi tu as un résultat.
Modifié par niuxe (10 Oct 2015 - 02:03)
loicbcn a écrit :SELECT * FROM `annuaire-diet` WHERE region="'Provence-Alpes-Côte d'Azur'" ORDER BY `id`
Il y a une erreur dans ta requête ... tu écris "' ... '", essaies "Provence-Alpes-Côte d'Azur".
Dans la plupart des codes que tu as reportés ici, il y a des erreurs ... Un peu de rigueur.
Oui je sais que j'ai mis "' xxx'" sinon ma page.php n'affichait plus rien !!
JENCAL a écrit :
Mdr après moi sur ton IMAGE je vois "region 1" et pas "region" hein
Le 1 n'est pas dans ma base, mais il apparait sur l'image car pour montrer que ma région éxistait bien et que je n'étais pas fou, j'ai fait une sélection de la colonne "region" directement sur ma base de données afin qu'elle soit classé par ordre alphabétique. Il n'y a pas de HEIN 1
dafid5 a écrit :
Le 1 n'est pas dans ma base, mais il apparait sur l'image car pour montrer que ma région éxistait bien et que je n'étais pas fou, j'ai fait une sélection de la colonne "region" directement sur ma base de données afin qu'elle soit classé par ordre alphabétique. Il n'y a pas de HEIN 1
ouf tu me rassure !
QuentinC a écrit :je vais testé ça se soir !!
Est-ce que la requête dans ton script fonctionne et donne le résultat attendu si tu prends une autre région ?
QuentinC a écrit :
Si toutes les autres régions fonctionnent, il y a peut-être encore un problème avec le 'ô'.
Le ô de Rhône-Alpes fonctionne ! donc je ne pense pas que ce soit le problème ! mais l'idée était bonne
Ma colonne est bien en utf8_general_ci
Je vais essayé le like à la place du =
QuentinC a écrit :c'est un champ varchar
Autre petite question, quel est le type du champ region ?
niuxe a écrit :
Salut,
...
$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
Fait un petit tour sur cette page : Les erreurs et leur gestion et adapte ton code en conséquence . Ensuite, met tout ton code dans le try et dis nous ce que ça donne.
Est ce que l'apostrophe de PACA est un apostrophe informatique ou typographique ? Apriori, c'est informatique, mais je pense que ça vaut le coup de voir. Sinon, test avec un LIKE pour voir qi tu as un résultat.
J'essaye ce soir !
QuentinC a écrit :
Est-ce que la requête dans ton script fonctionne et donne le résultat attendu si tu prends une autre région ?
Le but c'est de voir si ton script fonctionne cette fois-ci, et si le problème ne concerne plus que cette région en particulier, ou si ton script ne donne toujours pas ce que tu veux.
La nouvelle requête ne fonctionnait pas avec les autres régions
$query= "SELECT * FROM `annuaire-diet` WHERE region =:region ORDER BY `id`";
$sth = $bdd->prepare($query);
$sth->execute(array(":region" => "Alsace"));
while($tab = $sth->fetch(PDO::FETCH_ASSOC));
{
?>
Par contre en faisant comme ça, cela fonctionne SAUF pour Provence-Alpes Côte d'Azur
$sth = $bdd->prepare('SELECT * FROM `annuaire-diet` WHERE region =:Alsace ORDER BY `id`');
$sth->execute(array(':Alsace' => 'Alsace'));
// Recuperation des resultats
while($tab = $sth->fetch(PDO::FETCH_ASSOC))
{
?>
QuentinC a écrit :
Essaie aussi like à la place de =, ça peut parfois changer des choses
$sth = $bdd->prepare("SELECT * FROM `annuaire-diet` WHERE region LIKE ' [langue]rovence-Alpes-Côte d'Azur' ORDER BY `id`");
$sth->execute(array(" [langue]rovence-Alpes-Côte d'Azur" => "Provence-Alpes-Côte d'Azur"));
// Recuperation des resultats
while($tab = $sth->fetch(PDO::FETCH_ASSOC))
{
aucuns retour ! que ce soit avec un = ou un LIKE
j'ai essayé avec des doubles quotes simple, avec un \'. rien
Modifié par dafid5 (10 Oct 2015 - 08:45)
niuxe a écrit :
Salut,
...
$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
<?php
// Déclaration des paramètres de connexion
$bdd = new PDO("mysql:host=$host; dbname=*******", $user, $passwd, array (PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8"));
$sth = $bdd->prepare("SELECT * FROM `annuaire-diet` WHERE region = ' [langue]rovence-Alpes-Côte d''Azur' ORDER BY `id`");
$sth->execute(array(" [langue]rovence-Alpes-Côte d''Azur" => "Provence-Alpes-Côte d'Azur"));
try
{
$sth->setAttribute(PDO::ATTR_ERRMODE => PDO::ERRMODE_WARNING);
} catch(PDOException $e){
echo 'ERROR: ' . $e->getMessage();
}
// Recuperation des resultats
while($tab = $sth->fetch(PDO::FETCH_ASSOC))
{
?>
j'ai essayé avec PDO::ATTR_ERRMODE => PDO::ERRMODE_WARNING, cela m'affiche une page blanche et avec PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION j'ai toutes les parties Html qui apparaissent mais rien du côté php. aucun retour de bdd
est-ce que j'ai bien créé l'instance PDO pour la définition du mode d'erreur ??