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();
}
?>
@+
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]<?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);
}
?>[/php]
Personnellement j'utiliserais plutot PDO et ferai ainsi
[php]
<?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();
}
?>[/php]
@+