Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD > PHP & MySQL
PHP & MySQL Forum d'entraide sur les fonctions MySQL avec PHP. Avant de poster -> FAQ MySQL, Cours MySQL et Sources MySQL. Pour les questions concernant le moteur MySQL plutôt que les fonctions PHP, merci d'utiliser le forum MySQL.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 04/05/2011, 18h19   #1
Invité régulier
 
Homme André Ortais
Webmarketer
Inscription : août 2006
Messages : 11
Détails du profil
Informations personnelles :
Nom : Homme André Ortais
Localisation : France

Informations professionnelles :
Activité : Webmarketer
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : août 2006
Messages : 11
Points : 7
Points : 7
Par défaut Pourquoi ma requête SQL ne récupère que certains résultats ?

Bonjour,

J'ai un menu qui lance une requête en fonction de la région sur laquelle on clique.
Au clic s'affichent les entreprises de la région en question.

Certaines régions n'affichent pas leurs résultats et d'autres qui affichent ne montrent pas tous leurs résultats.

Je cherche depuis deux jours et sans trouver de réponse. Quelqu'un aurait une idée du problème ? Merci.

Voici la requête du menu :
Code :
1
2
3
4
5
6
7
 
$res=ExecRequete("SELECT SQL_SMALL_RESULT region,url FROM BCP_region",$con);
    while($r=ObjetSuivant($res)){
	$url=$r->url;
        $region=$r->region;
		echo '<h3><img src="/img/mini/azul.png" />
          <a href="./votre-artisan-en-'.$url.'.html">'.$region.'</a></h3>';
Voici la requête de la page de résultats :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
 
$res=ExecRequete("SELECT SQL_SMALL_RESULT id,h1,contenu,url,region FROM BCP_artisans WHERE region='$gurl'",$con); 
$r1=ObjetSuivant($res);
$region=$r1->region; 
    cdiv('chapeau');
        echo '<h1>Beton cir&eacute; et Cie en '.$region.'</h1>';
    ediv('chapeau H1');
while($r=ObjetSuivant($res)) {
       $h2=$r->h1;
       $contenu=tronque($r->contenu);
       $url=$r->url; 
 
    cdiv('chapeau');
        echo '<h2><a href="./artisans-'.$url.'.html">'.$h2.'</a></h2>';
        echo $contenu;
Voici la page de test : http://www.beton-cire-pratique.com/v...de-France.html

Merci
aeoai est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/05/2011, 21h00   #2
Membre du Club
 
Inscription : mai 2010
Messages : 45
Détails du profil
Informations forums :
Inscription : mai 2010
Messages : 45
Points : 67
Points : 67
Bonjour,

Je ne connais pas le fonctionnement des fonctions mais elles me semblent suffisamment explicites pour répondre.

- Sur le deuxième code, il semble qu'une itération soit faite pour obtenir la région, ce qui me semble incorrect, il vaut mieux se baser sur la variable $gurl ( après l'avoir vérifiée bien sûr, pour éviter tout risque d'injection ).
Du coup quand le while commence, un premier résultat a déjà été lu, il doit donc manquer à l'appel.

Sinon que donnent les requêtes exécutées directement dans un outil sql?
nonolagalinette est déconnecté   Envoyer un message privé Réponse avec citation 20
Vieux 05/05/2011, 02h38   #3
Membre régulier
 
Inscription : juin 2008
Messages : 105
Détails du profil
Informations forums :
Inscription : juin 2008
Messages : 105
Points : 84
Points : 84
Salut, à première vue, dans la partie
Code :
$res=ExecRequete("SELECT SQL_SMALL_RESULT id,h1,contenu,url,region FROM BCP_artisans WHERE region='$gurl'",$con)
tu dois concaténer ta variable $gurl avec le reste de la chaine.

Code :
$res=ExecRequete("SELECT SQL_SMALL_RESULT id,h1,contenu,url,region FROM BCP_artisans WHERE region=".$gurl,$con)
Alpha.
alpha232 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/05/2011, 16h26   #4
Invité régulier
 
Homme André Ortais
Webmarketer
Inscription : août 2006
Messages : 11
Détails du profil
Informations personnelles :
Nom : Homme André Ortais
Localisation : France

Informations professionnelles :
Activité : Webmarketer
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : août 2006
Messages : 11
Points : 7
Points : 7
Par défaut Pourquoi ma requête SQL ne récupère que certains résultats ?

Bonjour,
Merci pour vos réponses.
Tu sembles avoir raison nonolagalinette, en passant la requête directement dans MySql, j'ai toujours un résultat de plus que sur ma page. Les régions vides ne sont vides que parce que je n'ai qu'un résultat.
En revanche tu me dis de ne pas faire d'itération mais d'utiliser la variable $gurl.
Pourrais-tu m'expliquer ?
Merci encore.
aeoai est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/05/2011, 16h46   #5
Membre du Club
 
Inscription : mai 2010
Messages : 45
Détails du profil
Informations forums :
Inscription : mai 2010
Messages : 45
Points : 67
Points : 67
Apparemment ton paramètre $gurl contient justement la région à afficher, il est donc inutile de demander au serveur quelles sont les lignes dont 'region' est egal à 'region' pour afficher la colonne 'region'

En fait je dis qu'il ne faut pas faire d'itération pour récupérer la région, car ainsi tu commence à lire les résultats à partir du deuxième.

Je m'explique :

Apparemment ta fonction ObjetSuivant est un curseur.
Elle prends en paramètre la requête et le curseur se place au premier résultat.

Au premier appel de la fonction :
La fonction renvoie la première ligne, puis le curseur se place sur le deuxième résultat
Au second appel :
La fonction renvoie la deuxième ligne, puis le curseur se place sur le troisième résultat
etc.

Or, à la ligne 8 de ton code, la fonction en est à son deuxième appel, elle renvoie donc le deuxième résultat de ta requête ( ou rien si la requête n'a qu'un résultat ).


En fait la valeur que tu cherche pour la region est déjà dans ta variable $gurl.

Il suffit donc de remplacer les lignes 3 à 7 de ton code par :

Code :
1
2
3
4
 
cdiv('chapeau');
        echo '<h1>Beton cir&eacute; et Cie en '.$gurl.'</h1>';
    ediv('chapeau H1');
nonolagalinette est déconnecté   Envoyer un message privé Réponse avec citation 20
Vieux 05/05/2011, 18h26   #6
Invité régulier
 
Homme André Ortais
Webmarketer
Inscription : août 2006
Messages : 11
Détails du profil
Informations personnelles :
Nom : Homme André Ortais
Localisation : France

Informations professionnelles :
Activité : Webmarketer
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : août 2006
Messages : 11
Points : 7
Points : 7
Par défaut Pourquoi ma requête SQL ne récupère que certains résultats ?

Excellent nonolagalinette, j'ai compris !
Ça marche parfaitement et ça lit tous mes résultats.
Merci pour ton aide précieuse.
aeoai est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 09h51.


 
 
 
 
Partenaires

Hébergement Web