[RESOLU] Enrégistrer un tableau dans un fichier .txt

cracktor
Invité n'ayant pas de compte PHPfrance

15 févr. 2013, 22:41

Bonjours,
je dois enrégistrer un $tableau dans un .txt. je sais deja comment ecrire dans un fichier txt.


$chemin = "cours.txt";
 

$fichier = fopen($chemin,"w");

fwrite($fichier, "Chien\r\n");
fwrite($fichier, "Chat\r\n");
fwrite($fichier, "Poulet\r\n");

fclose($fichier);
Par contre je ne sais pas comment enrégistrer ce tableau dans un .txt.
$tableau = array('582-062-OQ'=>'Design et mise en pages', 
                         '582-079-OQ' => 'Langage hypermédia II',
                         '582-073-OQ' => 'Programmation II', 
			 '582-061-OQ' => 'Communication Web marketing',
		 	 '582-065-OQ' => 'Traitement multimédia',
		 	'582-086-OQ' => 'Veille technologique et nouveaux médias');
Puis-je faire ceci ?
$chemin = "cours.txt";
 

$fichier = fopen($chemin,"w");

fwrite($fichier, "$tableau\r\n");


fclose($fichier);

Eléphant du PHP | 453 Messages

15 févr. 2013, 23:15

Salut,

Bin non tu peux pas faire ceci puisqu'au mieux il y aura dans le fichier : array.

Ne serait il pas plus judicieux de créer un xml ou un ini ?

Sinon, si tu veux vraiment faire un fichier txt :
<?php
    $file = "fichier.txt";
    $mode = "w+";
    
    $tableau = array(
        '582-062-OQ'=>'Design et mise en pages',
        '582-079-OQ' => 'Langage hypermédia II',
        '582-073-OQ' => 'Programmation II',
        '582-061-OQ' => 'Communication Web marketing',
        '582-065-OQ' => 'Traitement multimédia',
        '582-086-OQ' => 'Veille technologique et nouveaux médias'
    );
    $row = "";
    foreach($tableau as $k => $v){
        $row .= $k." = ".$v."\n";
    }
    
    $ressource = fopen($file,$mode);
    fwrite($ressource,$row);
    fclose($ressource);
La Tux attitude avec les kiw'z syou plait
Komodo Edit - Inkscape - Dia

Eléphant du PHP | 353 Messages

15 févr. 2013, 23:21


Eléphanteau du PHP | 20 Messages

15 févr. 2013, 23:26

Ceci est pour un exercice d'école que je n'ai pas compris, car le professeur allait trop vite. Malheureusement je ne sais pas encore ce que c’est des fichiers XML ou ini.
Je te remercie beaucoup de ta réponse je vais essayé avec cela et je reviens en cas de problème.

Et je me souviens aussi que le professeur en question parlé de la fonction "explode". Ça vous dit quelque chose?

Eléphanteau du PHP | 20 Messages

15 févr. 2013, 23:46

Ca fonctionne très bien par contre je ne comprends pas ton code et toutes tes variables.

$row représente quel rangé du tableau?
$k et $V représentent quoi exactement?
Et $ressource non plus je ne comprends pas d’ou il vient.

Quelqu’un peut m’expliquer ? Merci d’avance!

Eléphant du PHP | 453 Messages

15 févr. 2013, 23:57

Un fichier xml permet de structurer tes données. Un fichier html n'est ni plus ni moins qu'un fichier xml plus élaboré.
Là dans ton cas, l'arborescence de ton fichier xml pourrait être :
<table>
    <tr>
        <th>582-062-OQ</th>
        <th>582-079-OQ</th>
        <th>582-073-OQ</th>
        <th>582-061-OQ</th>
        <th>582-065-OQ</th>
        <th>582-086-OQ</th>
    </tr>
    <tr>
        <td>Design et mise en pages</td>
        <td>Langage hypermédia II</td>
        <td>Programmation II</td>
        <td>Communication Web marketing</td>
        <td>Traitement multimédia</td>
        <td>Veille technologique et nouveaux médias</td>
    </tr>
</table>
En ce qui concerne un fichier *.ini. C'est un type de fichier d'initialisation/configuration/données
D'ailleurs mon code précédent c'est un ini. Un fichier ini est plus rapide à lire si je ne m'abuse. Il y a des fonctions dédiées à la lecture. parse_ini_file()

Je t'invite à lire la fonction explode() et implode().

Je vois bien que tu commences à apprendre. Cependant, RTFM avant de poser une question ;)
La Tux attitude avec les kiw'z syou plait
Komodo Edit - Inkscape - Dia

Eléphant du PHP | 453 Messages

16 févr. 2013, 00:05

...
$row représente quel rangé du tableau?
row en Anglais veut dire ligne. on est dans une boucle qui tournera 6 fois :
$tableau = array(
        '582-062-OQ'=>'Design et mise en pages',
        '582-079-OQ' => 'Langage hypermédia II',
        '582-073-OQ' => 'Programmation II',
        '582-061-OQ' => 'Communication Web marketing',
        '582-065-OQ' => 'Traitement multimédia',
        '582-086-OQ' => 'Veille technologique et nouveaux médias'
    );
echo count($tableau);
Chaque fois qu'une boucle s'initialisera, la var row concaténera la valeur de $k, le "=" , la valeur de $v et un retour chariot.
ex : 582-073-OQ = Programmation II\n (3e ligne)
...
$k et $V représentent quoi exactement?
Arf, c'est pratiquement une convention d'écriture. Je dirai plus une habitude de beaucoup de dev php.
$k étant la clef du tableau
$v étant la valeur de la clef du tableau
$tableau = array(
        '582-062-OQ'=>'Design et mise en pages',
        '582-079-OQ' => 'Langage hypermédia II',
        '582-073-OQ' => 'Programmation II',
        '582-061-OQ' => 'Communication Web marketing',
        '582-065-OQ' => 'Traitement multimédia',
        '582-086-OQ' => 'Veille technologique et nouveaux médias'
    );
echo $tableau['582-073-OQ'];

Je t'invite à essayer ceci afin de mieux comprendre ce qui se passe :
<?php
    $file = "fichier.txt";
    $mode = "w+";
    
    $tableau = array(
        '582-062-OQ'=>'Design et mise en pages',
        '582-079-OQ' => 'Langage hypermédia II',
        '582-073-OQ' => 'Programmation II',
        '582-061-OQ' => 'Communication Web marketing',
        '582-065-OQ' => 'Traitement multimédia',
        '582-086-OQ' => 'Veille technologique et nouveaux médias'
    );
    $row = "";
    foreach($tableau as $k => $v){
        $row .= $k." = ".$v."\r";
    }
    echo nl2br($row); // ;)
    $ressource = fopen($file,$mode);
    fwrite($ressource,$row);
    fclose($ressource);
...
Et $ressource non plus je ne comprends pas d’ou il vient.
Regarde où j'initialise la variable ;)
La Tux attitude avec les kiw'z syou plait
Komodo Edit - Inkscape - Dia

Eléphanteau du PHP | 20 Messages

16 févr. 2013, 01:23

Merci à vous deux pour vos explications très claires. Oui évidement $key ou $val.Désoléj’aurait dû y penser.

Je comprends le RTFM mais je galérais depuis 6 heures pour trouver une solution à ce problème et j’ai beaucoup de difficulté à comprendre mes notes de cours (pdf fournit par l'établissement) et pourtant tout ce que vous venez de m’expliquer y est.

Avez-vous des suggestions pour m’aider à mieux comprendre des explications parlant de code?
exemple dans l’explication sur le explode sur php.net : explode() retourne un tableau de chaînes, chacune d'elle étant une sous-chaîne du paramètre string extrait en utilisant le séparateur délimiter.

Eléphant du PHP | 343 Messages

16 févr. 2013, 04:23

Si tu ne comprends pas les explications de la doc, regarde les exemples, le code et ce qu'il retourne. Tu peux aussi regarder les contributions dessous, des fois ça permet de voir des applications autres ;)
Développeur web