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 :

trier les resultats d'une requete [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    165
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 165
    Par défaut trier les resultats d'une requete
    bonjour, je vais essayer d'expliquer mon souci,
    J'ai un site internet ou chaque membre peu poster des news, des audios, et ajouter un autre membre pour amis.
    Je voudrai creer dans la page administration une page permettant de voir dans l'ordre les 20 derniers mouvement de ses amis.(c'est a dire leur derniers postage leur dernieres news leur dernier amis)
    Pour le moment j'ai reussi a recuperer les 5 derniers mouvement de chaque amis, cependant ce tri est d'abor réalisé par amis puis par date.. j'ai donc sur ma page tout mes amis avec à coté leurs 5 derniers mouvements..
    Comment pourrai-je arriver a faire ce que j'ai dit precedement? a créer une liste ordonné par date (contenant l'objet de la modification et bien sur le sujet (amis) qui a fait cette modif)
    Je vous remerci d'avance en esperant avoir été assé clair

  2. #2
    Rédacteur
    Avatar de RideKick
    Homme Profil pro
    Directeur technique
    Inscrit en
    Septembre 2006
    Messages
    5 914
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Septembre 2006
    Messages : 5 914
    Par défaut
    avec un order by Date ?

    sinon avec un peu de code ...c'est toujours plus facile
    Pas de questions techniques en MP please

    Mon site perso

    Mon profil Viadeo

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    165
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 165
    Par défaut
    Merci de ta réponse
    alors voici le code actuel bonne lecture


    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
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    $sql = "SELECT DISTINCT a.id_amide, pseudo_membre, blog_avatar, profil_pseudo, id_priorite, url_client_part FROM amis a, membres b, partenaires c WHERE b.part_id=c.part_id AND a.id_amide=b.id_membre AND (statut=1 OR statut=2 OR statut=3) AND a.id_membre=".$_SESSION['id']." AND (a.id_priorite=1 OR a.id_priorite=2) ";
    $sql=sql_query($sql);
     
    $nbamis=sql_num_rows($sql); // on a le nombre d'amis
    while($data=sql_fetch_array($sql))
    {
    	$nb=0;
    	$idamis=$data['id_amide'];
    			//REQUETE PERMETTANT DE RECUPERER TOUTES LES NEWS VIDEO ET SON POSTE PAR SES AMIS ORDONNEES PAR DATE DE MISE EN LIGNE
    	$requete ="
    	SELECT a.id_amide,pseudo_membre,date_creat, 'amis' AS origine
    	FROM amis a, membres b
    	where a.id_amide=b.id_membre
    	AND a.id_membre=".$idamis."
    	UNION ALL
    	SELECT id_membre,nom, date_creat, 'files' AS origine 
    	FROM files 
    	where id_membre=".$idamis." 
    	AND (type=3 OR type=4 OR type=5) 	 
    	UNION ALL
    	SELECT id_membre,sujet_news,date_modif, 'news' AS origine
    	FROM news where id_membre=".$idamis."	
    	ORDER BY date_creat DESC";
    	echo "Amis :";
     
    	echo $data['pseudo_membre'];
    	if(!eregi("http://",$data['blog_avatar']) && is_file($sitePath."client/files/".$data['pseudo_membre']{0}."/".$data['pseudo_membre']."/".$data['blog_avatar'])){ ?>
    		<img src="/client/files/<?php echo $data['pseudo_membre']{0}."/".$data['pseudo_membre']."/".$data['blog_avatar']; ?>" width="80" alt="" height="80"/><br/>
    	<?php
    }
    	echo '<br/>';
    	$requete=sql_query($requete);
    	while(($data2=sql_fetch_array($requete))&&($nb<5))
    	{
    		if($data2['origine']== 'files')
    			{
    				echo "a ajout&eacute; un fichier sur son player";
    				echo "<br/>";
    			}
    		if($data2['origine']== 'amis')
    			{
    				echo "a ajout&eacute; comme amis : ";
    				echo $data2['pseudo_membre'];
    				echo "<br/>";
    			}
    			if($data2['origine']== 'news')
    			{
    				echo "a ajout&eacute; une news sur sa page";
    				echo "<br/>";
    			}
     
    		echo ' le : ';
    		$date1=$data2['date_creat'];
    		list($date, $time) = explode(" ", $date1);
    		list($year, $month, $day) = explode("-", $date);
    		list($hour, $min, $sec) = explode(":", $time);
     
    		$months = array("janvier", "février", "mars", "avril", "mai", "juin",
        "juillet", "août", "septembre", "octobre", "novembre", "décembre");
    		echo $date1 = "le $day ".$months[$month-1]." $year à ${hour}h${min}m";
     
     
     
     
    		echo '<br/>';
    		$nb++;
    	}
    	$nb=0;
     
     
    }

    comme tu peu voir je fait d'abor une selection de tous les amis pour ensuite a chaqu'un prendre les 5 dernièrs mouvement ..

  4. #4
    Rédacteur
    Avatar de RideKick
    Homme Profil pro
    Directeur technique
    Inscrit en
    Septembre 2006
    Messages
    5 914
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Septembre 2006
    Messages : 5 914
    Par défaut
    tu as un champs date pour les inscriptions de tes amis ?
    Auquel cas tu dois prendre les 5 premiers enregistrements en les classants par date DESC
    Pas de questions techniques en MP please

    Mon site perso

    Mon profil Viadeo

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    165
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 165
    Par défaut
    mes amis sont bien enregistré avec une date , cad si j'accepte un amis ce matin dans la table amis il y aura une date avec mon id et l'id de mon amis,
    mois ce que je veu c pas avoir mes 5 derniers amis mé les 5 dernièrs mouvement de tous mes amis ordonné par dates

  6. #6
    Rédacteur
    Avatar de RideKick
    Homme Profil pro
    Directeur technique
    Inscrit en
    Septembre 2006
    Messages
    5 914
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Septembre 2006
    Messages : 5 914
    Par défaut
    bah tu prends directement les mouvements classés par date DESC dont les identifiants amis sont equivalents a tes ceux de tes amis ?
    Pas de questions techniques en MP please

    Mon site perso

    Mon profil Viadeo

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    165
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 165
    Par défaut
    oui , c'est ce que j'essaye mais j'arrive pas a touver comment le coder,
    mes tables sont :
    amis) id_membre id_amide pseudo_membre
    news) id_membre sujet_news date_creat
    files) id_membre nom date_creat

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    165
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 165
    Par défaut
    J'ai réaliser un tableau contenant toutes les id de mes amis :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    while($data=sql_fetch_array($sql))
    {
    	$tableau_id_amis[$i]=$data['id_amide'];
    	$tableau_pseudo_amis[$i]=$data['pseudo_membre'];
    	$i++;
    }
    comment faire maintenat ma requete initialement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    $requete ="
    	SELECT a.id_amide,pseudo_membre,date_creat, 'amis' AS origine
    	FROM amis a, membres b
    	where a.id_amide=b.id_membre
    	AND a.id_membre=".$idamis."
    	UNION ALL
    	SELECT id_membre,nom, date_creat, 'files' AS origine 
    	FROM files 
    	where id_membre=".$idamis." 
    	AND (type=3 OR type=4 OR type=5) 	 
    	UNION ALL
    	SELECT id_membre,sujet_news,date_modif, 'news' AS origine
    	FROM news where id_membre=".$idamis."	
    	ORDER BY date_creat DESC";
    sachant que $idamis été l'identifiant de mon amis

  9. #9
    Rédacteur
    Avatar de RideKick
    Homme Profil pro
    Directeur technique
    Inscrit en
    Septembre 2006
    Messages
    5 914
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Septembre 2006
    Messages : 5 914
    Par défaut
    Dans ton cas comme tu as 2 tables files et news le plus simple c'est de prendre soi 2 news 3 file soit l'inverse en fonction de ta lise d'amis du genre

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT sujet_news from tableNews WHERE id_membre in (SELECT idMembre form Membres WHERE id='tadada' order by DATE DESC LIMIT 0,1)
    ORDER by DATE DESC LIMIT 0,3
    et la même pour news , bien évidement les noms sont pas bon c'est pour l'exemple tu as plus qu'a ajuster a ta sauce !
    Pas de questions techniques en MP please

    Mon site perso

    Mon profil Viadeo

  10. #10
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    165
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 165
    Par défaut
    Déja merci de ton aide,
    J'ai testé comme tu m'avai proposé dans ton précedent message voici ce que ca me retourne


    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
    ERREUR : 
    	SELECT c.id_amide,pseudo_membre,date_creat, 'amis' AS origine
    	FROM amis c, membres b
     
    	WHERE c.id_membre (SELECT  a.id_amide FROM amis a, membres b, partenaires c WHERE b.part_id=c.part_id AND a.id_amide=b.id_membre AND (statut=1 OR statut=2 OR statut=3) AND a.id_membre=9596 AND (a.id_priorite=1 OR a.id_priorite=2))
    	AND c.id_amide=b.id_membre
    	UNION ALL
     
    	SELECT id_membre,nom, date_creat, 'files' AS origine 
    	FROM files 
    	WHERE id_membre in (SELECT  a.id_amide FROM amis a, membres b, partenaires c WHERE b.part_id=c.part_id AND a.id_amide=b.id_membre AND (statut=1 OR statut=2 OR statut=3) AND a.id_membre=9596 AND (a.id_priorite=1 OR a.id_priorite=2))
    	AND (type=3 OR type=4 OR type=5) 	 
     
    	UNION ALL
     
    	SELECT id_membre,sujet_news,date_modif, 'news' AS origine
    	FROM news WHERE id_membre (SELECT  a.id_amide FROM amis a, membres b, partenaires c WHERE b.part_id=c.part_id AND a.id_amide=b.id_membre AND (statut=1 OR statut=2 OR statut=3) AND a.id_membre=9596 AND (a.id_priorite=1 OR a.id_priorite=2))
    	ORDER BY date_creat DESC - ERROR:  syntax error at or near "SELECT" at character 111

  11. #11
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    165
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 165
    Par défaut
    ca marche presque merci beaucoup,
    voici mon code

    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
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    $requete ="
    	SELECT c.id_amide,pseudo_membre,date_creat, 'amis' AS origine
    	FROM amis c, membres b
     
    	WHERE c.id_membre in  (SELECT  a.id_amide FROM amis a, membres b, partenaires c WHERE b.part_id=c.part_id AND a.id_amide=b.id_membre AND (statut=1 OR statut=2 OR statut=3) AND a.id_membre=".$_SESSION['id']." AND (a.id_priorite=1 OR a.id_priorite=2))
    	AND c.id_amide=b.id_membre
    	UNION ALL
     
    	SELECT id_membre,nom, date_creat, 'files' AS origine 
    	FROM files 
    	WHERE id_membre in (SELECT  a.id_amide FROM amis a, membres b, partenaires c WHERE b.part_id=c.part_id AND a.id_amide=b.id_membre AND (statut=1 OR statut=2 OR statut=3) AND a.id_membre=".$_SESSION['id']." AND (a.id_priorite=1 OR a.id_priorite=2))
    	AND (type=3 OR type=4 OR type=5) 	 
     
    	UNION ALL
     
    	SELECT id_membre,sujet_news,date_modif, 'news' AS origine
    	FROM news WHERE id_membre in (SELECT  a.id_amide FROM amis a, membres b, partenaires c WHERE b.part_id=c.part_id AND a.id_amide=b.id_membre AND (statut=1 OR statut=2 OR statut=3) AND a.id_membre=".$_SESSION['id']." AND (a.id_priorite=1 OR a.id_priorite=2))
    	ORDER BY date_creat DESC";
    	echo "Amis :";
     
     
    	echo '<br/>';
    	$requete=sql_query($requete);
    	while(($data2=sql_fetch_array($requete))&&($nb<20))
    	{
    			echo $data2['id_membre'];
     
    		if($data2['origine']== 'files')
    			{
    				echo " a ajout&eacute; un son | vid&eacute;o sur sa page";
     
     
    			}
    		if($data2['origine']== 'amis')
    			{
    				echo  "a ajout&eacute; comme amis : ";
    				echo $data2['pseudo_membre'];
     
    			}
    			if($data2['origine']== 'news')
    			{
    				echo " a ajout&eacute; une news sur sa page";
    				/*if(!empty $data['sujet_news'])
    				 echo "le titre de cette news est : '".$data['sujet_news']."' ";
    				*/
    			}
    			$nb++;
    			echo '<br/>';
    		}
    le seul souci c'est que maintenant je n'ai pas le nom de l'amis qui a fait la modif j'ai ca :

    Amis :
    a ajouté comme amis : game2duos
    a ajouté un son | vidéo sur sa page
    a ajouté comme amis : cinz
    a ajouté comme amis : dafrenchconnexion
    a ajouté comme amis : originhall93
    a ajouté comme amis : nording
    a ajouté comme amis : groupekahina
    a ajouté comme amis : omax6mum
    a ajouté comme amis : vrs

  12. #12
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    165
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 165
    Par défaut
    Merci tout fonctionne
    ++
    encore merci


+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [MySQL] Compter les resultats d'une requetes malgré un LIMIT.
    Par gregb34 dans le forum PHP & Base de données
    Réponses: 7
    Dernier message: 26/10/2006, 20h53
  2. modifier les resultats d'une requete SQL
    Par billyboy dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 30/05/2006, 06h22
  3. [MySQL] mettre les resultats d'une requete dans un select
    Par Ludo75 dans le forum PHP & Base de données
    Réponses: 8
    Dernier message: 18/01/2006, 16h19
  4. afficher les resultats d'une requete mysql sur 3 colonnes
    Par harlock59 dans le forum Requêtes
    Réponses: 7
    Dernier message: 24/12/2005, 14h38
  5. [debutant]compter les resultat d'une requete
    Par christophebmx dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 20/02/2005, 17h11

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