JeuWeb - Crée ton jeu par navigateur
Lecture de fichier - Version imprimable

+- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org)
+-- Forum : Discussions, Aide, Ressources... (https://jeuweb.org/forumdisplay.php?fid=38)
+--- Forum : Programmation, infrastructure (https://jeuweb.org/forumdisplay.php?fid=51)
+--- Sujet : Lecture de fichier (/showthread.php?tid=899)

Pages : 1 2


Lecture de fichier - Yoda54 - 03-03-2007

Bonsoir à tous,

J'ai une petite fonction qui me permet de créer un joueur avec nom et prénom dont voici le code:
Code PHP :
<?php 
function creer_perso($nom_fichier, $sup)
{
$monfichier=fopen("$nom_fichier", "r");
$ligne=mt_rand(1, $sup);
for (
$j=1; $j<=$ligne; $j++)
{
$nom=fgets($monfichier);
}
fclose($monfichier);
$nom=utf8_decode($nom);
return
$nom;
}

Mon soucis, c'est qu'une fois dans la BDD, tous les noms se termine par '/r/n'. De plus, chaque nom en tête de fichier se retrouve affublé d'un point d'interrogation en guise de premier caractère. Pourriez-vous m'expliquer d'où viennent ces phénomènes que je puisse les corriges?
Merci d'avance.


RE: Lecture de fichier - genosite - 03-03-2007

je pense que c'est a cause de
Code PHP :
<?php 
$nom
=utf8_decode($nom);
mais je n'en suis pas sur
je vais faire des test


RE: Lecture de fichier - Yoda54 - 03-03-2007

Si c'est bien ça, cela va déplacer mon problème car c'estla solution que j'avais trouvée pour mes problèmes d'affichage des noms et prénoms :toilette:


RE: Lecture de fichier - genosite - 03-03-2007

Je ne vois pas de problem e

http://lwdev4.free.fr/jeux/test/test1.php


RE: Lecture de fichier - genosite - 03-03-2007

esque c'est possible d'avoire le reste du code


RE: Lecture de fichier - Raoull - 03-03-2007

Les "/r/n'" sont les retours chariot + retour à la ligne (LR + LF) en bout de chaque ligne de ton fichier. Pour t'en débarrasser, suffit d'enlever les 2 dernier caractères de $nom.
Mais je pense que des fonctions de fiochier peuvent récupérer le contenu sans ces caratères spéciaux. Mais je l'ai pas vraiement en tête la...

Mais pourquoi ne pas enregistré tous tes noms, séparés simplement par des virgules.
Tu lis le fichier d'un coup, tu fais un split sur les virgules pour avoir un tableau de tous tes noms, et tu récupère directement la ligne du tableau que tu veux.

A mon avis c'est aussi rapide que parcourir toutes les lignes du fichier dans ta boucle.

Et pourquoi utiliser un fichier pour faire ca d'ailleurs ?


RE: Lecture de fichier - Yoda54 - 03-03-2007

Voici le reste du code :
Code PHP :
<?php 
// Remplissage de la table équipe
$nom_pdt=creer_perso("Names.txt", 5014);
$nom_ds=creer_perso("Names.txt", 5014);
$prenom_pdt=creer_perso("Firstnames.txt", 1106);
$prenom_ds=creer_perso("Firstnames.txt", 1106);
$equipe=creer_equipe("Equipes.txt", 56);
$initiales=creer_equipe("Initiales.txt", 13);
$equipe=$initiales . ' ' . $equipe;
$div=$_POST['niveau'].'.'.$i;
mysql_query("INSERT INTO equipes VALUES('', '$equipe', '$nom_pdt', '$prenom_pdt', '$nom_ds', '$prenom_ds', 'inconnu', 0, '$div', 'Gymnase municipal', 100, 80, 0, 0, 0, 0, 0, 1)") or die('SQL_admin 8 : '.mysql_error());

Mais je précise, avec cette fonction, je n'ai pas de problème à l'affichage en ce qui concerne les '/r/n', ils ne sont présent que dans la BDD. En revanche le point d'interrogation, lui apparait bel et bien à l'affichage.


RE: Lecture de fichier - Yoda54 - 03-03-2007

Raoull a écrit :Les "/r/n'" sont les retours chariot + retour à la ligne (LR + LF) en bout de chaque ligne de ton fichier. Pour t'en débarrasser, suffit d'enlever les 2 dernier caractères de $nom.
Mais je pense que des fonctions de fiochier peuvent récupérer le contenu sans ces caratères spéciaux. Mais je l'ai pas vraiement en tête la...

Mais pourquoi ne pas enregistré tous tes noms, séparés simplement par des virgules.
Tu lis le fichier d'un coup, tu fais un split sur les virgules pour avoir un tableau de tous tes noms, et tu récupère directement la ligne du tableau que tu veux.

A mon avis c'est aussi rapide que parcourir toutes les lignes du fichier dans ta boucle.

Et pourquoi utiliser un fichier pour faire ca d'ailleurs ?

J'avais essayé d'enlever les deux derniers caractères, mais du coup, les deux derniers caractères du nom disparaissaient également. Passer par un tableau, pourquoi pas, il faudra que je regarde ce que cela donne question performance avec un tableau de plus de 5000 entrées.
Pour l'utilisation du fichier, c'est parce que j'utilise cette fonction dans plusieurs fichiers différents mais également parce que les fichiers noms peuvent également être modifiés par des tiers qui n'ont pas accès aux fichiers du jeux.


RE: Lecture de fichier - genosite - 03-03-2007

c'est un probleme de format text a mon avis


RE: Lecture de fichier - Yoda54 - 03-03-2007

Mais champ nom et prénom sont en 'UTF8_bin' et mon fichier .txt est sauvegardé qu format 'UTF8'.
Ce n'est pas forcément la bonne méthode mais je reconnais que je n'ai pas compris tout ce que j'ai pu lire sur le sujet des formats.