Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2377 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  Trier un tableau + requete sur 2 tables

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Trier un tableau + requete sur 2 tables

n°969484
Ex-Floodeu​r
La Source
Posté le 02-02-2005 à 15:16:41  profilanswer
 

J'essaye de regrouper le reséultat de deux requetes SQL recherchant des éléments dans deux tables différentes dans un seul tableau . JE souhaite trier ce tableau par date (date étant un des champs)
 
Voici mon script actuel :  
 

Code :
  1. $date_rss=array("0" );$titre_rss=array("0" );$id_rss=array("0" );$cdz_rss=array("0" );
  2. $req1 = mysql_query("select * from news order by date desc limit 15" );
  3. $rank = 1;
  4. while($view1 = mysql_fetch_object($req1)) {
  5. $date = $view1->date;$titre = $view1->titre;$idx = $view1->idx;$cdz = 2;
  6. array_push ($date_rss, "$date" );
  7. array_push ($titre_rss, "$titre" );
  8. array_push ($id_rss, "$idx" );
  9. array_push ($cdz_rss, "$cdz" );
  10. $rank++;
  11. }
  12. $req2 = mysql_query("select * from contenu order by date desc limit 10" );
  13. while($view2 = mysql_fetch_object($req1)) {
  14. $date = $view2->date;$titre = $view2->titre;$idx = $view2->idx;$cdz = $view2->cdz;
  15. array_push ($date_rss, "$date" );
  16. array_push ($titre_rss, "$titre" );
  17. array_push ($id_rss, "$idx" );
  18. array_push ($cdz_rss, "$cdz" );
  19. $rank++;
  20. }
  21. asort($date_rss);
  22. for ($i = 0; $i !=11; $i++)
  23. {
  24. ?>
  25. <a href="index-<? echo $cdz_rss[$i] ?>-<? echo $id_rss[$i] ?>-0.html"><? echo $titre_rss[$i] ?></a> - le <? echo $date_rss[$i] ?><br/>
  26. <?
  27. }
  28. ?>


 
En vous remerciant de vos conseils et idées,


---------------
Saint Seiya  || La Livebox || Europe, débats, réflexions
mood
Publicité
Posté le 02-02-2005 à 15:16:41  profilanswer
 

n°969488
Dj YeLL
$question = $to_be || !$to_be;
Posté le 02-02-2005 à 15:20:36  profilanswer
 

J'ai du mal à saisir ... il y a les mêmes champs dans les 2 tables ?


---------------
Gamertag: CoteBlack YeLL
n°969489
zentakk
Posté le 02-02-2005 à 15:20:40  profilanswer
 

pq tu ne fais pas une seule requetes plutot si c'est sur une meme tables?
 
sinon difficile de trier sur un format de date sauf si date en format unix.

n°969498
Ex-Floodeu​r
La Source
Posté le 02-02-2005 à 15:24:43  profilanswer
 

ce sotn deux tables differentes et les dates sont bien en unix.


---------------
Saint Seiya  || La Livebox || Europe, débats, réflexions
n°969513
zentakk
Posté le 02-02-2005 à 15:35:24  profilanswer
 

Ex-floodeur a écrit :

ce sotn deux tables differentes et les dates sont bien en unix.


va voir par la  :) http://lu.php.net/manual/fr/functi [...] tisort.php
 
puis fai moi le plaisir de changer ton

Citation :

for ($i = 0; $i !=11; $i++)


par

Citation :

for ($i = 0; $i <11; $i++)
ou
for ($i = 0; $i <count($date_rss); $i++)


c'est plus propre :love:


Message édité par zentakk le 02-02-2005 à 15:43:50
n°969522
Ex-Floodeu​r
La Source
Posté le 02-02-2005 à 15:45:27  profilanswer
 

merci !!
 
je devais mettre ca : array_multisort ($date_rss, SORT_DESC,$titre_rss, $id_rss,$cdz_rss);


---------------
Saint Seiya  || La Livebox || Europe, débats, réflexions
n°969615
ratibus
Posté le 02-02-2005 à 16:45:42  profilanswer
 

Salut
 
Quelle version de MySQL ?

n°969638
ratibus
Posté le 02-02-2005 à 16:55:24  profilanswer
 

Si c'est une version inférieure à la 4 voici ma proposition :

Code :
  1. <?php
  2. $rssList = array();
  3. $req1 = mysql_query("SELECT date, titre, idx, 2 AS cdz FROM news ORDER BY date DESC LIMIT 15" );
  4. $rank = 1;
  5. while($view1 = mysql_fetch_assoc($req1)) {
  6. $rssList[] = $view1;
  7. $rank++;
  8. }
  9. $req2 = mysql_query("SELECT date, titre, idx, cdz FROM contenu ORDER BY date DESC LIMIT 10" );
  10. while($view2 = mysql_fetch_assoc($req1)) {
  11. $rssList[] = $view2;
  12. $rank++;
  13. }
  14. function sortByDateAsc($a, $b) {
  15. if($a['date']==$b['date']) {
  16.  return 0;
  17. }
  18. return $a['date']>$b['date'] ? 1 : -1;
  19. }
  20. usort($rssList, 'sortByDateAsc');
  21. foreach($rssList as $rss) {
  22. ?>
  23. <a href="index-<?php echo $rss['cdz'] ?>-<?php echo $rss['idx'] ?>-0.html"><?php echo $rss['titre'] ?></a> - le <?php echo $rss['date'] ?><br/>
  24. <?php
  25. }
  26. ?>


Message édité par ratibus le 02-02-2005 à 16:56:56
n°969656
ratibus
Posté le 02-02-2005 à 17:02:31  profilanswer
 

Et si tu as au moins MySQL 4 :

Code :
  1. <?php
  2. $rssList = array();
  3. $req = mysql_query("(SELECT date, titre, idx, 2 AS cdz FROM news ORDER BY date DESC LIMIT 15)
  4.     UNION
  5.     (SELECT date, titre, idx, cdz FROM contenu ORDER BY date DESC LIMIT 10)
  6.     ORDER BY date" );
  7. $rank = 1;
  8. while($view = mysql_fetch_assoc($req)) {
  9. $rssList[] = $view;
  10. $rank++;
  11. }
  12. foreach($rssList as $rss) {
  13. ?>
  14. <a href="index-<?php echo $rss['cdz'] ?>-<?php echo $rss['idx'] ?>-0.html"><?php echo $rss['titre'] ?></a> - le <?php echo $rss['date'] ?><br/>
  15. <?php
  16. }
  17. ?>


 
Si tu as des questions n'hésite pas ;)

n°969759
Ex-Floodeu​r
La Source
Posté le 02-02-2005 à 17:39:44  profilanswer
 

Merci de l'astuce ;)


---------------
Saint Seiya  || La Livebox || Europe, débats, réflexions
mood
Publicité
Posté le 02-02-2005 à 17:39:44  profilanswer
 

n°969787
ratibus
Posté le 02-02-2005 à 18:08:56  profilanswer
 

Le fait d'avoir qu'un tableau au lieu de 4 ou bien le [] ?

n°969819
Ex-Floodeu​r
La Source
Posté le 02-02-2005 à 18:50:36  profilanswer
 

non pour ton script :)
 
Enfin, si je pouvais juste avoir les 10 premières lignes ce serait le top !


---------------
Saint Seiya  || La Livebox || Europe, débats, réflexions
n°975039
kalex
Posté le 08-02-2005 à 03:06:27  profilanswer
 

zentakk a écrit :

va voir par la  :) http://lu.php.net/manual/fr/functi [...] tisort.php
 
puis fai moi le plaisir de changer ton

Citation :

for ($i = 0; $i !=11; $i++)


par

Citation :

for ($i = 0; $i <11; $i++)
ou
for ($i = 0; $i <count($date_rss); $i++)


c'est plus propre :love:

Moi c'est plutot ça qui me choque :

Code :
  1. ?>
  2. <a href="index-<? echo $cdz_rss[$i] ?>-<? echo $id_rss[$i] ?>-0.html"><? echo $titre_rss[$i] ?></a> - le <? echo $date_rss[$i] ?><br/>
  3. <?


Fait plutot :

Code :
  1. echo '<a href="index-'.$cdz_rss[$i].$id_rss[$i].'-0.html">'.$titre_rss[$i].'</a> - le '.$date_rss[$i]."<br/>\n";


n°1000661
Ex-Floodeu​r
La Source
Posté le 04-03-2005 à 14:06:11  profilanswer
 

ca changerait quoi ?  En quoi ca te choque ?

n°1001550
kalex
Posté le 05-03-2005 à 01:20:18  profilanswer
 

En gros tu fait :
[fin de code PHP]
[code HTML]
[début de code PHP]
[afficher variable]
[fin de code PHP]
[code HTML]
[début de code PHP]
[afficher variable]
[fin de code PHP]
...etc !
 
Alors que dans ce que je dis de faire, tu fais juste :
[afficher une chaîne de caractères]

n°1001639
Ex-Floodeu​r
La Source
Posté le 05-03-2005 à 10:23:09  profilanswer
 

oui mais c'est plus clair non ? ou alors, il faudrait faire tout le PHP d'abord, puis la sauce HTML ?


Message édité par Ex-Floodeur le 05-03-2005 à 10:23:31

---------------
Saint Seiya  || La Livebox || Europe, débats, réflexions
n°1001789
omega2
Posté le 05-03-2005 à 15:30:33  profilanswer
 

C'est toujours plus clair de faire une seule instruction de sortie de chaîne de caractère que de faire 15 mélanges entre code html non interprété et affichage de caractère en php.
D'une certaine manière, ça serait comme avoir la liste des directions à prendre pour aller de tel endroit à tel autre en ayant comme indication "avancez tout droit de 15 mètres puis avancer tout droit sur 50 mètres puis ..."
Mieux vaut un simple "avancez tout droit sur 625 mètres" s'il y a aucun carrefour sur le chemin. ;)


Message édité par omega2 le 05-03-2005 à 15:32:40

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  Trier un tableau + requete sur 2 tables

 

Sujets relatifs
Tableau en CSS avec restriction...écriture d'un tableau dans un fichier
Garder le résultat d'une requete en mémoire avec PHP Part 2 [Résolu]dimension d'un tableau de tableau
Requete Group by[Résolu] Problème de requête
[Access]pb de requete de suppression[SQL] UPDATE dans une requete SELECT ?
tableau 2 dimensionsProbleme affichage tableau
Plus de sujets relatifs à : Trier un tableau + requete sur 2 tables


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR