8768 sujets

Développement web côté serveur, CMS

Pages :
(reprise du message précédent)

Y a-t-il une erreur avec ton nouveau code ?
Vérifie avec la méthode errorInfo.
Modifié par QuentinC (07 Oct 2015 - 23:04)
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
$query= "SELECT * FROM `annuaire-diet` WHERE region='region' ORDER BY `id`";


C'est devenu une requête constante, tu n'utilises plus le paramètre region.

Je suppose que tu voulais plutôt écrire ceci :
$query= "SELECT * FROM `annuaire-diet` WHERE region=:region ORDER BY `id`";
 
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
 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)
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"));


Non, il n'y a pas les deux points dans le nom de la clé, et l'échappement est normalement inutile
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 ?
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.
upload/40410-bdd.jpg
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 ?
Modérateur
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. Smiley cligne
Modifié par niuxe (10 Oct 2015 - 02:03)

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.
Mdr après moi sur ton IMAGE je vois "region 1" et pas "region" hein Smiley smile
Modifié par JENCAL (09 Oct 2015 - 10:02)
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 Smiley smile


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 Smiley cligne 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 Smiley cligne 1


ouf tu me rassure !
pour tester, j'ai fais un petit test dans phpmydamin

ma requête m'a bien renvoyer PACA avec cette syntaxe :

SELECT * FROM `test` where region = 'Provence-Alpes-Côte d''Azur'


l'apostrophe d'azur c'est deux simple quotte ! ' '
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 ?
je vais testé ça se soir !!

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 ! Smiley cligne 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 :
Autre petite question, quel est le type du champ region ?
c'est un champ varchar
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. Smiley cligne


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 ??
Pages :