Page 1 sur 1

Fichier .txt

Posté : 12 janv. 2009, 16:40
par dunbar
Bonjour,
Je crée un fichier .txt jusque là pas de soucis
$sql = 'SELECT id_lm, adresse FROM ampli_lm';
$result = mysql_query($sql) or die('Ne trouve pas tout les données : ' .
    mysql_error());
while ($row = mysql_fetch_array($result)) {
    $generation = '&' . $row['id_lm'] . '&' . $row['adresse'] . '&';


    $f = 'Reseau_600_mhz.txt';
    $text = $generation;
    $handle = fopen($f, "w");

    // regarde si le fichier est accessible en écriture
    if (is_writable($f)) {
        // Ecriture
        if (fwrite($handle, $text) === false) {

            echo 'Impossible d\'écrire dans le fichier ' . $f . '';
            exit;
        }


        fclose($handle);

    } else {
        echo 'Impossible d\'écrire dans le fichier ' . $f . '';
    }
}
echo 'Génération du fichier terminé avec succés pour le télécharger merci de <a href="' .
    $f . '">cliquez ici</a>';
Par contre je ne comprend pas pourquoi il n'écrie qu'une seule ligne alors que ma table en comprend plus de 500 :?:

D'avance merci

Posté : 12 janv. 2009, 16:55
par blof
Salut,

fopen(), extrait du manuel :
'w' Ouvre en écriture seule ;
place le pointeur de fichier au début du fichier et réduit la taille du fichier à 0.
Si le fichier n'existe pas, on tente de le créer.
fopen() est à l'intérieur de la boucle "while".

Le fichier est donc "écrasé" à chaque tour.
Il ne contient que la dernière occurrence de $generation.

Posté : 12 janv. 2009, 23:56
par dunbar
Ok imaginons que le soucis viennent de là j'ai modifier ma méthode comme ceci
include '../include/config.php';
$sql = 'SELECT id_lm, adresse FROM ampli_lm';
$result = mysql_query($sql) or die('Ne trouve pas tout les données : ' .
    mysql_error());
$a = array();
$b = array();
while ($row = mysql_fetch_array($result)) {

    $id_lm = $row['id_lm'];
    $adresse = $row['adresse'];
    array_push($a, $id_lm);
    array_push($b, $adresse);
}


$f = 'Reseau_600_mhz.txt';
$handle = fopen($f, 'w');
$generation = '&' . $a . '&' . $b . '&';

// regarde si le fichier est accessible en écriture
if (is_writable($f)) {
    // Ecriture
    if (fwrite($handle, $generation) === false) {

        echo 'Impossible d\'écrire dans le fichier 1' . $f . '';
        exit;
    }


    fclose($handle);

} else {
    echo 'Impossible d\'écrire dans le fichier ' . $f . '';
}

echo 'Génération du fichier terminé avec succés pour le télécharger merci de <a href="' .
    $f . '">cliquez ici</a>';
Alors là ci je fais un print_r() j'ai mes données mais par contre dans mon fichier j'ai rien, là je comprend plus :twisted:

Posté : 13 janv. 2009, 00:04
par Ryle
Tu n'as rien dans le fichier ? où tu as juste "&Array()&Array()&" ?

Dans ton fichier, tu vas ecrire le contenu de $generation. Assure toi donc juste que ce contenu correspond bien à ce que tu souhaites avoir dans ton fichier, fwrite() fera le reste :)

Posté : 13 janv. 2009, 00:05
par SpintroniK
Normal, $a et $b sont des tableaux et tu les concatène avec une chaîne de caractères.
De plus ton fopen doit être avant le while alors que le fwrite doit être dedans et le fclose après.
Et à mon avis tu aurais du garder
    $generation = '&' . $row['id_lm'] . '&' . $row['adresse'] . '&'; 

Posté : 13 janv. 2009, 00:21
par dunbar
Normal, $a et $b sont des tableaux et tu les concatène avec une chaîne de caractères.
De plus ton fopen doit être avant le while alors que le fwrite doit être dedans et le fclose après.
Et à mon avis tu aurais du garder
    $generation = '&' . $row['id_lm'] . '&' . $row['adresse'] . '&'; 
J'ai créer un tableau pour sortir mes variable de ma boucle WHILE parce ci je place fopen ds ma boucle j'ai une erreur il ne sais pas écrire ds le fichier

Posté : 13 janv. 2009, 00:23
par SpintroniK
C'est pas ton fopen qui doit être dans la boucle, mais le fwrite, non ?

Posté : 13 janv. 2009, 00:33
par dunbar
Bon ok ça fonctionne, je testais un nv editeur et cette :tir2: ne rafraichit pas