Précédent   Forum des professionnels en informatique > PHP > Langage > Fichiers
Fichiers Forum d'entraide sur les fichiers avec PHP. Avant de poster -> FAQ fichiers et Sources fichiers
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 31/05/2007, 22h06   #1
Invité de passage
 
Philippe
Inscription : mai 2004
Messages : 10
Détails du profil
Informations personnelles :
Nom : Philippe
Localisation : France

Informations forums :
Inscription : mai 2004
Messages : 10
Points : 4
Points : 4
Par défaut Récuperer une valeur dans un fichier texte

Bonsoir
vu que mes compétence PHP sont largement inférieures à ma demande, je me permet de faire appel aux cerveaux présent ici

Soit un fichier nommé docid.dtb, fichier texte avec cette structure
type||id||status

* type correspond au type du document
* id correspond au numéro d'identification du document
* status correspond au status(activé/désactivé/supprimé) du document.

status peut prendre les valeurs
activé ---> a
désactivé ---> i
supprimé ---> d

type peut prendre les valeurs
article ---> ar
news ----> ne
faq ---> fa
liens ---> li
newsletter ---> nl

Id étant le N° de page que je veux appeller.

Comment pourrais je en php récuperer de manière aléatoire un id pour afficher une page, sachant que le lien final doit ressembler à

http://www.sucrepop.com/articles.php?lng=fr&pg=819

le but donc, piocher aléatoirement dans le fichier docid.dtb un ID actif permettant d'afficher un article, news ou autre au hasard (qu'est ce que je ce que ne ferais pas pour faire découvrir ma musique ;o)

merci d'avance
sucrepop est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/05/2007, 23h48   #2
Membre émérite
 
Avatar de viviboss
 
Inscription : août 2006
Messages : 943
Détails du profil
Informations personnelles :
Âge : 30
Localisation : France, Gard (Languedoc Roussillon)

Informations forums :
Inscription : août 2006
Messages : 943
Points : 941
Points : 941
....A froid comme ca d'un coup sans trop me chopper une crampe au cerveau, je dirai :

Un tableau associatif du style :

Code :
1
2
3
4
 
$tab['id']['type']['statut'];
//Je suppose qu'un article quelqu'il soit est composé comme ca.....
//Donc une ligne du tableau correspond à un article précis
Sur ce tableau, on rajoute une colonne qui qui permet d'avoir un numéro entre 0 et x, x étant le nombre totale d'article, donc :

Je reprend mon tableau :

Code :
1
2
3
4
5
6
7
8
 
//structure du tableau associatif :
$tab[]['id']['type']['statut'];
 
//Je suppose que le tout est issue d'une BDD, donc :
while($row=$res->fetch_assoc()){
$tab[][$row['id']][$row['type']]=$row['statut'];
}
Ensuite, on va utiliser la fonction rand, qui permet de sortir un chiffre au hasard :

Donc je continue :

Code :
1
2
3
4
5
6
 
$tabkey=array_keys($tab);
$lastkey=max($tabkey);
 
$chiffre=rand(0,$lastkey);
//$chiffre est un nombre pris au hasard entre 0, début du tableau, et $lastkey, fin du tableau....
Et voilà.... Bon faut bidouiller le tableau, mais le le concept est là... Et sans freeze su cerveau !!!! Tu auras compris que la fonction principale est rand, donc après tu peux trouver d'autres méthodes...

Notamment, pour la BDD essaye déjà de sélectionner les articles activé (ca enlève un paramètre du tableau : statut)....

Bonne chance !!!
__________________
Veni Vidi Vici
-------------------------
Mes articles : developpez.com ou bien vbview.net
-------------------------
Et SURTOUT ne pas oublier la bible PHP : --> php_manual_fr.chm!!!
Et aussi : --> pear_manual_fr.chm!!!

Ou encore : --> Les tutoriaux & cours PHP de Développez.com
-------------------------
viviboss est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/06/2007, 12h16   #3
Invité de passage
 
Philippe
Inscription : mai 2004
Messages : 10
Détails du profil
Informations personnelles :
Nom : Philippe
Localisation : France

Informations forums :
Inscription : mai 2004
Messages : 10
Points : 4
Points : 4
Merci pour la réponse

En fait, il n'y a pas une ligne par article, c'est le double || qui permet de faire la séparation.
Et non, ce n'est pas extrait d'une bdd.Chaque création d'article incrémente d'un l'ID dans le fichier texte.

Du coup, je ne pense pas pouvoir ajouter une numérotation à ce tableau pour ensuite piocher dans cette numérotation, je ne peux pas toucher àla structure du fichier texte
sucrepop est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/06/2007, 14h35   #4
Membre émérite
 
Avatar de viviboss
 
Inscription : août 2006
Messages : 943
Détails du profil
Informations personnelles :
Âge : 30
Localisation : France, Gard (Languedoc Roussillon)

Informations forums :
Inscription : août 2006
Messages : 943
Points : 941
Points : 941
...Si, tu peux si tu considère un article par ligne ?

Meme si c'est à la suite, il y a possiblité pour chopper ce que tu veux avec un expression rationnel, et de compter les occurences....
__________________
Veni Vidi Vici
-------------------------
Mes articles : developpez.com ou bien vbview.net
-------------------------
Et SURTOUT ne pas oublier la bible PHP : --> php_manual_fr.chm!!!
Et aussi : --> pear_manual_fr.chm!!!

Ou encore : --> Les tutoriaux & cours PHP de Développez.com
-------------------------
viviboss est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/06/2007, 12h15   #5
Invité de passage
 
Philippe
Inscription : mai 2004
Messages : 10
Détails du profil
Informations personnelles :
Nom : Philippe
Localisation : France

Informations forums :
Inscription : mai 2004
Messages : 10
Points : 4
Points : 4
en fait le fichier texte a cette tête
type||id01||status||type||id02||status||type||id03||status||type||id04||status||
type||id05||status|| type||id06||status|| type||id07||status|| type||id08||status||

sur la même ligne j'ai plusieurs articles.
sucrepop est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/06/2007, 12h24   #6
Expert Confirmé
 
Avatar de trotters213
 
Inscription : janvier 2005
Messages : 2 572
Détails du profil
Informations personnelles :
Âge : 26
Localisation : France, Gard (Languedoc Roussillon)

Informations forums :
Inscription : janvier 2005
Messages : 2 572
Points : 2 605
Points : 2 605

Si tu es sur d'avoir toujours cette structure "type, id, status" alors tu peux utiliser la fonctions explode() pour récupérer tes valeurs dans un tableau puis faire un rand sur le nombre de case du tableau afin de tomber sur id aléatoire.

Si tu veux aller plus loin, tu peux faire un modulo 3 (puisque tu as 3 types de données dans ta structure) afin de répartir les valeurs de ce tableau dans 3 tableaux différents et tu te retrouveras avec un tableau contenant les "types", un contenant les "id" et un derniers contenant les "statuts".
Tu n'as plus, alors qu'à faire ton random sur le tableau des id.
__________________
Pensez au tag
Les règles du Forum

Dev. Web : FAQ (X)HTML/CSS | Tutos (X)HTML | Tutos CSS

PHP : FAQ PHP | Tutos PHP | Benchmark PHP 5

SQL : Cours SQL
trotters213 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/06/2007, 15h01   #7
Membre émérite
 
Avatar de viviboss
 
Inscription : août 2006
Messages : 943
Détails du profil
Informations personnelles :
Âge : 30
Localisation : France, Gard (Languedoc Roussillon)

Informations forums :
Inscription : août 2006
Messages : 943
Points : 941
Points : 941
...c'est vrai j'avais pas pensé au Explode()

Bof, tu te rend compte qe tu as 2 Nimois pour te répondre ? Heureusment que la Féria est loin, car sinon tu aurais pu douter de nos compétence
__________________
Veni Vidi Vici
-------------------------
Mes articles : developpez.com ou bien vbview.net
-------------------------
Et SURTOUT ne pas oublier la bible PHP : --> php_manual_fr.chm!!!
Et aussi : --> pear_manual_fr.chm!!!

Ou encore : --> Les tutoriaux & cours PHP de Développez.com
-------------------------
viviboss est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 11h19.


 
 
 
 
Partenaires

Hébergement Web