[php array] 2 dimensions / 3 colonnes

Fermé
Grafiteur - Modifié par Grafiteur le 28/11/2016 à 20:50
 Grafiteur - 30 nov. 2016 à 23:31
Bonjour,

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

A voir également:

1 réponse

yg_be Messages postés 23342 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 21 novembre 2024 Ambassadeur 1 550
28 nov. 2016 à 21:11
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.
0
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
0
yg_be Messages postés 23342 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 21 novembre 2024 1 550
29 nov. 2016 à 08:26
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).
0
merci :)
0