kdos
Messages postés4Date d'inscriptionsamedi 16 avril 2005StatutMembreDernière intervention11 mai 2005
-
10 mai 2005 à 14:40
cs_pitchoune
Messages postés15Date d'inscriptionlundi 2 septembre 2002StatutMembreDernière intervention 7 avril 2007
-
13 mai 2005 à 18:27
Bonjour ami lecteur,
Enoncé du probleme :
___________________
Soit un fichier texte intitulé news.txt de la forme suivante :
ID de la news|Titre de la news|Resumé de la news|
J'aimerais construire une fonction qui me retournerais en fonction de l'ID de la news recherchée les informations suivantes :
- son titre
- son resumé
- l'ID de la news qui la precede
- l'ID de la news qui la suit
J'arrive a recuperer les deux premieres informations avec une fonction du type:
function lct($id)
{
$fl=file('news.txt');
foreach($fl as $ln)
{
$mb=explode('|',$ln);
if($mb[0]==$id) {$titre=$mb[1]; $resume=$mb[2];}
}
return array($titre,$resume);
}
Quelqu'un saurait-il comment recuperer les deux dernieres informations ? Merci d'avance.
if($trv==TRUE)
{
//ID precedente (nulle si l'ID recherchée correspond à la premiere ligne du fichier)
if($i!=0) {$lp=explode('|',$fl[$i-1]); $idp=$lp[0];} else {$idp='';}
//ID suivante (nulle si l'ID recherchée correspond à la derniere ligne du fichier)
Azdruyel
Messages postés66Date d'inscriptionvendredi 4 juin 2004StatutMembreDernière intervention10 mai 2005 10 mai 2005 à 14:59
Salut :)
Au lieu de faire un foreach, si tu faisais une boucle for ou ton $i
represente la ligne que tu es en train de lire. Au moment ou tu trouves
la ligne qui t'interesse, tu as juste a lire la ligne $i-1 pour avoir
la precedente et $i+1 pour la suivante, et donc avoir ta news
precedante et ta news suivante.
Azdruyel
Messages postés66Date d'inscriptionvendredi 4 juin 2004StatutMembreDernière intervention10 mai 2005 11 mai 2005 à 08:43
au lieu d'une boucle for comme je disais au debut, le plus simple est une boucle while. Voila comment je ferai :)
$file est le fichier dans lequel tu cherches ton info
$data est la donnée que tu recherches
$compt est un compteur initialiser a 0
$trouve est un booleen initialise a false qui te permet de savoir si ta valeur est trouve dans le fichier, comme ca quand tu ressors de ta boucle while, tu sais si tu sors parce que tu as trouve la valeur ou bien parce que tu as lu tout ton fichier sans rien trouver
//quand tu sors de la boucle, tu verifies si $trouve==true, et dans se cas la tu lis ton fichier jusqu'a $compteur-1 pour la ligne avant et $compteur+1 pour la ligne apres avec des boucles while
//par exemple
$compteurcourante=0
while($compteurcourant!=$compteur-1){
$lignecourante=fgets($file);
$compteurcourant++;
}
//quand tu ressors de la boucle tu as la ligne avant celle que tu recerchais au debut
Voila, si jamais ca va pas, bah on cherchera autre chose
Pour scinder un tableau, il suffit de le parcourir et d'utiliser un
modulo pour recuperer part exemple les clefs 0, 2, 4..., puis 1, 3,
5... puis 2, 5, 7...et les remettre dans ton nouveau tableau.
Apres, se promener dedans devient tres simple grace aux fonctions in_array(), array_search() etc...