Sauvegarder choix checkbox

Sauvegarder choix checkbox - PHP - Programmation

Marsh Posté le 16-02-2014 à 14:20:58    

Bonjour, je monte petit à petit un projet pour le lycée sur un Raspberry Pi.
Ce projet transforme le Raspberry en serveur domotique pour la maison, avec interface web.
Pour le moment, il est plutôt simple: Depuis le web, je peux activer / désactiver des sorties, ainsi que visualiser une webcam.
Je souhaiterais simplement que, quand l'utilisateur décide d'activer la sortie 5, par exemple, et qu'il valide, lors du retour sur la page d'accueil, la sortie 5 soit déjà cochée, l'utilisateur l'ayant activée.
 
Voici mes codes déjà présents:
 
index.php

Code :
  1. <form action="go.php"
  2. method=post>
  3. <center>Quelles sorties souhaitez-vous activer ?<br><br>
  4. <input type="checkbox" name="1" value="0x01">Sortie 1<br>
  5. <input type="checkbox" name="2" value="0x02">Sortie 2<br>
  6. <input type="checkbox" name="3" value="0x04">Sortie 3<br>
  7. <input type="checkbox" name="4" value="0x08">Sortie 4<br>
  8. <input type="checkbox" name="5" value="0x10">Sortie 5<br>
  9. <input type="checkbox" name="6" value="0x20">Sortie 6<br>
  10. <input type="checkbox" name="7" value="0x40">Sortie 7<br>
  11. <input type="checkbox" name="8" value="0x80">Sortie 8<br>
  12. <br>
  13. <P>
  14. <input type="submit" value="Envoyer">
  15. </form>
  16. <iframe src="http://192.168.1.12:8081" width="160" height="120" ></iframe>
  17. </center>


 
go.php  
(Script qui calcule une valeur hexadécimale pour renvoyer le bon ordre au Raspberry)

Code :
  1. <?php
  2. // Récupération des variables du formulaire
  3. $var1 = $_POST['1'];
  4. $var2 = $_POST['2'];
  5. $var3 = $_POST['3'];
  6. $var4 = $_POST['4'];
  7. $var5 = $_POST['5'];
  8. $var6 = $_POST['6'];
  9. $var7 = $_POST['7'];
  10. $var8 = $_POST['8'];
  11. $sum = $var1 + $var2 + $var3 + $var4 + $var5 +$var6 +$var7 + $var8;
  12. $hexsum = dechex ($sum);
  13. $link_address='http://192.168.1.12:8000/?output_port=0x'.$hexsum;
  14. ?>
  15. <head>
  16. <meta http-equiv="refresh" content="3; URL=http://192.168.1.12">
  17. </head>
  18. <center><font size="4">Sorties actualis&eacute;es !<br><br>Retour au menu...</font></center>
  19. <iframe src="<?php echo $link_address;?>" width="0" height="0" ></iframe>
  20. <meta http-equiv="refresh" content="1;url=http://192.168.1.12" />


 
Pour l'instant le site fonctionne comme il le devrait, mais ne garde pas coché les sorties déjà activés par l'utilisateur.
Merci d'avance pour votre aide.

Reply

Marsh Posté le 16-02-2014 à 14:20:58   

Reply

Marsh Posté le 16-02-2014 à 17:08:48    

Bonjour,
 
je suis interessé par ton script pour la caméra :p  
 
Mais pour ton "soucis", il suffit de rajouter selon le choix de l'utilisateur l'élément checked à l'input :
<input type="checkbox" name="vehicle" value="Car" <?php if( Condition )echo  checked; ?> >
 
 


---------------
"La valeur d'un homme tient dans sa capacité à donner et non dans sa capacité à recevoir." Albert Einstein / "Dans la nature, tout a toujours une raison. Si tu comprends cette raison, tu n'as plus besoin de l'expérience." Léonard De Vinci
Reply

Marsh Posté le 16-02-2014 à 19:02:09    

J'utilise simplement motion sur mon raspberry pour la vidéo.
 
Je cherche simplement à garder en mémoire les sorties déjà actives par l'utilisateur, et donc cocher automatiquement celle déjà actives dans le menu.

Reply

Marsh Posté le 16-02-2014 à 22:10:57    

Hum... stocker ce qu'il a deja cocher.
Donc tu as plusieurs solution, tu peux y aller avec des cookies, des sessions ou coté serveur avec un fichier d'état (ou context).
L'idée c'est que lors de l'envoie du formulaire, tu enregistres la modification dans un fichier. Puis tu coches en fonction de l'état (deja actif ou non).
 
tu vois l'idée ? ^^"


---------------
"La valeur d'un homme tient dans sa capacité à donner et non dans sa capacité à recevoir." Albert Einstein / "Dans la nature, tout a toujours une raison. Si tu comprends cette raison, tu n'as plus besoin de l'expérience." Léonard De Vinci
Reply

Marsh Posté le 17-02-2014 à 16:29:41    

Exactement, c'est parfaitement ça que je souhaite faire.
J'avais pensé à un fichier .txt, ou du mysql, mais comment faire ?
Je suis une bouze en php ;)

Reply

Marsh Posté le 17-02-2014 à 20:19:03    

Si tu as peu d'utilisateur, le plus simple c'est le fichier.
 
Donc tu appel ton fichier comme tu veux ^^'  
tu enregistres avec file_put_contents()
et tu récup avec file_get_contents()
regarde du coté du JSON aussi, c'est pas mal pour stocker :p
 
essaye, on te corrigera au pire.


---------------
"La valeur d'un homme tient dans sa capacité à donner et non dans sa capacité à recevoir." Albert Einstein / "Dans la nature, tout a toujours une raison. Si tu comprends cette raison, tu n'as plus besoin de l'expérience." Léonard De Vinci
Reply

Marsh Posté le 17-02-2014 à 22:21:48    

Ok merci !
Je regarderais ça demain.
Je n'ai qu'un utilisateur, moi, car c'est pour un projet au lycée, qui sera évalué au bac (coefficient 2)
 
Merci :)

Reply

Marsh Posté le 18-02-2014 à 17:53:20    

Merci beaucoup, j'ai réussi !
J'ai sans doute fais une méthode "bourrin" mais elle marche !
En fait, l'état de chaque checkbox est sauvegardé dans son propre fichier .txt, et une simple condition dans les checkbox de la page index avec if fichier.txt contient variable, alors checked :)
 
Voici le code pour d'autres personnes éventuellement dans le même cas que moi :)
 
index.php

Code :
  1. <form action="go.php"
  2. method=post>
  3. <center>Quelles sorties souhaitez-vous activer ?<br><br>
  4. <input type="checkbox" name="1" value="0x01" <?php if(file_get_contents("mem01.txt" ) == 0x01) echo 'checked'; ?> />Sortie 1<br>
  5. <input type="checkbox" name="2" value="0x02" <?php if(file_get_contents("mem02.txt" ) == 0x02) echo 'checked'; ?> />Sortie 2<br>
  6. <input type="checkbox" name="3" value="0x04" <?php if(file_get_contents("mem03.txt" ) == 0x04) echo 'checked'; ?> />Sortie 3<br>
  7. <input type="checkbox" name="4" value="0x08" <?php if(file_get_contents("mem04.txt" ) == 0x08) echo 'checked'; ?> />Sortie 4<br>
  8. <input type="checkbox" name="5" value="0x10" <?php if(file_get_contents("mem05.txt" ) == 0x10) echo 'checked'; ?> />Sortie 5<br>
  9. <input type="checkbox" name="6" value="0x20" <?php if(file_get_contents("mem06.txt" ) == 0x20) echo 'checked'; ?> />Sortie 6<br>
  10. <input type="checkbox" name="7" value="0x40" <?php if(file_get_contents("mem07.txt" ) == 0x40) echo 'checked'; ?> />Sortie 7<br>
  11. <input type="checkbox" name="8" value="0x80" <?php if(file_get_contents("mem08.txt" ) == 0x80) echo 'checked'; ?> />Sortie 8<br>
  12. <br>
  13. <P>
  14. <input type="submit" value="Envoyer">
  15. </form>
  16. <iframe src="8081.php" width="160" height="120" ></iframe>
  17. </center>


 
go.php

Code :
  1. <?php
  2. // Récupération des variables du formulaire
  3. $var1 = $_POST['1'];
  4. $var2 = $_POST['2'];
  5. $var3 = $_POST['3'];
  6. $var4 = $_POST['4'];
  7. $var5 = $_POST['5'];
  8. $var6 = $_POST['6'];
  9. $var7 = $_POST['7'];
  10. $var8 = $_POST['8'];
  11. $sum = $var1 + $var2 + $var3 + $var4 + $var5 +$var6 +$var7 + $var8;
  12. $hexsum = dechex ($sum);
  13. $file = 'mem01.txt';
  14. file_put_contents($file, $var1);
  15. $file = 'mem02.txt';
  16. file_put_contents($file, $var2);
  17. $file = 'mem03.txt';
  18. file_put_contents($file, $var3);
  19. $file = 'mem04.txt';
  20. file_put_contents($file, $var4);
  21. $file = 'mem05.txt';
  22. file_put_contents($file, $var5);
  23. $file = 'mem06.txt';
  24. file_put_contents($file, $var6);
  25. $file = 'mem07.txt';
  26. file_put_contents($file, $var7);
  27. $file = 'mem08.txt';
  28. file_put_contents($file, $var8);
  29. $link_address='8000.php?output_port=0x'.$hexsum;
  30. ?>
  31. <head>
  32. <meta http-equiv="refresh" content="3; URL=/">
  33. </head>
  34. <center><font size="4">Sorties actualis&eacute;es !<br><br>Retour au menu...</font></center>
  35. <iframe src="<?php echo $link_address;?>" width="0" height="0" ></iframe>


 
Au départ, j'avais eu quelques problèmes, rien n'était écrit dans les fichiers textes... N'oubliez pas d'attribuer la permission lecture et écriture aux fichiers texte ! :)
 
Encore merci !

Reply

Sujets relatifs:

Leave a Replay

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