Sauvegarder sans Base de Données [Résolu]

Messages postés
345
Date d'inscription
lundi 15 mars 2004
Dernière intervention
13 mai 2011
- - Dernière réponse : cs_piep14
Messages postés
345
Date d'inscription
lundi 15 mars 2004
Dernière intervention
13 mai 2011
- 20 oct. 2005 à 10:01
Bonsoir !!! J'aimerais sauvegarder des valeurs mais je ne sais
pas quoi utiliser comme fichier sachant que je ne peux pas me servir de
la base de données.



Ce que je veux faire :



J'ai un tableau qui doit se remplir selon le fichier de données. Dans
ce fichier, j'aurais "lenomdunetache" et la valeur de la tache "0 ou 1"
correspondant a faite ou pas !!!

Exemple :

tache1 = 1 (tache terminée)

tache2 = 0 (tache non faite)



Voila, si vous voulez plus de renseignement, je suis la :D



Merci
Afficher la suite 

Votre réponse

20/40 réponses

Meilleure réponse
Messages postés
345
Date d'inscription
lundi 15 mars 2004
Dernière intervention
13 mai 2011
3
Merci
Je conclure le sujet avec une réponse qui marche impécable :

<?php

/**** Initialisation ****/
/************************/
class Configuration {

var $_vars;
var $ON;
var $OFF;

function Configuration() {
$this->_vars = array();
$this->ON = "1";
$this->OFF = "0";
}

function load($filename) {
if (!file_exists($filename)) {
die ("Le fichier $filename n'existe pas !");
} else {
$lines = file($filename);
foreach($lines as $line) {
$pos = strpos($line, '=');
if ($pos !== false) {
$this->_vars[trim(substr($line, 0, $pos))] = trim(substr($line, $pos+1));
}
}
}
}

function change($array) {
foreach($array as $key => $value) {
if (isset($this->_vars[$key])) {
$this->_vars[$key] = ($value==="ON")?$this->ON:$this->OFF;
}
}
}

function save($filename) {
$f = fopen($filename, 'w');
foreach($this->_vars as $key => $value) {
fwrite($f, $key.' = '.$value."\n");
}
fclose($f);
}

function dump() {
return var_export($this->_vars);
}

function toHtml() {
$output = '';
if (count($this->_vars) == 0) {
$output .= '
Fichier de conf vide
';
} else {
$output .= '<form action="" method="POST">';
$output .= ' Key |Value |';
foreach($this->_vars as $key => $value) {
$output .= '----
'.$key.', OFF?"ON":"OFF").'" />, ';
}
$output .= '
';
$output .= '</form>';
}
return $output;
}
}

$conf =& new Configuration();

$conf->load("fichier.txt");


/**** Traitement requete ****/
/****************************/
if (isset($_REQUEST['vars'])) {
$conf->change($_REQUEST['vars']);
$conf->save("fichier.txt");
}



/**** Affichage ****/
/*******************/
?>
<html>

<?php echo $conf->toHtml(); ?>

</html>


Je veux vraiment vous remercier, vous n'avais jamais abandonnée pour essayer de m'aider au maximum. Je te remercie sincèrement Anthomicro ainsi que les autres ayant participé au sujet.

Bonne continuation !!
Vincent

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 98 internautes ce mois-ci

Commenter la réponse de cs_piep14
Messages postés
861
Date d'inscription
mardi 26 mars 2002
Dernière intervention
29 novembre 2006
0
Merci
Sael og blesud



Bah xml par exemple ou encore un simple csv ou txt

Bon courage ...

NB : Si la réponse vous convient merci de l'accepter pour fermer ce thread ...

Sigurjón Bírgir Sigurðssón aka Sjón
Commenter la réponse de cs_sjon
Messages postés
12336
Date d'inscription
mardi 10 février 2004
Dernière intervention
30 juillet 2012
0
Merci
cherches fopen, fputs et fclose...

In a dream, I saw me, drop dead... U was here, U cried... It was just a deam, if I die, U won't cry, maybe, U'll be happy

http://coucou747.hopto.org
Commenter la réponse de coucou747
Messages postés
1423
Date d'inscription
mardi 14 décembre 2004
Dernière intervention
29 décembre 2012
0
Merci
hum une sauvegarde dans un fichier txt ca te convient?
si oui renseigne toi sur les fonctions fwrite fread...
ensuite penses a mettre un separateur entre chaque données! Ensuite il faut faire un explode et ensuite c'est une boucle toute bete et mechante...
Si tu as besoin de plus d'explications n'hesites pas!


-------------------------------------------------------------------------------------------------------
Il vaut mieux poser une question et passer pour bête que le rester toute sa vie
Commenter la réponse de Teclis01
Messages postés
9440
Date d'inscription
mardi 9 octobre 2001
Dernière intervention
13 avril 2007
0
Merci
Salut,



perso je te conseillerais de mettre ça dans un fichier texte tout
simple, avec une instruction par ligne comme tu as fait dans ton
exemple mais comme ceci :



instruction=valeur;



ensuite tu fais un explode sur chaque ligne avec le signe égal, tu récupères l'instruction et sa valeur, et tu la traites ;-)

<hr size="2" width="100%"><li>Entraide, dépannage et vulgarisation informatique : Mon site de vulgarisation informatique</li>
Commenter la réponse de cs_Anthomicro
Messages postés
345
Date d'inscription
lundi 15 mars 2004
Dernière intervention
13 mai 2011
0
Merci
Je penses que l'idée de Anthomicro à l'air pas mal. Auriez vous un exemple ou un tuto ? Merci de votre aide les gars !
Commenter la réponse de cs_piep14
Messages postés
9440
Date d'inscription
mardi 9 octobre 2001
Dernière intervention
13 avril 2007
0
Merci
bah pour récupérer toutes les lignes :



$fichier=file('fichier.txt');

$i=0;

$nb=count($fichier);



while($i<$nb)

{

$ligne=explode('=',$fichier[$i]);



//instruction

echo $ligne[0],'
';

//valeur

echo $ligne[1];

$i++;

}

<hr size="2" width="100%"><li>Entraide, dépannage et vulgarisation informatique : Mon site de vulgarisation informatique</li>
Commenter la réponse de cs_Anthomicro
Messages postés
12336
Date d'inscription
mardi 10 février 2004
Dernière intervention
30 juillet 2012
0
Merci
personellement, pour récupérer mes variables, je faisais un include quand je n'utilisais pas mysql...

In a dream, I saw me, drop dead... U was here, U cried... It was just a deam, if I die, U won't cry, maybe, U'll be happy

http://coucou747.hopto.org
Commenter la réponse de coucou747
Messages postés
9440
Date d'inscription
mardi 9 octobre 2001
Dernière intervention
13 avril 2007
0
Merci
ah oui si tu parles de variables c'est différent

<hr size="2" width="100%"><li>Entraide, dépannage et vulgarisation informatique : Mon site de vulgarisation informatique</li>
Commenter la réponse de cs_Anthomicro
Messages postés
345
Date d'inscription
lundi 15 mars 2004
Dernière intervention
13 mai 2011
0
Merci
Donc j'ai repris ta méthode Anthomicro !!! Comment je fais si je veux mettre a jour une valeur dans le fichier texte. Disons que dans le fichier, j'ai :

tache1 = 1
tache2 = 1
tache3 = 0

Et je veux mettre a jour tache2 = 1

Merci de votre aide !
Commenter la réponse de cs_piep14
Messages postés
345
Date d'inscription
lundi 15 mars 2004
Dernière intervention
13 mai 2011
0
Merci
En cherchant sur le Net, il est dit qu'il vaut mieux utiliser parse_ini_file car il est plus portable face a celui utilisé précédement !!!!

Qu'en pensez vous et auriez vous des exemples ? Merci
Commenter la réponse de cs_piep14
Messages postés
9440
Date d'inscription
mardi 9 octobre 2001
Dernière intervention
13 avril 2007
0
Merci
bah oui si ce sont des paramètres ma méthode n'est pas appropriée,
perso je pensais que tu faisais une sauvegarde d'une grande quantité de
données.



la meilleure méthode reste encore de foutre tes variables dans un fichier que tu éditeras à l'aide d'expressions régulières.



$variable='valeur';



tu ouvres le fichier tu récupères en php le contenu de la variable
$variable et tu peux lui affecter un autre contenu avec un fopen en
mode w+
<hr size="2" width="100%"><li>Entraide, dépannage et vulgarisation informatique : Mon site de vulgarisation informatique</li>
Commenter la réponse de cs_Anthomicro
Messages postés
10918
Date d'inscription
lundi 24 février 2003
Dernière intervention
2 mars 2010
0
Merci
Ben moi j'utiliserais plutôt xml, dans ce cas.

Mais qui en doutait ? ;-)



La raison : ça s'édite facilement justement, on met à jour des valeurs très simplement.

Et puis si on parle portabilité... ;-)



Après, parse_ini_file, pourquoi pas, mais c'est pas super intuitif à utiliser je trouve.
Commenter la réponse de malalam
Messages postés
345
Date d'inscription
lundi 15 mars 2004
Dernière intervention
13 mai 2011
0
Merci
Anthomicro, j'ai repris ton code mais je ne sais pas comment je fais pour effectuer une mise a jour d'une valeur dans le fichier !!!

J'ai fais comme code :

CODE :
<?
$fichier=file('fichier.txt');
$i=0;
$nb=count($fichier);
echo "\";
while($i<$nb)
{
echo \"----
\";
$ligne=explode('=',$fichier[$i]);
echo \"$ligne[0], ";

if($ligne['1']=="1")
echo "OK";
else
echo "NO";
echo ", \";
$i++;
echo \"\";
}
echo "
";
?>

Et dans le fichier, j'ai :
tache1=1
tache2=0

Et a l'affichage, j'ai :
tache1 NO
tache2 NO

Donc déjà, il y a un léger probleme !!!
Merci
Commenter la réponse de cs_piep14
Messages postés
9440
Date d'inscription
mardi 9 octobre 2001
Dernière intervention
13 avril 2007
0
Merci
Bon en fait j'avais utilisé ce code pour un projet TPE :



en fait j'avais un fichier "fonctions.inc.php" et dedans je voulais
soit activer les logs via une interface soit les désactiver. Plutôt que
de faire appel à la base j'ai utilisé un fichier texte qui contient du
code mais ce qui est important :



$activer_logs=1; //ou $activer_logs=0;



pour lire la valeur bah vu que c'est une variable tu fais une inclusion
du fichier et mettons que tu mettes $valeur_logs=0; //désactive les logs



$fichier=file_get_contents('./classes/fonctions.inc.php');



$fichier=preg_replace('`\$activer_logs=(0|1);`','\$activer_logs='.$valeur_logs.';',$fichier);



ecrire_fichier('w+','./classes/fonctions.inc.php',$fichier); //imitation de la fonction fopen en mode w+ plus fputs et fclose...


<hr size="2" width="100%"><li>Entraide, dépannage et vulgarisation informatique : Mon site de vulgarisation informatique</li>
Commenter la réponse de cs_Anthomicro
Messages postés
345
Date d'inscription
lundi 15 mars 2004
Dernière intervention
13 mai 2011
0
Merci
Oulala, c'est pas très clair tout ca pour moi, désolé :D
Commenter la réponse de cs_piep14
Messages postés
345
Date d'inscription
lundi 15 mars 2004
Dernière intervention
13 mai 2011
0
Merci
Moi j'ai fait ca pour le moment :

CODE :
<?
if(isset($_POST['submit']))
{
echo "La mise a jour dans le fichier !!! Mais comment :D";
}

$fichier=file('fichier.txt');
$i=0;
$nb=count($fichier);
echo "\";
while($i<$nb)
{
echo \"----
\";
$ligne=explode('=',$fichier[$i]);
//var_dump($ligne);
echo \"$ligne[0], ";

if(trim($ligne[1])=="1")
echo "<form action='' method='POST'></form>";
else
echo "<form action='' method='POST'></form>";
echo ", \";
$i++;
echo \"\";
}
echo "
";
?>

Si tu peux m'aider a partir de ca !!
Commenter la réponse de cs_piep14
Messages postés
9440
Date d'inscription
mardi 9 octobre 2001
Dernière intervention
13 avril 2007
0
Merci
tu t'embêtes pour rien là... regarde un peu en quoi consiste une des solutions possibles :



ouvrir le fichier sous forme de tableau =>



$fichier=file('fichier.txt');



=> parser le contenu de toutes les lignes (récupérer via explode la variable et sa valeur)

=> si tu veux modifier la variable bah t'ouvres le fichier en écriture,et tu fais un preg_replace dessus.

<hr size="2" width="100%"><li>Entraide, dépannage et vulgarisation informatique : Mon site de vulgarisation informatique</li>
Commenter la réponse de cs_Anthomicro
Messages postés
345
Date d'inscription
lundi 15 mars 2004
Dernière intervention
13 mai 2011
0
Merci
Merde, j'arrive pas a appliquer preg_replace !!! Tu peux me montrer s'il te plait !!!
Commenter la réponse de cs_piep14
Messages postés
12336
Date d'inscription
mardi 10 février 2004
Dernière intervention
30 juillet 2012
0
Merci
t'en as pour un moment avec les normes sur les expressions régulières,
mais franchement, ça en vaut la peine... enfin, pas sur un si petit
projet....



Pourquoi ne pas écrire tes variables sous la forme :



$a="salut";

$v=false;

$tab=array();

$tab[]="moi";


ensuite, un simple include('monfichier'); et c'est réglé...


In a dream, I saw me, drop dead... U was here, U cried... It was just a deam, if I die, U won't cry, maybe, U'll be happy

http://coucou747.hopto.org
Commenter la réponse de coucou747

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.