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

  FORUM HardWare.fr
  Programmation
  PHP

  Tableau dynamique et tri

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Tableau dynamique et tri

n°1342199
Dorian BAC​+4
Posté le 08-04-2006 à 21:11:38  profilanswer
 

Bonsoir,
 
Je souhaiterais pouvoir remplir un tableau dont je ne connais pas initialement la taille.
Ce tableau est rempli en collectant les données d'une table de données puis d'une autre.
En fonction d'une clé commune je souhaiterais ensuite pouvoir le trier.
 
Je vous remercie par avance de vos réponses.
 
Voici un essai faux mais qui représente ce que je voudrais faire...

Code :
  1. if (isset($annee))
  2. {
  3.   $requete = "SELECT * FROM SDL_Objectif ORDER BY Date, IdObject ASC";
  4.   $resultat = mysql_query($requete) or die('Erreur SQL !<br>Requete : '.$requete.'<br>'.mysql_error());
  5.   $i=0;
  6.   while ($ligne = mysql_fetch_assoc($resultat))
  7.   {
  8.     $chaine = $ligne['Date'];
  9.     if ((substr($chaine, 0, 4))==$annee)
  10.     {
  11.       $requete2 = "SELECT * FROM SDL_ObjTex WHERE IdObjEns=".$ligne['IdObject'];
  12.       $resultat2 = mysql_query($requete2) or die('Erreur SQL !<br>Requete : '.$requete2.'<br>'.mysql_error());
  13.       while ($ligne2 = mysql_fetch_assoc($resultat2))
  14.       {
  15.         $i = $i +1;
  16.         $tab[$i]=array('Chapitre'=> $ligne2['IdObject'], 'Ligne' => $ligne2['IdObjEns'], 'Position' => $ligne2['Position'],'Type' => 'Tex', 'Id' => $ligne2['IdObjTex']);
  17.       }
  18.       $requete3 = "SELECT * FROM SDL_ObjTex WHERE IdObjEns=".$ligne['IdObject'];
  19.       $resultat3 = mysql_query($requete3) or die('Erreur SQL !<br>Requete : '.$requete3.'<br>'.mysql_error());
  20.       while ($ligne3 = mysql_fetch_assoc($resultat3))
  21.       {
  22.         $i = $i +1;
  23.         $tab[$i]=array('Chapitre'=> $ligne3['IdObject'], 'Ligne' => $ligne3['IdObjEns'], 'Position' => $ligne3['Position'], 'Type' => 'Img', 'Id' => $ligne3['IdObjImg']);
  24.       }
  25.     }
  26.   }
  27.  
  28.   // Fonction de tri
  29.  
  30.   // Fonction d'affichage
  31. }

mood
Publicité
Posté le 08-04-2006 à 21:11:38  profilanswer
 

n°1342239
nargy
Posté le 08-04-2006 à 23:35:10  profilanswer
 

tu ne peut pas faire une seule requête?

n°1342326
Dorian BAC​+4
Posté le 09-04-2006 à 11:02:31  profilanswer
 

c possible je pense, mais je ne c pas comment faire

n°1342340
Sebastien
Posté le 09-04-2006 à 12:01:30  profilanswer
 

Ben cherche, car la tu as un nombre bcp bcp trop importants de requetes :o et donc d'accès à MySQL.
Et surtout que c'est tres simple de faire en une seule requete.


Message édité par Sebastien le 09-04-2006 à 12:03:55
n°1342343
Sve@r
Posté le 09-04-2006 à 12:15:49  profilanswer
 

Dorian BAC+4 a écrit :

Bonsoir,
 
Je souhaiterais pouvoir remplir un tableau dont je ne connais pas initialement la taille.


 
Pas de pb, en php, tes tableaux sont toujours dynamiques. T'as besoin d'un nouvel élément ben tu l'écris et hop, tu l'as.  
 
Exemple  
Tu as une boucle et tu veux rajouter une nouvelle valeur dans ton tableau à chaque tour de boucle (ce qui est caractéristique d'un tableau dynamique), tu affectes juste ta variable avec des crochets sans argument, le php se chargera tout seul d'y mettre l'indice qui va bien  

while (....)  
{  
   $tab[]=la valeur que tu veux;  
}


 
Tu as maintenant accès à tout le tableau allant de "$tab[0]" à "$tab[...]"
 
Avec ça, plus de soucis de taille (sauf si ça dépasse ta capacité mémoire)...
 
 


---------------
Vous ne pouvez pas apporter la prospérité au pauvre en la retirant au riche.
n°1342347
skeye
Posté le 09-04-2006 à 12:52:40  profilanswer
 

Pour le tri d'un tableau php déjà rempli, voir sort(), asort(), arsort(), ksort(), krsort() dans la doc...


---------------
Can't buy what I want because it's free -
n°1342350
skeye
Posté le 09-04-2006 à 12:54:03  profilanswer
 

(éventuellement natsort() et natcasesort(), même...bref ya surement tout ce qu'il te faut dans la doc... :o )


---------------
Can't buy what I want because it's free -
n°1342351
skeye
Posté le 09-04-2006 à 12:54:53  profilanswer
 

...et si vraiment rien de celles-ci ne fait ce que tu veux, ya évidemment usort(), uasort() et uksort()... :D


Message édité par skeye le 09-04-2006 à 12:55:20

---------------
Can't buy what I want because it's free -
n°1342361
Dorian BAC​+4
Posté le 09-04-2006 à 13:14:59  profilanswer
 

Array (  
[0] => Array ( [Chapitre] => 8 [Ligne] => 1 [Position] => 2 [Type] => Tex [Id] => 13 )  
[1] => Array ( [Chapitre] => 8 [Ligne] => 2 [Position] => 1 [Type] => Tex [Id] => 14 )  
[2] => Array ( [Chapitre] => 8 [Ligne] => 3 [Position] => 1 [Type] => Tex [Id] => 15 )  
[3] => Array ( [Chapitre] => 8 [Ligne] => 4 [Position] => 2 [Type] => Tex [Id] => 16 )  
[4] => Array ( [Chapitre] => 8 [Ligne] => 5 [Position] => 1 [Type] => Tex [Id] => 17 )  
[5] => Array ( [Chapitre] => 8 [Ligne] => 6 [Position] => 1 [Type] => Tex [Id] => 18 )  
[6] => Array ( [Chapitre] => 8 [Ligne] => 1 [Position] => 1 [Type] => Img [Id] => 14 )  
[7] => Array ( [Chapitre] => 8 [Ligne] => 2 [Position] => 2 [Type] => Img [Id] => 15 )  
[8] => Array ( [Chapitre] => 8 [Ligne] => 4 [Position] => 1 [Type] => Img [Id] => 16 )  
[9] => Array ( [Chapitre] => 8 [Ligne] => 6 [Position] => 2 [Type] => Img [Id] => 17 ) )  
 
Voila ce que j'obtiens...
 
Je souhaiterais pouvoir classer ce tableau à la fois par ligne puis par position!
 
Afin d'obtenir :
 
Array (  
[0] => Array ( [Chapitre] => 8 [Ligne] => 1 [Position] => 1 [Type] => Img [Id] => 14 )
[1] => Array ( [Chapitre] => 8 [Ligne] => 1 [Position] => 2 [Type] => Tex [Id] => 13 )
[2] => Array ( [Chapitre] => 8 [Ligne] => 2 [Position] => 1 [Type] => Tex [Id] => 14 )
[3] => Array ( [Chapitre] => 8 [Ligne] => 2 [Position] => 2 [Type] => Img [Id] => 15 )
[4] => Array ( [Chapitre] => 8 [Ligne] => 3 [Position] => 1 [Type] => Tex [Id] => 15 )
[5] => Array ( [Chapitre] => 8 [Ligne] => 4 [Position] => 1 [Type] => Img [Id] => 16 )
[6] => Array ( [Chapitre] => 8 [Ligne] => 4 [Position] => 2 [Type] => Tex [Id] => 16 )
[7] => Array ( [Chapitre] => 8 [Ligne] => 5 [Position] => 1 [Type] => Tex [Id] => 17 )
[8] => Array ( [Chapitre] => 8 [Ligne] => 6 [Position] => 1 [Type] => Tex [Id] => 18 )
[9] => Array ( [Chapitre] => 8 [Ligne] => 6 [Position] => 2 [Type] => Img [Id] => 17 ) )

n°1342367
skeye
Posté le 09-04-2006 à 13:18:34  profilanswer
 

tu devrais t'en sortir sans trop de difficultés avec usort()


---------------
Can't buy what I want because it's free -
mood
Publicité
Posté le 09-04-2006 à 13:18:34  profilanswer
 

n°1342426
Sebastien
Posté le 09-04-2006 à 16:02:08  profilanswer
 

Bof rien que s'il fait bien sa requete, il devrait deja avoir tout rangé correctement, et pas besoin d'ajouter du traitement php par dessus.

Code :
  1. SELECT SOT.*
  2. FROM SDL_Objectif SOE, SDL_ObjTex SOT
  3. WHERE SOT.IdObjEns = SOE.IdObject
  4. ORDER BY
  5. SOE.IdOject,
  6. SOE.IdObjEns,
  7. SOE.Position


 
Par contre faut m'expliquer comme avec requete2 et requete3 identiques tu finis avec plus de Text que d'IMG :o


Message édité par Sebastien le 09-04-2006 à 16:08:23
n°1342431
skeye
Posté le 09-04-2006 à 16:09:49  profilanswer
 

Il pose une question dans la cat' php, je donne une réponse php...doù le "Pour le tri d'un tableau php déjà rempli," au début de ma première réponse...[:petrus75]
 
Mais c'est sûr que ce serait nettement plus intelligent de récupérer les données directement dans le bon ordre... ;)


---------------
Can't buy what I want because it's free -
n°1342486
Sebastien
Posté le 09-04-2006 à 19:32:10  profilanswer
 

skeye a écrit :

Il pose une question dans la cat' php, je donne une réponse php...doù le "Pour le tri d'un tableau php déjà rempli," au début de ma première réponse...[:petrus75]
 
Mais c'est sûr que ce serait nettement plus intelligent de récupérer les données directement dans le bon ordre... ;)


Autant l'aider à choisir les meilleurs idées :)
Il n'avait pas forcement l'air de partir sur une solution 100% php mais plutot de trouver comment faire.
Donc un mixte de nos deux réponses [la tienne pour sa culture G, la mienne pour une solution complète à son problème] est parfait


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

  Tableau dynamique et tri

 

Sujets relatifs
[RESOLU] créer un tableau dynamique en phpProblème id dans création de tableau dynamique [résolu]
[Resolu]selection de ligne d'un tableau dynamique et formulairetableau dynamique croisée
Problème de mise en forme dynamique dans un tableau.Tableau dynamique
Mais où se trouve le tableau dynamique????[VBA]Tableau croisé dynamique sur plage variable
Modification dynamique tableau HTML Demande d'aide VBA : tableau dynamique et importation de données
Plus de sujets relatifs à : Tableau dynamique et tri


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