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 :

traiter les données d'une requete


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    99
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 99
    Par défaut traiter les données d'une requete
    Bonjour à tous,

    j'ai un petit soucis avec le traitement des données après une requête.

    Je fais donc une requête sur une table avec 3 champs qui sont : type, titre_article et annee

    J'ai fait une requete qui me donne tous les résultats selon le type que j'ai choisi à partir de là je souhaite afficher les données année par année cad d'abord tous les enregistrements 2009 puis tous ceux 2008.
    voilà ce que j'ai fait mais ça ne fonctionne pas...

    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
    21
    22
     
    $req="SELECT * FROM article WHERE type = '$type' ORDER BY date;";
    $articles= mysql_query($req);
    $nbarticles = mysql_num_rows($articles);
    	if ($nbarticles >0)
    	{	
    		$annee_cours = date("Y");
    		for ($i=$annee_cours;$i>= 2008;$i--)
    		{
    			while($ligne = mysql_fetch_array($articles))
    			{
    				if($ligne["annee"]==$i)
    				{
    					echo $ligne["titre_article"];
    				}
    			}
    		}
    	}
    	else
    	{
    		echo"Aucun résultat";
    	}
    Lorsque j'ai $i =2009, le while se fait mais pour 2008 non. Comment faire pour parcourir à nouveau les résultats.
    d'avance merci

  2. #2
    Membre chevronné Avatar de beejeridou
    Homme Profil pro
    Webmaster
    Inscrit en
    Février 2007
    Messages
    280
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Février 2007
    Messages : 280
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
    $req="SELECT * FROM article WHERE type = '".$type."' ORDER BY date DESC";
    Normalement ca devrait fonctionner.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    99
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 99
    Par défaut
    Bonjour, merci pour la réponse.

    Malheureusement ça ne fonctionne pas.

    Dans ma boucle for lorsque que $i = 2009 j'ai mes résultats
    mais lorsque $i=2008 ça ne passe pas dans la boucle while

  4. #4
    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
    Par défaut
    Si tu fais le tri dans la requête comme l'a mis beejeridou tu n'as plus besoin de gérer ton for, le while qui parcourt les enregistrements renvoyés par ta requête suffit (vu que ça sera déjà trié...). Tu as aussi un if qui va dégager.

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    99
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 99
    Par défaut
    c'est parce que je veux afficher tous les résultats pour 2009 dans une div puis ceux pour 2008 dans une autre.

    En faite je voudrais pouvoir afficher les résultats avec une condition pour ne pas à avoir à faire 2 requétes distincts.

  6. #6
    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
    Par défaut
    Citation Envoyé par asagtoth Voir le message
    c'est parce que je veux afficher tous les résultats pour 2009 dans une div puis ceux pour 2008 dans une autre.

    En faite je voudrais pouvoir afficher les résultats avec une condition pour ne pas à avoir à faire 2 requétes distincts.
    Ca ne change rien, c'est l'algo qui n'est pas bon.


    Quelque chose du genre...

    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
    $req="SELECT * FROM article WHERE type = '$type' ORDER BY date DESC";
    $articles= mysql_query($req);
    	if (mysql_num_rows($articles) >0)
    	{	
    		$annee_cours = -1;
    		while($ligne = mysql_fetch_array($articles))
    		{
    			if($ligne["annee"]!=$annee_cours)
    			{
    				// traitement pour changement d'année
    			}
                            echo $ligne["titre_article"];
                            $annee_cours = $ligne["annee"];
    		}
    	}
    	else
    	{
    		echo"Aucun résultat";
    	}
    A retravailler au besoin

  7. #7
    Membre chevronné Avatar de beejeridou
    Homme Profil pro
    Webmaster
    Inscrit en
    Février 2007
    Messages
    280
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Février 2007
    Messages : 280
    Par défaut
    En fait, si j'ai bien compris, tu veux afficher tous tes résultats triés par date de la plus grande à la plus petite?

    Donc ma requete doit fonctionner. Mais j'ai du oublier de te préciser que tu pouvais ôter ta boucle for.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    $req="SELECT * FROM article WHERE type = '".$type."' ORDER BY date DESC";
    $articles= mysql_query($req);
    while($res = mysql_fetch_object($articles)) {
        // j'affiche par exemple le type
        echo $res->type."<br />";
    }
    Dis nous si ca va^^

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    99
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 99
    Par défaut
    non , ça n'est pas tout à fait ça. j'avais bien compris ce que tu m'avais dit.

    En faite algorithmiquement voilà ce que je veux:

    Je fais une requete pour obtenir tous les enregistrements de la table correspondant au type1

    Dans les résultats j'ai des enregistrements pour 2008 et pour 2009

    je veux dans un premier temps afficher dans une div "2009"
    puis une div qui contient tous les enregistrements 2009

    puis dans une autre div afficher "2008"
    puis dans une autre div afficher tous les enregistrements 2008

    Je me demande comment extraire des résultats que ceux dont l'année vaux une certaine valeur. Sinon je fais une requète par année mais c'est dommage de ne pas pouvoir en faire un pour tout et trier en aval.

  9. #9
    Membre chevronné Avatar de beejeridou
    Homme Profil pro
    Webmaster
    Inscrit en
    Février 2007
    Messages
    280
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Février 2007
    Messages : 280
    Par défaut
    Ok j'ai compris^^

    Je pense alors que tu dois faire 2 requetes:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    $req = "SELECT id FROM articles WHERE type='".$type."'";
    $articles= mysql_query($req);
    while($res = mysql_fetch_object($articles)) {
        $req2 = "SELECT * FROM articles WHERE id='".$res->id."' ORDER BY date DESC";
        $contenu = mysql_fetch_object($req2);
        while($res2 = mysql_fetch_object($contenu)) {
            echo $res2->type;
        }
    }
    Un truc du genre non?

  10. #10
    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
    Par défaut
    Citation Envoyé par asagtoth Voir le message
    non , ça n'est pas tout à fait ça. j'avais bien compris ce que tu m'avais dit.

    En faite algorithmiquement voilà ce que je veux:

    Je fais une requete pour obtenir tous les enregistrements de la table correspondant au type1

    Dans les résultats j'ai des enregistrements pour 2008 et pour 2009

    je veux dans un premier temps afficher dans une div "2009"
    puis une div qui contient tous les enregistrements 2009

    puis dans une autre div afficher "2008"
    puis dans une autre div afficher tous les enregistrements 2008

    Je me demande comment extraire des résultats que ceux dont l'année vaux une certaine valeur. Sinon je fais une requète par année mais c'est dommage de ne pas pouvoir en faire un pour tout et trier en aval.
    Mon dernier bout de code correspondait bien à ça avec une seule requête... Après ce qu'il reste à travailler c'est de faire les affichages adéquates au moment des bascules entres les années (ouvrir les div aux bons moments, les fermer, ...), mais avec un peu de réflexion ça se fait très bien (c'est aussi une question d'habitude je l'admet ça demande un peu de gymnastique phpesque).
    Ca marchera avec deux requêtes mais ce n'est pas du tout optimisé c'est tout

Discussions similaires

  1. Recuperer les données d'une requete dans UNE variable
    Par Devilju69 dans le forum Langage
    Réponses: 5
    Dernier message: 05/01/2014, 00h52
  2. Réponses: 10
    Dernier message: 11/08/2009, 14h43
  3. [AC-2003] Erreur avec UPDATE via les données d'une requete SELECT
    Par cpdump dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 11/06/2009, 12h32
  4. Réponses: 5
    Dernier message: 07/01/2008, 11h43
  5. [SQL] Afficher les données d'une requete SQL
    Par griese dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 22/06/2006, 11h22

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