[RESOLU] Ecrire dans plusieurs fichiers txt

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 : [RESOLU] Ecrire dans plusieurs fichiers txt

Re: Ecrire dans plusieurs fichiers txt

par tapi » 06 juin 2013, 10:12

Merci pour ces réponses. En m'inspirant de tout ça, j'ai réécris ces lignes :
<?php
//variables de connexion ?a base
 //$host="localhost";
 $dbhost = 'localhost';
$dbuser = 'root';
$dbpass = '';
$conn = mysql_connect($dbhost, $dbuser, $dbpass) or die                      ('Error connecting to mysql');
$dbname = 'intrade';
mysql_select_db($dbname);
$query = mysql_query("SELECT DISTINCT agcepo FROM structure ORDER by agcepo") or die (mysql_error()); 
while($array = mysql_fetch_assoc($query)){
	 $agcepo=$array['agcepo'];
	 $departement_file = fopen("mails_".$agcepo.".txt", "w");
	$query1 = mysql_query("SELECT DISTINCT libelle, agcepo FROM mails WHERE agcepo='$agcepo' ORDER by agcepo") or die (mysql_error()); 
	 	while($array1 = mysql_fetch_assoc($query1)){
	 		print $array1['agcepo']." - ";
      print $array1['libelle'];
      echo ";";
      echo "<br>";
	 	 fputs($departement_file,$array1['libelle'].";");
	 //fclose($departement_file);
}
}
?>

Re: Ecrire dans plusieurs fichiers txt

par moogli » 05 juin 2013, 21:58

salut,

le fopen doit être avant le second while. la tu ouvre le fichier à chaque while c'est pas utile.
seul le fputs reste dans le while du milieux.

il te manque un fclose.

perso je modifierais ton code ainsi
<?php

//variables de connexion ?a base
//$host="localhost";
$dbhost = 'localhost';
$dbuser = 'root';
$dbpass = '';
$conn = mysql_connect($dbhost, $dbuser, $dbpass) or die                      ('Error connecting to mysql');
$dbname = 'intrade';
mysql_select_db($dbname);
$query = mysql_query("SELECT DISTINCT agcepo FROM structure ORDER by agcepo"));
while ($array = mysql_fetch_assoc($query)) {
    $query1 = mysql_query("SELECT DISTINCT libelle, po FROM mails WHERE po='$po' ORDER by po");
    $str = '';
    while ($array1 = mysql_fetch_assoc($query1)) {
        $str .= $array1['libelle'] . ';' . PHP_EOL;
    }
    file_put_contents('mails_' . $array['agcepo'] . '.txt', $str);
}
?>
Personnellement j'utiliserais plutot PDO et ferai ainsi
<?php
try {
    // connexion
    $conn = new PDO('mysql:host=localhost;dbname=intrade', 'root', '');
// prépare la requete select pour "optimiser" un peu le script.
    $query1 = $conn->prepare('SELECT DISTINCT libelle, po FROM mails WHERE po=:po ORDER by po');

    $query = $conn->query('SELECT DISTINCT agcepo FROM structure ORDER by agcepo');
    while ($array = $query->fetch(PDO_FETCH_ASSOC)) {
        $query1->bindValue(':po', $array['agcepo']);
        $query1->execute();
        $fileName = 'mails_' . $array['agcepo'] . '.txt';
        while ($array1 = $query1->fetch(PDO_FETCH_ASSOC)) {
            file_put_contents($fileName, $array1['libelle'] . ';' . PHP_EOL, FILE_APPEND | LOCK_EX);
        }
        $query1->closeCursor();
    }
    $query->closeCursor();
} catch (Exception $e) {
    // a personnaliser
    echo 'Erreur SQL : ' . $e->getMessage() . '<br />' . $e->getTraceAsString();
}
?>
@+

Ecrire dans plusieurs fichiers txt

par tapi » 05 juin 2013, 21:27

Bonjour,
J'ai une base avec deux tables. Dans la première table il y a deux colonnes , une colonne "identifiant" et une autre "libelle".
Il y a une dizaine d'identifiants et chaque identifiant a plusieurs libelles. Je souhaite créer un fichier txt par identifiant et le remplir avec les libellés correspondants. La deuxième table ne contient que des identifiants.
J'arrive à créer mes fichiers, mais chacun n'est rempli qu'avec un seul enregistrement.
Voilà le code, auriez-vous une idée ?
Merci
<?php
//variables de connexion ?a base
 //$host="localhost";
 $dbhost = 'localhost';
$dbuser = 'root';
$dbpass = '';
$conn = mysql_connect($dbhost, $dbuser, $dbpass) or die                      ('Error connecting to mysql');
$dbname = 'intrade';
mysql_select_db($dbname);
$query = mysql_query("SELECT DISTINCT agcepo FROM structure ORDER by agcepo") or die (mysql_error()); 
while($array = mysql_fetch_assoc($query)){
	 $po=$array['agcepo'];
	$query1 = mysql_query("SELECT DISTINCT libelle, po FROM mails WHERE po='$po' ORDER by po") or die (mysql_error()); 
	 	while($array1 = mysql_fetch_assoc($query1)){
	 		print $array1['po']." - ";
      print $array1['libelle'];
      echo ";";
      echo "<br>";
	 $departement_file = fopen("mails_".$po.".txt", "w");
	 fputs($departement_file,$array1['libelle'].";");
}
}
?>