Page 1 sur 1
Question sur la gestion des fichiers
Posté : 01 sept. 2006, 12:35
par guillaume40
BOnjour,
est-ce possible de lire dans un fichier texte ligne pa ligne ou on choisit la ligne a visualiser et méme savoir le nombre de ligne total pour pouvoir faire un rand() si c'est possible comment merci
Posté : 01 sept. 2006, 13:17
par Shrell
file() est ton ami

:
array file ( string filename [, int use_include_path [, resource context]] )
file() est identique à file_get_contents(), hormis le fait que file() retourne le fichier filename dans un tableau. Chaque élément du tableau correspond à une ligne du fichier, et les retour-chariots sont placés en fin de ligne.
Note : Chaque élément du tableau résultat contiendra la nouvelle ligne de fin de chaîne. Il faudra donc utiliser rtrim() sur cette valeur pour la supprimer.
Posté : 01 sept. 2006, 18:05
par guillaume40
LOL merci
En plus je l'avai vu sa sur php.net et j'avai vu que sa afficher les lignes avec le foreach mais j'avai carrément zapper
Merci beacoup
mais pour savoir combien ya de ligne au total comment on fait ?
Posté : 01 sept. 2006, 18:34
par zigz4g
Salut.
<?php
$tab_fichier = file('mon_fichier.txt');
echo 'Le nombre de ligne est de : ', count($tab_fichier), '<br />';
?>
Posté : 01 sept. 2006, 22:56
par guillaume40
maintenant sa marche tout bien sauf un truc
http://desbieys.guillaume.free.fr/quizz/index.php
Cliquer juste sur valider ( la réponse est dans le champ du formulaire)
Et sa dit mauvaise réponse alors que c'est pareil
____
<?php
session_start();
if(empty($_GET['id']))
{
if(empty($_SESSION['point']))
{
$_SESSION['point'] = 0;
}
$fichier = file('database.txt');
$ligne_total = count($fichier);
$ligne_tire = rand(1, $ligne_total);
$ligne_a = $fichier[$ligne_tire];
$reponse = explode(" \ ", $ligne_a);
echo 'Vos point(s) : ' . $_SESSION['point'] . '<HR>';
echo 'Questions : ' . $reponse[0] . '<br />';
echo 'Réponse : ' . $reponse[1] . '<br />';
echo '<form action="index.php?id=1" method="POST">
<input type="text" name="reponse" value="'.$reponse[1].'">
<input type="submit" value="Verifier">
</form>';
$_SESSION['solution'] = $reponse[1];
}
if($_GET['id'] == 1 )
{
$reponse2 = $_SESSION['solution'];
$reponse = $_POST['reponse'];
if($reponse == $reponse2)
{
echo 'Bravo vous venez de gagner 1 point ! <br /><HR>';
$_SESSION['point']++;
echo '<a href="index.php">Rejouer</a>';
}
if($reponse != $reponse2)
{
echo 'Mauvaise réponse ! <br />';
echo 'La réponse était ' . $reponse2 . '<br /><HR>';
echo '<a href="index.php">Rejouer</a>';
}
}
?>
Posté : 01 sept. 2006, 23:05
par Shrell
Note : Chaque élément du tableau résultat contiendra la nouvelle ligne de fin de chaîne. Il faudra donc utiliser rtrim() sur cette valeur pour la supprimer.
regarde ton code source :
tu n'as pas utilisé rtrim(), tu as donc un retour chariot, donc une erreur
Posté : 01 sept. 2006, 23:26
par guillaume40
sa ne marche pas mais sa a supprimer le retour a la ligne
Posté : 02 sept. 2006, 12:26
par Shrell
non, regarde le code source de ta page : le retour à la ligne est toujours la

Posté : 03 sept. 2006, 05:07
par finipe
Bonjour !
Question subsidiaire à celle-ci : si au lieu de file() on utilie fgets($fichier,4096) doit-on également utiliser rtrim dans ce cas ?
Posté : 03 sept. 2006, 08:06
par guillaume40
J'ai réussi mais par contre comment on peut faire pour enlever les espaces ?
Posté : 03 sept. 2006, 10:31
par zigz4g
Regarde du côté des regexps.
http://fr.php.net/manual/fr/function.ereg-replace.php
ou plus simplement :
http://fr.php.net/manual/fr/function.str-replace.php.
Dans les deux cas faut regarder la doc pour savoir lequel est le plus rentable.