Données d'une base écrite dans un fichier texte avec php

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Données d'une base écrite dans un fichier texte avec php

par albat » 15 mars 2008, 15:30

Modération :
ommadawn, si ta question est résolue, pense à ajouter le tag [Résolu]
pour indiquer aux personnes qui voudront consulter ce sujet qu'il contient une solution.
Tu peux réaliser cette opération en cliquant sur le bouton Image en haut à gauche de ce sujet.
;)

par ommadawn » 15 mars 2008, 15:00

Alors voilà mon code :
<?php
$rsInscritsNews = mysql_query("SELECT * FROM ajoutmail") or die ('Erreur de sélection des adresses mail.');
?>
<?php
	$content = '';
	while ($row_rsInscritsNews = mysql_fetch_assoc($rsInscritsNews)) 
  	$content .= $row_rsInscritsNews['email'].', '; 
  ?>

  <?php 
 	$Fnm="mailinglist.txt";
	$inF=fopen($Fnm,"w");
	fwrite($inF,$content);
	fclose($inF); 
  ?>
C'est bon tout fonctionne ! Cela m'a permis d'apprendre ce qu'est la concaténation !

Mille mercis.

par Hywan » 15 mars 2008, 02:26

Déjà, on peut apporter une petite correction à ton premier code. Il deviendrait :
<?php 
$rsInscritsNews = @mysql_query('SELECT * FROM ajoutmail') or die('Erreur de sélection des adresses mail.'); 

while ($row_rsInscritsNews = mysql_fetch_assoc($rsInscritsNews))  
    echo $row_rsInscritsNews['email'] . ', ';
Préfères utiliser mysql_fetch_assoc plutôt que *_array, cette fonction est plus rapide et moins coûteuse en espace mémoire (2 fois moins, ce n'est pas négligeable). Pense également à gérer les erreurs provoquées par mysql_query. Enfin, ton auto-incrémentation de ta variable ne sert à rien (tu aurais même une erreur je pense ...).

Ensuite, je vois que tu sais comment écrire dans un fichier. Dans la documentation, on peut voir l'exemple simple avec fwrite() qui nous montre ceci : 
<?php
$filename = 'test.txt';
$somecontent = "Ajout de chaîne dans le fichier \n";

// Assurons nous que le fichier est accessible en écriture
if (is_writable($filename)) {

    // Dans notre exemple, nous ouvrons le fichier $filename en mode d'ajout
    // Le pointeur de fichier est placé à la fin du fichier
    // c'est là que $somecontent sera placé
    if (!$handle = fopen($filename, 'a')) {
        echo "Impossible d'ouvrir le fichier ($filename)";
        exit;
    }

    // Ecrivons quelque chose dans notre fichier.
    if (fwrite($handle, $somecontent) === FALSE) {
        echo "Impossible d'écrire dans le fichier ($filename)";
        exit;
    }

    echo "L'écriture de ($somecontent) dans le fichier ($filename) a réussi";

    fclose($handle);

} else {
echo "Le fichier $filename n'est pas accessible en écriture.";
}
On note que fwrite prend 2 paramètres : le premier étant le descripteur de fichier (file descriptor ou la variable $handle dans l'exemple) qui représente un « lien », un pointeur vers la ressource qui est un fichier, et le second paramètre, le contenu à écrire.
Il suffit donc, à la place de faire un echo $row_rsInscritsNews['email'] . ', ', de l'enregistrer temporairement dans une variable (ajout successif par concaténation). Tu auras donc ton contenu qu'il ne te restera qu'à écrire dans ton fichier !

Je te donne le début :
$content = '';
while($row = mysql_fetch_assoc($query))
    $content .= $row['email'] . ', ';

// et on écrit dans le fichier la variable $content
// je te laisse le clavier ;-)

par ommadawn » 15 mars 2008, 01:55

Oui je n'ai fait que de petit bout de code jusque là donc la catégorie débutant est plus que justifié.

J'ai revu mon code et ceci fonctionne
<?php
$rsInscritsNews = mysql_query("SELECT * FROM ajoutmail");
?>
<?php
	while ($row_rsInscritsNews = mysql_fetch_array($rsInscritsNews)) 
  	echo ($row_rsInscritsNews['email'].', '); 
  	$row_rsInscritsNews++;
  ?>
Maintenant je voudrai metter ce que me donne cette boucle dans un fichier txt et pour ça j'ai :
  <?php 
 	$Fnm="mailinglist.txt";
	$inF=fopen($Fnm,"w");
	fwrite($inF,$texte);
	fclose($inF); 
  ?>
C'est le lien entre les deux que je ne saisi pas...

Re: Données d'une base écrite dans un fichier texte avec php

par Hywan » 15 mars 2008, 00:17

Bonsoir,
peut-être pourriez-vous m'aider ?
Ça peut se faire ;-)
Avec Dreamweaver et php je fais une région répétée pour afficher ces adresses mail sous forme de liste dans un navigateur sans mise en forme particulière. Pour cela Dreamweaver utilise do...while.
Allons bon, tu démarres les hostilités directement toi. Dreamweaver, aïe aïe aïe. Si tu te dévoues à devenir développeur, il va falloir vite laisser tomber Dreamweaver car il fait sûrement des choses bien (le café, prendre de la RAM etc.), mais il ne fait pas de PHP, ça non.

Je te conseille d'apprendre le PHP, ça te facilitera la vie. Car au vue de ta demande, la seule réponse qu'on peut t'apporter c'est de te filer le code tout chaud, et ça, on n'aime pas ;-).

Après relecture (et suppression de 3 paragraphes), je te pose d'abord quelques questions pour évaluer ton niveau (ne pas prendre 1h pour expliquer quelque chose que tu connais déjà ...) : est-ce que tu vois pourquoi une boucle do-while pose problème lors d'un parcours de base de données ? Est-ce que tu as déjà programmé avant ou pas ? Sans logiciel intermédiaire (si on peut appeler ça programmer ...) ?

:)

Données d'une base écrite dans un fichier texte avec php

par ommadawn » 14 mars 2008, 23:55

Bonsoir,
peut-être pourriez-vous m'aider ?

J'ai dans une base MySQL une table dans laquelle sont enregistrés des adresses e-mail.
Avec Dreamweaver et php je fais une région répétée pour afficher ces adresses mail sous forme de liste dans un navigateur sans mise en forme particulière. Pour cela Dreamweaver utilise do...while.
Je voudrais savoir s'il est possible de faire de cette région répétée une variable pour l'utiliser dans un autre script php données à écrire ddans un fichier texte ?

Je suis pas sûr que ce soit la bonne manière de procéder. En gros ; j'ai des données dans une base et je veux que c'est données soit inscrite dans un fichier texte (.txt) sur mon serveur en utilisant php.

Un peu tordu tout ça, j'avoue.

Merci pour vos réponses.