IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

[SQL] Problème d'exécution et d'affichage de requête !


Sujet :

PHP & Base de données

  1. #21
    Candidat au Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 23
    Points : 2
    Points
    2
    Par défaut
    un peu de ce genre :

    $resultads = $db->sql_query($requete);
    $totalads = $db->sql_numrows($resultads);
    if ($totalads == 0) {
    echo "<BR><center><b>"._NOADSAVAIL."</b><BR><BR><a href=\"javascript:history.go(-1);\">Retour</a></center>";
    } else {
    $j = 0;
    while (list($id_ads,$title,$cdesc,$prize,$submitter,$email,$website,$dateposted) = $db->sql_fetchrow($resultads))
    { echo $id_ads;
    echo $title;
    echo $cdesc;
    echo $prize;
    echo $submitter;
    echo $email;
    echo $website;
    echo $dateposted;
    }

  2. #22
    Candidat au Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 23
    Points : 2
    Points
    2
    Par défaut
    suis je sur la bonne voie???
    dites moi s'il y a une erreur dans mon code ???
    j'ai refais une autre version mais toujours pas de résultat

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    $resultads = $db->sql_query($requete);
    	$totalads = $db->sql_numrows($resultads);
     
    	if ($totalads == 0) {
    		echo "<BR><center><b>"._NOADSAVAIL."</b><BR><BR><a href=\"javascript:history.go(-1);\">Retour</a></center>";
    	} else {
    	$j = 0;
    	while (list($id_ads,$title,$cdesc,$prize,$submitter,$email,$website,$dateposted) = $db->sql_fetchrow($resultads))
    	$j++;
      }               
     
    echo "".$id_ads."";
    echo "".$title."";
    echo "".$cdesc."";
    echo "".$prize."";
    echo "".$submitter."";
    echo "".$email."";
    echo "".$website."";
    echo "".$dateposted."";
    echo "";

  3. #23
    Membre expert Avatar de Amara
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    2 688
    Détails du profil
    Informations personnelles :
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 688
    Points : 3 115
    Points
    3 115
    Par défaut
    Une petite explication sur ce qu'est sensé faire le code serait la bienvenue.

    A première vue je comprends pas trop à quoi sert le while, j'ai l'impression que tu affiches que le dernier résultat de ta requête.

  4. #24
    Candidat au Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 23
    Points : 2
    Points
    2
    Par défaut
    en fait je veux déjà que la requête s'exécute en faisant le cumul des choix faits dans mon formulaire :
    - catégorie_sous-catégorie
    - AND dept1 OR dep2 OR dept3
    - AND date BETWEEN minimum AND maximum

    une fois qu'il a appliqué la requête, qu'il recherche les résultats et me les affiche.

    comment dois je m'y prendre?

  5. #25
    Candidat au Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 23
    Points : 2
    Points
    2
    Par défaut
    Voilà un echo sur ma requête, j'obtiens ceci :

    SELECT id_ads, id_catg, id_subcatg, id_localisation, title, cdesc, prize, submitter, email, website, dateposted FROM nuke_ads_ads WHERE catgforprocess = '3_3' AND (id_localisation = '91' OR id_localisation = '92' OR id_localisation = '71') AND (dateposted BETWEEN '2006-01-02' AND '2006-03-28') ORDER BY id_ads DESC

    je me suis rendue compte qu'il ne reconnait pas "catgforprocess" car ce n'est pas un champ mais une variable qui fait la concaténation entre "id_catg" et "id_subcatg", c'est pour celà que j'ai "3_3".

    comment puis je contourner ce problème pour qu'il puisse faire correctement la requete?

  6. #26
    Membre expert Avatar de Amara
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    2 688
    Détails du profil
    Informations personnelles :
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 688
    Points : 3 115
    Points
    3 115
    Par défaut
    Tu peux préciser un peu cette histoire de variable stp :

  7. #27
    Candidat au Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 23
    Points : 2
    Points
    2
    Par défaut
    en fait catgforprocess c'est la concaténation de deux champs : id_catg et id_subcatg, nom qui a été donné à la liste déroulante dans le formulaire

    Code de la liste déroulante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
      echo "<tr><td width=\"130\" align=\"center\"><font color=\"0080c0\">CATEGORIES</font></td>"
    			."<td width=\"120\"  colspan=\"6\"><select name=\"catgforprocess\">";
    		$result = $db->sql_query("select id_catg,catg from ".$prefix."_ads_category order by catg");
    		while (list($xid_catg,$xcatg) = $db->sql_fetchrow($result)){
    			$result2 = $db->sql_query("select id_subcatg,subcatg from ".$prefix."_ads_subcatg where id_catg='$xid_catg' order by subcatg");
    		while (list($xid_subcatg,$xsubcatg) = $db->sql_fetchrow($result2)) {
    	echo "<option value=\"$xid_catg"."_"."$xid_subcatg\">$xcatg-$xsubcatg</option>\n";
    			}
    			$db->sql_freeresult($result2);
    		}
    		$db->sql_freeresult($result);
    		echo "</select>"
    			."</td></tr>";
    après il spécifie bien comment il voudrait que l'on affiche catgforprocess
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $catg_arr = explode("_",$catgforprocess);
    	$id_catg = $catg_arr[0];
    	$id_subcatg = $catg_arr[1];

  8. #28
    Membre expert Avatar de Amara
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    2 688
    Détails du profil
    Informations personnelles :
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 688
    Points : 3 115
    Points
    3 115
    Par défaut
    après il spécifie bien comment il voudrait que l'on affiche catgforprocess


    Le problème est résolu alors avec ton petit bout de code :

  9. #29
    Candidat au Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 23
    Points : 2
    Points
    2
    Par défaut
    en fait il faudrait que je trouve un moyen de remplacer catgforporcess par exemple par une concaténation des champs id_catg et id_subcatg dans ma requête et surtout qu'il fasse le lien avec la liste déroulante dans le formulaire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    $requete = "SELECT id_ads, CONCAT(id_catg,'_',id_subcatg) AS catgforprocess, id_localisation, title, cdesc, prize, submitter, email, website, dateposted ";
    $requete .= " FROM ".$prefix."_ads_ads WHERE ";
    $requete .= " catgforprocess = '".$_POST['catgforprocess']."'";
    $requete .= " AND (id_localisation = '".$_POST['id_localisation1']."' OR  id_localisation = '".$_POST['id_localisation2']."' OR id_localisation = '".$_POST['id_localisation3']."')";
    if (empty($dateposted1) OR empty($dateposted2))
    { return false;
    } else {
    $requete .= " AND (dateposted BETWEEN '".$_POST['dateposted1']."' AND '".$_POST['dateposted2']."')";
    }
    $requete .= " ORDER BY id_ads DESC ";
    je pense que tout mon problème repose dessus et nulle d'autre (je l'espère lol)

  10. #30
    Membre expert Avatar de Amara
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    2 688
    Détails du profil
    Informations personnelles :
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 688
    Points : 3 115
    Points
    3 115
    Par défaut
    Je comprends plus rien au problème, j'ai l'impression que tu as tout ce qu'il te faut pour le résoudre non ?

  11. #31
    Candidat au Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 23
    Points : 2
    Points
    2
    Par défaut
    peut être que j'ai tout ce qu'il me faut mais je n'y arrive toujours pas quand même
    je sais que le problème se trouve au niveau de la concaténation
    j'ai fait un test en enlevant de ma requête "catgforprocess = '3_3' AND "
    dans PHPmyadmin
    il arrive à trouver les résultats!
    donc c'est bien à ce niveau que ça coince mais comment le régler !
    j'ai essayé tout type de concaténation rien n'y fait !

    SELECT CONCAT(id_catg,'_',id_subcatg) AS catgforprocess, id_ads, id_localisation, title, cdesc, prize, submitter, email, website, dateposted FROM nuke_ads_ads WHERE catgforprocess = '3_3' AND (id_localisation = '91' OR id_localisation = '92' OR id_localisation = '71') AND (dateposted BETWEEN '2006-01-02' AND '2006-03-28') ORDER BY id_ads DESC

  12. #32
    Membre expert Avatar de Amara
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    2 688
    Détails du profil
    Informations personnelles :
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 688
    Points : 3 115
    Points
    3 115
    Par défaut
    Dans ta table, il y a un champ qui s'appelle catgforprocess ou à la place il y a deux champs catg et subcatg :

  13. #33
    Candidat au Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 23
    Points : 2
    Points
    2
    Par défaut
    il y avait deux champs distincts "id_catg" et "id_subcatg"
    j'ai crée le champ catgforprocess pour kil puisse me renvoyer la concaténation

    comme je l'ai dit précédemment
    j'ai fait un test en enlevant de ma requête "catgforprocess = '3_3' AND " dans PHPmyadmin
    il arrive à trouver les résultats!

  14. #34
    Membre expert Avatar de Amara
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    2 688
    Détails du profil
    Informations personnelles :
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 688
    Points : 3 115
    Points
    3 115
    Par défaut
    Dans ta table tu as un premier champ id_catg, un deuxième id_subcatg et un troisième catgforprocess qui contient la concaténation de id_catg et id_subcatg, c'est ça :

  15. #35
    Candidat au Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 23
    Points : 2
    Points
    2
    Par défaut
    non premier champ id_ads, deuxième id_catg, troisieme id_subcatg, quatrième catgforprocess
    ce dernier champ est vide
    car quand je lui demande de faire la requête il fait une sorte de concaténation sans enregistrer dans la table
    mais quand tu visualise les données trouvées, tu n'as plus id_catg et id_subcatg mais catgforprocess

  16. #36
    Membre expert Avatar de Amara
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    2 688
    Détails du profil
    Informations personnelles :
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 688
    Points : 3 115
    Points
    3 115
    Par défaut
    En fait je vois pas pourquoi tu concatènes, tu peux pas faire un "id_catg=3 AND id_subcatg=3" dans ta requête : (vu que tu sais dissocier ces champs à partir des données de ton formulaire)

  17. #37
    Candidat au Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 23
    Points : 2
    Points
    2
    Par défaut
    en fait je veux qu'il récupère bien ce que l'on choisit dans la liste déroulante du nom de "catgforprocess" dans le formulaire
    car 3 et 3 c'est implicite il est allé les chercher dans la base de donnée
    dans le formulaire c'est écrit par ex sous cette forme:
    Annonces des Nounous-Baby-sitter
    Annonces des Nounous est la catégorie 3
    Baby-sitter la sous-catégorie 3

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    echo "<tr><td width=\"130\" align=\"center\"><font color=\"0080c0\">CATEGORIES</font></td>"
    			."<td width=\"120\"  colspan=\"6\"><select name=\"catgforprocess\">";
    		$result = $db->sql_query("select id_catg,catg from ".$prefix."_ads_category order by catg");
    		while (list($xid_catg,$xcatg) = $db->sql_fetchrow($result)){
    			$result2 = $db->sql_query("select id_subcatg,subcatg from ".$prefix."_ads_subcatg where id_catg='$xid_catg' order by subcatg");
    		while (list($xid_subcatg,$xsubcatg) = $db->sql_fetchrow($result2)) {
    	echo "<option value=\"$xid_catg"."_"."$xid_subcatg\">$xcatg-$xsubcatg</option>\n";
    			}
    			$db->sql_freeresult($result2);
    		}
    		$db->sql_freeresult($result);
    		echo "</select>"
    			."</td></tr>";
    cette liste est faite sur deux requêtes imbriquées qui sélectionne toutes les catégories présentes dans la table catégories et toutes les sous-catégories comprises dans la table sous-catégories

    alors que là je travaille sur ma table d'annonces où se trouvent les champs suivants
    premier champ id_ads, deuxième id_catg, troisieme id_subcatg, quatrième catgforprocess

  18. #38
    Membre expert Avatar de Amara
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    2 688
    Détails du profil
    Informations personnelles :
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 688
    Points : 3 115
    Points
    3 115
    Par défaut
    Je vais bientôt abandonner car je commence à perdre patience. J'ai l'impression qu'il te manque pas grand chose mais que tu n'arrives pas à expliquer clairement ce que tu veux.
    Déjà c'est qui "il" :
    Ce que je comprends : tu as un formulaire avec une liste déroulante, tu récupères pour le traitement la valeur sélectionnée dans cette liste déroulante qui est une concaténation de deux champs, mais après c'est quoi l'objectif du traitement des données du formulaire ? C'est ce traitement qui pose problème : Ou c'est la construction même du formulaire :

  19. #39
    Candidat au Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 23
    Points : 2
    Points
    2
    Par défaut
    je suis désolée de ne pas arriver à me faire comprendre
    mais n'abandonne surtout pas please
    je sens que je suis près du but

    ce qui pose problème c'est le traitement de la donnée puisque lorsque je lui enève la partie "catgforprocess" de la requete dans phpmyadmin
    $requete .= " catgforprocess = '".$_POST['catgforprocess']."'";

    il trouve les résultat et me les liste avec la concaténation des deux champs dans le champ "catgforprocess" sans problème

    le but est faire concordé
    CONCAT(id_catg,'_',id_subcatg) AS catgforprocess
    avec
    $requete .= " catgforprocess = '".$_POST['catgforprocess']."'";

  20. #40
    Membre expert Avatar de Amara
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    2 688
    Détails du profil
    Informations personnelles :
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 688
    Points : 3 115
    Points
    3 115
    Par défaut
    Soit tu vires le catgprogress de ta requête puisque tu dis que ça fontionne sans, soit tu gères les concaténations / séparations en PHP à côté de ta requête SQL. Tu te compliques la vie en voulant faire les concaténations en SQL et pas avec PHP...

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 3 PremièrePremière 123 DernièreDernière

Discussions similaires

  1. [SQL] Problème pour récupérer le resultats d'une requête
    Par -Neo- dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 14/06/2007, 10h50
  2. [SQL] problème d'exécution de la requête
    Par mama07 dans le forum PHP & Base de données
    Réponses: 12
    Dernier message: 11/06/2007, 14h15
  3. problème d'exécution d'un requête SQL!
    Par binhjuventus dans le forum C++Builder
    Réponses: 5
    Dernier message: 12/07/2006, 04h21
  4. [SQL] Problème de temps d'exécution maximum
    Par manshoon dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 18/05/2006, 14h07
  5. [SQL] problème affichage
    Par miram dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 31/01/2006, 08h02

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo