recuperer aleatoirement des donnees d'un tableau [RESOLU]

recuperer aleatoirement des donnees d'un tableau [RESOLU] - PHP - Programmation

Marsh Posté le 09-12-2006 à 15:26:33    

bonjour
 
j'ai un fichier texte renseigne comme suis
 

Code :
  1. img_1|url|alt
  2. img_2|url|alt
  3. img_3|url|alt
  4. img_4|url|alt
  5. etc...


 
et j'aimerais resortir aleatoirement "n" enregistrements. j'arrive à lire mon fichier mais je bloque sur la facon de rendre aleatoire l'affichage.
 
je reste colle sur se probleme : comment enregistrer la lecture du fichier teste dans un tableau et en resortir le resultat escompte
 
merci d'avance du coup de main a+ gilles
 

Code :
  1. $fichier="pic.txt";
  2. $nb_aleatoire = 2;
  3. if (file_exists($fichier))   
  4. $fp = fopen($fichier, "r" ); // le fichier existe, on l'ouvre
  5. else
  6. { // le fichier n'existe pas     
  7. echo "Fichier introuvable !<br />Importation stoppée.";   
  8. exit();
  9. }
  10. // à partir d'ici je lit tout le fichier
  11. while (!feof($fp))
  12. { // On parcours le fichier     
  13. $ligne = fgets($fp,4096); // On se déplace d'une ligne     
  14. $liste = explode("|",$ligne); // Champs séparés par |, on en fait un tableau //pas bon
  15. }


Message édité par gilles974 le 09-12-2006 à 18:24:27
Reply

Marsh Posté le 09-12-2006 à 15:26:33   

Reply

Marsh Posté le 09-12-2006 à 16:59:49    

(La mise en  caractères gras dans un bloc de code ne marche pas. On ne peut pas utiliser la balise [b])
 
Après avoir fait le tableau dont le nom est $liste (un nom moins risqué aurait été préférable, par exemple $tb_alea1), on peut re trouver chaque élément par son index, par exemple $ma_donnee1 = $liste[1]; $ma_donnee25 = $liste[25];
 
Mais, il y a un petit problème avec le code, qui vient du fait que c'est un tableau à une seule dimension, alors qu'il faudrait peut-être en avoir un à deux dimensions. Dans ce cas, on peut écrire :
 
$tab2D = array();
$i=0
while (!feof($fp)){
   $ligne = fgets($fp,4096);
   $tab2D[$i++] = explode("|",$ligne);
}  
$nb_alea = $i;
 
$element_43 = $tab2d[4][3];


Message édité par olivthill le 09-12-2006 à 17:00:33
Reply

Marsh Posté le 09-12-2006 à 17:50:45    

bonjour olivthill
 
merci pour ta reponse, mais la j'ai un peu decroche.  en mysql cela aurais ete plus simple mais si j'ai une 12dz de ban à afficher c'est le bout du monde .
voici le morceau de code refais
 

Code :
  1. $fichier="pic.txt";   
  2. $nb_pic = 2; // nombre de pic a afficher  
  3. if (file_exists($fichier))   
  4. $fp = fopen($fichier, "r" ); // le fichier existe, on l'ouvre
  5. else
  6. { // le fichier n'existe pas     
  7. echo "Fichier introuvable !<br />Importation stoppée.";   
  8. exit();
  9. }
  10. // à partir d'ici je lit tout le fichier pic.txt    
  11. $tab2D = array();
  12. $i=0 ;
  13. while (!feof($fp))
  14. {
  15. // On parcours le fichier     
  16. $ligne = fgets($fp,4096); // On se déplace d'une ligne     
  17. $tab2D[$i++] = explode("|",$ligne);
  18. }
  19. $nb_alea = $i;
  20. echo   $nb_alea;


 
je vois pas comment recuperer les infos  :??:  et les afficher echo   $nb_alea;  me sort le chiffre 4 (nbr de ligne dans le fichier)
 
comment faire je suis vraiment dans la semoule
 
a+ gilles

Reply

Marsh Posté le 09-12-2006 à 18:23:31    

merci pour ton coup de main olivthill
 
j'ai fini par avoir le declic et sa marche
voila le code complet
 

Code :
  1. $fichier="pub.txt";   
  2. $nb_pic = 2;
  3. if (file_exists($fichier))   
  4. $fp = fopen($fichier, "r" ); // le fichier existe, on l'ouvre
  5. else
  6. { // le fichier n'existe pas     
  7. echo "Fichier introuvable !<br />Importation stoppée.";   
  8. exit();
  9. }
  10. // à partir d'ici je lit tout le fichier pic.txt    
  11. srand ((double) microtime() * 10000000);
  12. $tab2D = array();
  13. $i=0 ;
  14. while (!feof($fp))
  15. { // On parcours le fichier     
  16. $ligne = fgets($fp,4096); // On se déplace d'une ligne     
  17. //$liste = explode("|",$ligne); // Champs séparés par |, on en fait un tableau     
  18. $tab2D[$i++] = explode("|",$ligne);
  19. }
  20. $nb_alea = $i;
  21. $rand_keys = array_rand ($tab2D, $nb_pic);  
  22. echo"<a href=\"".$tab2D[$rand_keys[0]][1]."\"><img src=\"".$tab2D[$rand_keys[0]][0]."\" border=\"0\" alt=\"".$tab2D[$rand_keys[0]][2]."\"></a>";
  23. echo"<a href=\"".$tab2D[$rand_keys[1]][1]."\"><img src=\"".$tab2D[$rand_keys[1]][0]."\" border=\"0\" alt=\"".$tab2D[$rand_keys[1]][2]."\"></a>";


 
a+ gilles

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed