enregistrer une page generer par php en un fichier texte.ref

enregistrer une page generer par php en un fichier texte.ref - PHP - Programmation

Marsh Posté le 09-12-2007 à 09:20:34    

Salut à tous.  
 
J'ai cherché un titre explicite mais c'est pas facile.
 
Voila, je possede une bd avec différentes colonnes .  
Je veux pour chaque ligne de la bd créer un fichier indépendant et qui porte le nom du premier champs.  
 
exemple :  
 
bd :    
nom    couleur   hauteur  longueur
dede   bleu       95         100
 
en php j affiche le fichier :  
 
dede
bleu
95
100
 
et donc ce que je viens d'afficher j'aimerais l'enregistrer en  dede.ref , ou au moin dede.txt  
 
La dernière chose c'est que je vais faire une boucle , car évidemment il y pas mal de ligne .  
 
J'allais oublier , ce qui m'intéresse c'est la ligne de programmation à écrire pr l'enregistrement. Pour le reste logiquement ca devrait aller.
 
merci d'avance  
 
++  
 

Reply

Marsh Posté le 09-12-2007 à 09:20:34   

Reply

Marsh Posté le 09-12-2007 à 09:26:27    

aurait lieu cet enregistrement ? Sur le serveur ou sur le poste client ?
 
Si c'est sur le serveur, alors on peut se servir des fonction fopen(), fwrite(), fprintf(), fclose().
Si c'est sur le poste client, alors ce n'est pas possible. C'est interdit pour des raisons de sécurité.

Reply

Marsh Posté le 09-12-2007 à 15:36:55    

Avec l'output buffering, c'est assez simple. Avant de commencer ton affichage des champs, fait un :

Code :


Ensuite récupère et fait tes echo de manière normalle, puis un :

Code :
  1. $resultat = ob_get_contents();
 

T'aura donc le résultat dans $resultat, suffit de l'écrire dans un fichier. Si t'as PHP5, c'est avec :

Code :
  1. file_put_contents($nom . '.txt', $resultat)


Si dans $nom t'as bien le nom


Message édité par FlorentG le 09-12-2007 à 15:37:11
Reply

Marsh Posté le 09-12-2007 à 19:32:57    

olivthill a écrit :

aurait lieu cet enregistrement ? Sur le serveur ou sur le poste client ?
 
Si c'est sur le serveur, alors on peut se servir des fonction fopen(), fwrite(), fprintf(), fclose().
Si c'est sur le poste client, alors ce n'est pas possible. C'est interdit pour des raisons de sécurité.


 
 
L enregistrement s'effectura sur le serveur, dans mon espace d'hébergement .  
 

Reply

Marsh Posté le 09-12-2007 à 20:14:23    

voici une ébauche de la progammation  
 
<?php
//script enregistre un fichier texte();
//ouverture de la BD ();
 
         $link = mysql_connect("  ", "  ", "   " ) or die ("Impossible de se connecter ligne 1" );  
             mysql_select_db ("  " ) or die ("Impossible d'accéder à la base de données ligne 1" );
 
 
$query = "SELECT * FROM fichiertxt";
$result = mysql_query ($query) or die ("La requête a échoué" );  
 
 
$i=0;
 
// creation de la boucle ();
 
while($i<mysql_num_rows($result)){
   
  $nom=mysql_result($result,$i,"nom" );
  $couleur=mysql_result($result,$i,"couleur" );
  $longueur=mysql_result($result,$i,"longueur" );
  $largeur=mysql_result($result,$i,"largeur" );
 
// affichage du contenu ();
 
print ("
$nom<br>
$couleur<br>
$longueur<br>
$largeur" );  
 
// insertion de la ligne pour l enregistrement() ;
 
 
 
// incrementation de la boucle ();
 
$i+1=$i;  
 
// remise a zero des valeurs ();
 
  $nom=null;
  $couleur=null;
  $longueur=null;
  $largeur=null;
 
 
} )?>


Message édité par ztnarfff le 09-12-2007 à 20:59:02
Reply

Marsh Posté le 09-12-2007 à 20:46:14    

Ben voilà, autour du print, tu rajoutes mes instructions pour capturer la sortie

Reply

Marsh Posté le 09-12-2007 à 20:46:38    

Ou alors moins chiant, tu concatène dans une string, et tu fais le file_put_contents directement [:dawa]

Reply

Marsh Posté le 09-12-2007 à 20:58:05    

FlorentG a écrit :

Ou alors moins chiant, tu concatène dans une string, et tu fais le file_put_contents directement [:dawa]


 
 
peux tu editer mon script du dessus et ajouter les lignes que tu me préconise. ca sera plus simple.  merci pour ton aide .  
 

Reply

Marsh Posté le 09-12-2007 à 21:01:41    

Nan, à toi d'essayer. Si tu veux apprendre...

Reply

Marsh Posté le 09-12-2007 à 21:06:13    

FlorentG a écrit :

Nan, à toi d'essayer. Si tu veux apprendre...


 
 
lol  
 
merci qd meme , tu as tout a fait raison , je mis mets de suite  
 
 

Reply

Marsh Posté le 09-12-2007 à 21:06:13   

Reply

Marsh Posté le 09-12-2007 à 21:23:54    

FlorentG a écrit :

Nan, à toi d'essayer. Si tu veux apprendre...


 
pour concatener j ai trouver  lol :  
 
 
$conca=$nom.$couleur.$longueur.$largeur ;
 
file_put_contents($nom . '.txt', $conta) ;
 
mais es ce que les variables seront enregistrer tel quel  
 
nom
couleur
longueur
largeur
 
et non  
 
nom couleur longueur largeur  
 
 
tu en pense quoi   ?

Reply

Marsh Posté le 09-12-2007 à 21:27:20    

Concatene des retours à la ligne si tu veux des retours à la ligne ...
 
cherche autour de chr(10), chr(13)

Reply

Marsh Posté le 09-12-2007 à 21:27:29    

Faut spécifier manuellement un retour chariot

Reply

Marsh Posté le 09-12-2007 à 21:27:50    

yellu a écrit :

cherche autour de chr(10), chr(13)


On est pas en VB ;) c'est "\n" dans ce cas

Reply

Marsh Posté le 09-12-2007 à 21:28:33    

Reply

Marsh Posté le 09-12-2007 à 21:29:42    

Ah ça existe aussi [:dawak] Mais par convention, on utilise \n plutôt (ou \r\n si on veux du win)

Reply

Marsh Posté le 09-12-2007 à 21:30:48    

Avec le risque qu'il mette des simples quotes et qu'il revienne demander pourquoi ça marche pas je préfere lui indiquer la méthode simple.

Reply

Marsh Posté le 09-12-2007 à 21:31:41    

Nanan, ça risque pas. Et au moins il saura ce que c'est \n, vu qu'on ne voit qu'extrêmement rarement chr().

Reply

Marsh Posté le 09-12-2007 à 21:33:27    

Je pourrai te répondre qu'au moins avec méthode il apprendrai le code ASCII des saut de lignes mais j'ai pas toute la soirée pr pinailler ;)

Reply

Marsh Posté le 09-12-2007 à 21:37:15    

Haha :D

Reply

Marsh Posté le 11-12-2007 à 21:34:54    

Voici ce que jai écris et le résultat c'est un code erreur :
 
$query = "SELECT * FROM fichiertxt";  
$result = mysql_query ($query) or die ("La requête a échoué" );  
 
 
$i=0;  
 
// creation de la boucle ();  
 
while($i<mysql_num_rows($result)){  
   
  $nom=mysql_result($result,$i,"nom" );  
  $couleur=mysql_result($result,$i,"couleur" );  
  $longueur=mysql_result($result,$i,"longueur" );  
  $largeur=mysql_result($result,$i,"largeur" );  
 
// affichage du contenu ();  
 
print ("  
$nom<br>  
$couleur<br>  
$longueur<br>  
$largeur" );  
 
// insertion de la ligne pour l enregistrement() ;  
 
 
 
$conca=$nom.chr(10).$couleur.chr(10).$longueur.chr(10).$largeur ;
print (" $conca " );
file_put_contents($nom.'.txt', $conta) ;  
// ligne 38 ();
 
 
 
 
 
// incrementation de la boucle ();  
 
$i=$i+1 ;  
 
// ligne 48 ();
// remise a zero des valeurs ();
 
}      ?>
 
 
 
Fatal error: Call to undefined function: file_put_contents()

Reply

Marsh Posté le 11-12-2007 à 21:46:22    

Si file_put_contents n'existe pas, c'est que t'es sous PHP4 :(

Reply

Marsh Posté le 11-12-2007 à 21:50:22    

et lorsque que j ecris ceci  
 
 
 
$conca=$nom.\n.$couleur.\n.$longueur.\n.$largeur ;
print (" $conca " );
file_put_contents($nom.'.txt', $conta) ;  
// ligne 38 ();
 
ca m'indique :  
 
Warning: Unexpected character in input: '\' (ASCII=92) state=1 in /home/users/www/ref/creationpagesref.php on line 36
 
Warning: Unexpected character in input: '\' (ASCII=92) state=1 in /home/users/www/ref/creationpagesref.php on line 36
 
Warning: Unexpected character in input: '\' (ASCII=92) state=1 in /home/users/www/ref/creationpagesref.php on line 36
dede
bleue
150 cm
140 cm dedenbleuen150 cmn140 cm


Message édité par ztnarfff le 12-12-2007 à 09:30:48
Reply

Marsh Posté le 11-12-2007 à 22:00:11    

Ecrit pas \n tout court, mais "\n" (avec les double-quotes)

Reply

Marsh Posté le 11-12-2007 à 22:09:47    

maintenant ca ecrit ca  
 
Fatal error: Call to undefined function: file_put_contents() in /home/users/www/ref/creationpagesref.php on line 38


Message édité par ztnarfff le 12-12-2007 à 09:31:02
Reply

Marsh Posté le 11-12-2007 à 22:14:57    

Oui, comme je t'ai dis, t'es sous PHP4. Il faut utiliser fopen, fwrite et fclose pour écrire dans le fichier

Reply

Marsh Posté le 11-12-2007 à 22:38:55    

j ai beau chercher , je comprend rien avec fopen et fwrite,  
 
je sui trop perdu .
 
help

Reply

Marsh Posté le 11-12-2007 à 22:40:19    

mais nan. Regarde la doc de fwrite, y'a un bon exemple : http://fr.php.net/manual/en/function.fwrite.php

Reply

Marsh Posté le 11-12-2007 à 23:10:28    

$file = fopen($nom'.txt','x');
$text=$conca;
fwrite($file, $text);  
fclose($file);
 
 
quand pense tu ?  

Reply

Marsh Posté le 11-12-2007 à 23:54:33    

Voilà, c'est ça :jap: T'as plus qu'à tester


Message édité par FlorentG le 11-12-2007 à 23:54:42
Reply

Marsh Posté le 12-12-2007 à 09:36:52    

MERCIIIIIIIIIIIIIIIIIIIIIIIIIIIII    
 
un grand MERCIIIIIIIIIIIIIIIIII      
 
ca marche t'es un boss florentG

Reply

Marsh Posté le 12-12-2007 à 09:46:02    

maintenant pour finir le tout, il faudrait si le nom posséde un espace, qu'il soit remplacer par "-" ou "_"  
exemple :  
 
bob dede
 
deviendrait   bod-dede.txt  
c'est la variable $nom
 
 

Reply

Marsh Posté le 12-12-2007 à 09:50:17    

je dois utiliser la fonction  
 
preg_replace

Reply

Marsh Posté le 12-12-2007 à 10:07:45    

Si c'est juste les espaces, str_replace fait aussi l'affaire : preg_replace utilise une expression régulière, ce qui serait la bombe atomique pour tuer une mouche :)

Reply

Marsh Posté le 12-12-2007 à 11:14:44    

MDR .
 
DONC  j'ai utilisé l arme ultime ... lol  
 
ca focntionne top .  
 
merci qd meme, et paix à la mémoire de la mouche


Message édité par ztnarfff le 12-12-2007 à 11:15:02
Reply

Marsh Posté le 13-12-2007 à 00:16:35    

j ai des lettres autre que des espaces que je souahaite remplacer :  
 
le  ' ? '  
et le ' / '  
 
$nom= ereg_replace('?','-',$nom) ;
 
 
 
lorsque je les entre ds la fct il me retourne une erreur
 

Reply

Marsh Posté le 13-12-2007 à 10:24:22    

N'utilise pas ereg_replace, mais preg_replace (plus rapide et utilise PCRE pour les expressions régulières, qu'on trouve un peu partout).
 
Et tu peux toujours utiliser str_replace, avec un tableau, ça vaudra mieux :

Code :
  1. $conca = str_replace(
  2.  array('_', '?', '/'), '-', $conca);


Tu peux mettre autant de caractères dans le tableau, il seront tous remplacés par '-' (ou ce que tu veux)

Reply

Marsh Posté le 15-12-2007 à 07:35:01    

FlorentG a écrit :

N'utilise pas ereg_replace, mais preg_replace (plus rapide et utilise PCRE pour les expressions régulières, qu'on trouve un peu partout).
 
Et tu peux toujours utiliser str_replace, avec un tableau, ça vaudra mieux :

Code :
  1. $conca = str_replace(
  2.  array('_', '?', '/'), '-', $conca);


Tu peux mettre autant de caractères dans le tableau, il seront tous remplacés par '-' (ou ce que tu veux)


 
 
nikel ca fct tres bien aussi, c'est plus simple, ca réduit le nombre de ligne du programme, ainsi je réduis les possibilités d'erreur.  
 

Reply

Marsh Posté le 15-12-2007 à 07:58:15    

le programme pour enregistrer enn .ref fct top. La je bricole sur une page de mise en forme .
 
{document.write('<input type="hidden" name="session" value="oui">');}
 
voila une ligne de java qui ce trouve dans un script , le problème c'est qu'elle poséde des ' ' , et donc je ne peux pas la concaténer avec des $nom.  
 
exemple :  
 
$conca=$nom.'{document.write('<input type="hidden" name="session" value="oui">');}'.$longueur
 
il y a interferance, j'ai essayé de mettre la ligne de java ds ma bdd, et de la récuperer après, mais le problème reste.  
 

Reply

Marsh Posté le 15-12-2007 à 10:43:28    

Remplace ' par \' dans la chaîne

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed