enregistrer le resultat d'une boucle while dans .txt

Eléphant du PHP | 199 Messages

14 déc. 2006, 00:22

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

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

14 déc. 2006, 00:27

Salut,
Regarde du coté des fonction fopen(), fwrite() (ou autre) :)

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Eléphant du PHP | 199 Messages

14 déc. 2006, 00:31

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 ...

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

14 déc. 2006, 00:48

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>";

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Eléphant du PHP | 199 Messages

14 déc. 2006, 00:49

merci pour ta reponse je vais tester ca demain matin .

Mammouth du PHP | 505 Messages

14 déc. 2006, 01:30

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();

Eléphant du PHP | 199 Messages

14 déc. 2006, 11:01

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()...

Eléphant du PHP | 199 Messages

14 déc. 2006, 11:31

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")