twixster
Messages postés45Date d'inscriptionlundi 6 février 2006StatutMembreDernière intervention29 novembre 2007
-
14 févr. 2006 à 14:09
J_G
Messages postés1406Date d'inscriptionmercredi 17 août 2005StatutMembreDernière intervention28 août 2007
-
14 févr. 2006 à 16:03
Bonjour :
Voila, je vous poste mon code, mais d'abord je vous explique, j'affiche a ubout de chaque ligne( c'est a dire chaque fois qu'on a fait enter dans le texte encode en base de donnée) une checkbox.
Ce qui va pas, il ne m'enregistre jamais ce que je fais, que je les coche ou pas, il s'en fou.
a croire que 0,1,0, et 1,1,0, sont deux valeurs qui tourne en rond car je les ai tout le temps ...
je voudrai donc comme on le vois dans ma variable $listeCoche, noter toute les lignes coché a la suite, comme ceci : 0,1,0,1,0,0,0,1 par exemple.
Mais voila, ca ne fonctionne pas, il garde bien quelque chose mais pas les bonnes valeurs.
Quelqu'un peut il me venir au secour??????????
PHP:,
----
<TD>
<?php
include(\"connect.php\");
$menu = mysql_query(\"select idinter from intervention
where statut='In' or statut='En cours' or statut='En attente' or statut='Out'\"
);
$requette=\"select clienti.nom,
....
intervention.ligne,
....
from clienti,intervention,machine
where clienti.idclient=machine.clientid and idmachine=machineid and idinter='\".$_GET['var'].\"'\";
$sql = mysql_query($requette) or die('Erreur SQL');
echo \"<table width=\\"100%\\" >\";
while(list(... $ligne, ... ) = mysql_fetch_array($sql)) {
?>
<form method=\"post\" name=\"post\" action=\"miseajourinter.php?varia=<?php echo $idinter?>\">
<?php
......
if ($resolution!='')
{
$listeCoche=\"\";
$monTableau=explode(\"\n\", $resolution);
$maListeDeLignesCochees=explode(\",\", $ligne);
$nb=count($monTableau);
for($i=0; $i<$nb; $i++) {
echo $monTableau[$i];
$checked = \"\";
if(in_array($i, $maListeDeLignesCochees))
{
$checked=' checked=\"checked\"'; // si la ligne est dans la liste, la case sera cochée
$lignee=1;
}else
{$lignee=0;}
$listeCoche.=$lignee.',';
echo '.$i.'\" '. $checked.'>';
echo '
'; // retour à la ligne
}
echo '.$listeCoche.' >';
}
<center> <input name=\"submit\" type=\"submit\" class=\"champ\" value=\"Vhasy\"> </center></td></tr>
<?php }?>
</form>
</TD></TR></TBODY></TABLE>et ou je le receptionne :
PHP:,
----
<?php
include("connect.php");
mysql_connect("localhost", "root", "");
mysql_select_db("dit");
...
$ligne = $_POST["line"];
...
if(isset($_POST['submit']))
{
$requette="UPDATE intervention SET notetech='$notetech',
....
ligne='$ligne',
....
WHERE idinter='".$_GET['varia']."'";
$repon = mysql_query($requette) or die('Erreur SQL');
echo "$ligne + voili voilou ca marche pas ....";
....
cs_plopinou
Messages postés117Date d'inscriptiondimanche 27 novembre 2005StatutMembreDernière intervention13 mai 2009 14 févr. 2006 à 14:25
oui mais, mon formulaire, c'est une textarea, donc je stock se texte area dans ma base, et que je l'affiche, j'affiche a la fin de chaque ligne une check box, ici je comprend pas ta liste de checkbox, car je sais po combien y peut y en avoir ...
J_G
Messages postés1406Date d'inscriptionmercredi 17 août 2005StatutMembreDernière intervention28 août 200710 14 févr. 2006 à 16:03
C'est à dire que je n'ai pas très bien compris comment tu utilisais tes checkboxes...
Ce que j'ai compris :
1. dans la base de données, tu concerves la liste des checkboxes déjà cochées. Disons que tu les conserve sous le format mentionné :
$ligne = '0,1,1,0,1,0,1';
Alors tu peux, de cette ligne obtenir un tableau...
$tab = explode(',',$ligne);
2. ensuite, tu souhaite ré-afficher cette liste de checkbox en gardant l'information "elle est cochée ou pas". Bien sur, elle doivent faire partie d'un formulaire
echo '<form action="..." method="POST">';
foreach($tab as $clef => $valeur) {
if($valeur) $checked = 'checked'; // déjà cochée
else $checked = ''; // pas cochée
// j'affiche juste la checkbox "au bout de chaque ligne
// à toi de mettre le début de la ligne
echo '';
// pourquoi "liste['.$clef.']" ? nous le verrons en 4.
}
echo '</form>';
3. Ensuite, l'utilisateur coche ou décoche les case à sa guise, puis envoi le formulaire
4. Tu récupères donc le formulaire dans la variable $_POST. Et c'est là que c'est génial !!!
parceque tu as nommé tes checkboxes "liste[x]", $_POST['liste'] contient un tableau associatif où chaque entrée correspond à une checkbox cochée.
(associatif => les clefs sont des valeurs "aléatoires")
Ainsi,
si $_POST['liste'][2] existe, cela signifie que la checkbox N°2 a été cochée.
si $_POST['liste'][2] n'existe pas, checkbox N°2 n'a pas été cochée.
Comprends-tu mieux les avantages de ce système ?
Oui ? Alors on pousse le truc :
1. Au lieu de stocker une chaine de caractère '0,1,0,1,0' dans
ta base, stock directement la structure de cette variable $_POST['liste'].
$BDD = var_export($_POST['liste],true);
// $BDD = (string) 'array(1=>1,2=>1,5=>1)';
2. tu pourras ensuite très facilement reconstruire ce tableau
eval("\$liste=$BDD;");
$liste est alors ton tableau des checkboxes cochées.
Tu peux ensuite travailler avec...
Mais je te laisse faire la suite.