[php array] 2 dimensions / 3 colonnes
Grafiteur
-
Grafiteur -
Grafiteur -
Bonjour,
J'ai une question conceptuel
J'ai 3 requétes qui select :
# 2 derniers ajout dans sa biblioteque de jeu personnelle
# 2 derniers inscrits
# 2 derniers prets
Ainsi je récupére 6 fiches ordonnées PAR DATE une à une à raison de 2x3 fiches en ordre décroissant
Or, j'ai besoin de faire un traitement php pour ordonnerses 6 fiches en ordre croissant pour les afficher dans mon site dans un encadré dédié au dernières actions
Comme vous vous en douter, je veux trier ses 6 fiches par ordre décroissant pour ça j'ai cherché un peu, j'ai trouver :
qui sera le coeur de mon algo de trie
sauf, que je vois pas du tout comment réunir toutes mes données dans un tableau à 2 dimensions pour pouvoir le parcourir lors du trie.
Je vois bien un truc sale du style :
mais je ne pense pas que ça fonctionne....
La réponse peut paraitre évidente mais ayant découvert les tableaux avec java ça m'aide pas car je trouve l'accessibilité des tableaux/matrice dans les autres langage beaucoup plus abstrait
J'ai une question conceptuel
J'ai 3 requétes qui select :
# 2 derniers ajout dans sa biblioteque de jeu personnelle
SELECT A_POUR_JEU.dateAjout, JEU.idJeu, ABONNE.pseudo
# 2 derniers inscrits
SELECT ABONNE.dateInscription, ABONNE.idAbonne, ABONNE.age
# 2 derniers prets
SELECT PRET.datePret, PRET.idAbonne_DE, PRET.idAbonne_A
Ainsi je récupére 6 fiches ordonnées PAR DATE une à une à raison de 2x3 fiches en ordre décroissant
Or, j'ai besoin de faire un traitement php pour ordonnerses 6 fiches en ordre croissant pour les afficher dans mon site dans un encadré dédié au dernières actions
Comme vous vous en douter, je veux trier ses 6 fiches par ordre décroissant pour ça j'ai cherché un peu, j'ai trouver :
strtotime($date1) >= strtotime($date2)
qui sera le coeur de mon algo de trie
sauf, que je vois pas du tout comment réunir toutes mes données dans un tableau à 2 dimensions pour pouvoir le parcourir lors du trie.
Je vois bien un truc sale du style :
$req = array();
$req[0] = 'SELECT ...';
$req[1] = 'SELECT ...';
$req[2] = 'SELECT ...';
$tab = array();
i=0;
while i<3 {
$reponse = $bdd->query($req[i]);
j=0;
foreach($reponse as $ligne) {
$tab[j] = array($ligne[0], $ligne[1], $ligne[2]);
j+=1;
}
mais je ne pense pas que ça fonctionne....
La réponse peut paraitre évidente mais ayant découvert les tableaux avec java ça m'aide pas car je trouve l'accessibilité des tableaux/matrice dans les autres langage beaucoup plus abstrait
1 réponse
-
yg_be Messages postés 23437 Date d'inscription Statut Contributeur Dernière intervention Ambassadeur 1 588
Moi je laisserais SQL faire le boulot, et j'essayerais plutôt :SELECT A_POUR_JEU.dateAjout, JEU.idJeu, ABONNE.pseudo union all SELECT ABONNE.dateInscription, ABONNE.idAbonne, ABONNE.age union all SELECT PRET.datePret, PRET.idAbonne_DE, PRET.idAbonne_A order by dateAjout desc
Par contre, si tu veux faire comme tu le proposes, tu dois mettre j à zéro une seule fois, avant de boucler sur i.-
SELECT A_POUR_JEU.dateAjout as 'date', JEU.idJeu as 'col1', ABONNE.pseudo as 'col2' UNION ALL SELECT ABONNE.dateInscription as 'date', ABONNE.idAbonne as 'col1', ABONNE.age as 'col2' UNION ALL SELECT PRET.datePret as 'date', PRET.idAbonne_DE as 'col1', PRET.idAbonne_A as 'col2' ORDER BY date DESC
me permet de clore le chapitre du coup ? j'ai pas encore les tables je pourrais pas test ce soir -
Les "as" sont inutiles, à part dans le premier SELECT. C'est le premier SELECT qui donne le nom de chaque colonne.
Si tu veux différencier les résultats de chacun des SELECT, tu peux ajouter une quatrième colonne (dans les SELECT, pas dans les tables), par exemple "pour jeu" dans le premier SELECT, "abonné" dans le second.
Je suppose que tu sais que tes SELECT ne sont pas tout-à-fait corrects (je pensais que c'était conceptuel), il manque le FROM et le WHERE (quand tu fais un SELECT sur plusieurs tables, comme le premier SELECT). -
-