Question sur la gestion des fichiers

Eléphant du PHP | 68 Messages

01 sept. 2006, 12:35

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

Eléphant du PHP | 377 Messages

01 sept. 2006, 13:17

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.
Petit scarabée deviendra grand

Eléphant du PHP | 68 Messages

01 sept. 2006, 18:05

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 ?

Mammouth du PHP | 684 Messages

01 sept. 2006, 18:34

Salut.
<?php
$tab_fichier = file('mon_fichier.txt');
echo 'Le nombre de ligne est de : ', count($tab_fichier), '<br />';
?>
Zigz4g

Eléphant du PHP | 68 Messages

01 sept. 2006, 22:56

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>';

   }
}
?>

Eléphant du PHP | 377 Messages

01 sept. 2006, 23:05

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 :

Code : Tout sélectionner

<input type="text" name="reponse" value="Le ping pong ">
tu n'as pas utilisé rtrim(), tu as donc un retour chariot, donc une erreur
Petit scarabée deviendra grand

Eléphant du PHP | 68 Messages

01 sept. 2006, 23:26

sa ne marche pas mais sa a supprimer le retour a la ligne

Eléphant du PHP | 377 Messages

02 sept. 2006, 12:26

non, regarde le code source de ta page : le retour à la ligne est toujours la :wink:
Petit scarabée deviendra grand

Eléphant du PHP | 337 Messages

03 sept. 2006, 05:07

Bonjour !

Question subsidiaire à celle-ci : si au lieu de file() on utilie fgets($fichier,4096) doit-on également utiliser rtrim dans ce cas ?

Eléphant du PHP | 68 Messages

03 sept. 2006, 08:06

J'ai réussi mais par contre comment on peut faire pour enlever les espaces ?

Mammouth du PHP | 684 Messages

03 sept. 2006, 10:31

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.
Zigz4g