AU secourrrrrrrrrrrrssssssssss

Signaler
Messages postés
45
Date d'inscription
lundi 6 février 2006
Statut
Membre
Dernière intervention
29 novembre 2007
-
Messages postés
1406
Date d'inscription
mercredi 17 août 2005
Statut
Membre
Dernière intervention
28 août 2007
-
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&#233;e
$lignee=1;
}else
{$lignee=0;}
$listeCoche.=$lignee.',';
echo '.$i.'\" '. $checked.'>';
echo '
'; // retour &#224; 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 ....";

.... 

5 réponses

Messages postés
1406
Date d'inscription
mercredi 17 août 2005
Statut
Membre
Dernière intervention
28 août 2007
9
Et pourtant... Il, existe un truc teeeeeeeeeeeellement pratique !

dans ton formulaire







et après soumission (en imaginant que le type ai coché les 1, 2 et 5 uniquement)

$_POST['liste'] === array(1 => 'pouet', 2 => 'pouet', 5 => 'pouet');

C'est pas beau ?

si-si, je sais...

A+

PS : il faut quand même vérifier que $_POST['liste'] existe et soit un tableau...
Messages postés
117
Date d'inscription
dimanche 27 novembre 2005
Statut
Membre
Dernière intervention
13 mai 2009

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 ...
Messages postés
1406
Date d'inscription
mercredi 17 août 2005
Statut
Membre
Dernière intervention
28 août 2007
9
Une infinité - 1
Messages postés
117
Date d'inscription
dimanche 27 novembre 2005
Statut
Membre
Dernière intervention
13 mai 2009

je vois pas vraiment ou les declare dans mes fichier php,

je suis debutant, peut tu etre un peu plus claire pour moi si to plaiii
Messages postés
1406
Date d'inscription
mercredi 17 août 2005
Statut
Membre
Dernière intervention
28 août 2007
9
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.

A+