Page 1 sur 1

enregistrer le resultat d'une boucle while dans .txt

Posté : 14 déc. 2006, 00:22
par regne
bonjour,


En faites j'ai une page qui affiche le resultat d'une requete dans ma bdd, et j'aimerais enregistrer ce resultat dans un fichier txt.

le code de ma page :
Recapitulatif de votre pré-commande :<br><br><?php

//Indentifiants de connexion à la base de données.
require("config.inc.php");

//Connexion à la base de données.
mysql_connect($host,$username,$password);
mysql_select_db($bdd_name);


// affichage des produits

$reponse_liste_produits = mysql_query("SELECT * FROM produits ORDER BY nom")or die(mysql_error()) ; // Requête SQL


// On fait une boucle pour lister tout ce que contient la table :

while ($liste_produits = mysql_fetch_array($reponse_liste_produits) )
{
$id=$liste_produits['id'];

if (isset($_POST["commande_$id"])) 
{

    echo 'produit : '.$liste_produits['nom'];
    echo"<br>";
    echo 'prix unitaire : '.$liste_produits['prix'].' €';
    echo"<br>";
    echo 'Quantité : '.$_POST["qte_$id"];
    echo"<br>";
    $total= $_POST["qte_$id"]* $liste_produits['prix'];
    echo 'total : '.$total.' €';
    echo"<br><br>";
}//fin if


}//fin while

?>
si quelqu'un pouvait m'aider...

merci

Posté : 14 déc. 2006, 00:27
par Truc
Salut,
Regarde du coté des fonction fopen(), fwrite() (ou autre) :)

Posté : 14 déc. 2006, 00:31
par regne
en faites j'ai trouver un code que je pense pouvoir adapter.
<?
$fp = fopen("../../fichier.txt","r+"); // 1.On ouvre le fichier en lecture/écriture
fseek($fp,0);                     // 4.On se place en début de fichier
fputs($fp,$resultat_while);            // 5.On écrit dans le fichier l
fclose($fp);                      // 6.On ferme le fichier
print("$resultat_while");    // 7.On affiche le resultat
?>
mais mon probleme c'est que je ne sais pas comment creer ma variable $resultat_while ...

Posté : 14 déc. 2006, 00:48
par Truc
Tu reprend la boucle et au lieu de "echo" tu affectes le contenu à une variable qui sera $resultat_while.

echo 'produit : '.$liste_produits['nom'];
echo"<br>";

devient :
$resultat_while  = 'produit : '.$liste_produits['nom'];
$resultat_while .="<br>"; // ** note le poin avant le égal pour concaténer 
** revient à faire
$resultat_while = $resultat_while . "<br>";

Posté : 14 déc. 2006, 00:49
par regne
merci pour ta reponse je vais tester ca demain matin .

Posté : 14 déc. 2006, 01:30
par titerm
Tu peux aussi laisser tes echo et tu mets avant ton while un ob_start()
et après le while un $resultat_while = ob_get_clean();

Posté : 14 déc. 2006, 11:01
par regne
salut,

merci pour vos reponses.

alors pour la technique de turc le probleme, c que je me retrouve avec une seul reponse dans ma boucle

je m'explique si je fait echo $resultat_while;

Code : Tout sélectionner

Recapitulatif de votre pré-commande : produit : BALNÉOTHÉRAPIE prix unitaire : 38 € Quantité : 12 total : 456 €
alors qu'en faite je dois me retrouver avec

Code : Tout sélectionner

Recapitulatif de votre pré-commande : produit : BALNÉOTHÉRAPIE prix unitaire : 38 € Quantité : 12 total : 456 € produit : DOUCHE AU JET prix unitaire : 25 € Quantité : 1 total : 25 € produit : MASSAGE AUX HUILES ESSENTIELLES prix unitaire : 75 € Quantité : 1 total : 75 €
pour la technique de titerm je ne sais pas comment ecrire sa fonction ob start()...

Posté : 14 déc. 2006, 11:31
par regne
Bon j'ai fait ca :
<?php

//Indentifiants de connexion à la base de données.
require("config.inc.php");

//Connexion à la base de données.
mysql_connect($host,$username,$password);
mysql_select_db($bdd_name);

$resultat_while='Recapitulatif de votre pré-commande :<br><br>'; 

// affichage des produits

$reponse_liste_produits = mysql_query("SELECT * FROM produits ORDER BY nom")or die(mysql_error()) ; // Requête SQL


// On fait une boucle pour lister tout ce que contient la table :

while ($liste_produits = mysql_fetch_array($reponse_liste_produits) )
{
$id=$liste_produits['id'];

if (isset($_POST["commande_$id"])) 
{

   $resultat_while.= 'produit : '.$liste_produits['nom'];
    $resultat_while.= "<br>";
    $resultat_while.=  'prix unitaire : '.$liste_produits['prix'].' €';
    $resultat_while.= "<br>";
  $resultat_while.=  'Quantité : '.$_POST["qte_$id"];
    $resultat_while.= "<br>";
    $total= $_POST["qte_$id"]* $liste_produits['prix'];
    $resultat_while.=  'total : '.$total.' €';
   $resultat_while.= "<br><br>";
}//fin if


}//fin while
 echo $resultat_while;
?>


et ca a l'aire de marcher...

bon alors mon nouveau probleme :

Warning: touch() [function.touch]: Unable to create file nom_du_fichier.txt because Permission denied in /var/www/vhosts/institut-beaute-menton.fr/httpdocs/includes/produits_recap.php on line 45

alors j'arrive a ecrire dans le fichier texte, mais j'ai rajouter la creation du fichier, et la ca marche pas.
le dossier commande est en chmod 777

j'utilise :
//ecriture dans fichier texte

touch("nom_du_fichier.txt"); // Ceci créera le fichier texte nom_du_fichier.txt
$fp = fopen("../commande/mail.txt","r+"); // 1.On ouvre le fichier en lecture/écriture
fseek($fp,0);                     // 4.On se place en début de fichier
fputs($fp,$resultat_while);            // 5.On écrit dans le fichier
fclose($fp);                      // 6.On ferme le fichier

quelqu'un a une idée ?

édit : j'ai pas renseigner le chemin jusqu'a commande --> touch("nom_du_fichier.txt") --> touch("../commande/nom_du_fichier.txt")