Bonjour,
je vous soumets mon pb :
j'ai un formulaire avec des cases à cocher liées à une base de données.
lorsque j'affiche le formulaire vide, et que je coche certaines checkbox, je récupère bien les valeurs dans la chaine $menu
lorsque j'affiche le formulaire en récupérant les valeurs stockées dans ma base de données lors d'une saisie précédente, les checkbox qui doivent être pré cochées le sont bien, et les autres non : tout est donc OK
par contre, si je modifie ces checkbox, seules les nouvelles checkbox que je coche sont prises en compte, et pas celles déjà checked.
pourquoi ?
ci dessous mon formulaire :
echo "<form ENCTYPE=\"multipart/form-data\" name=\"formulaire\" action=\"http://".$_SERVER['SERVER_NAME']."/maquettes/portage/portage/portage_menu_client.php\" method=\"get\" lang=\"fr\">";
echo "<table>";
while ($rows = $result1->fetch_row()) {
echo "<tr><td colspan=\"2\"><br>".$rows[0]."<br></td></tr><tr>";
for ($i=1; $i<=$nbplats_par_jours; $i++) {
if ($rows[1]=="oui") {
$query = "SELECT libelle FROM produit WHERE id=".$platslus[$noplat-1];
$result0 = $conex->query($query);
$plat=$result0->fetch_row();
if ($plat[0]<>"") {
echo "<td>".$plat[0]."</td>";
$query = "SELECT * FROM options";
$result = $conex->query($query);
echo "<td>";
$nochoix=1;
while ($choix = $result->fetch_row()) {
if (($clientexiste==1) and (choixpresents($choix[0],$choixlus[$noplat-1])==true)) {
echo "<input type=\"checkbox\" name=\"choix".$noplat."_".$nochoix."[]\" checked value=".$choix[0]." >".$choix[1];
}
else {
echo "<input type=\"checkbox\" name=\"choix".$noplat."_".$nochoix."\" value=".$choix[0].">".$choix[1];
}
$nochoix=$nochoix+1;
}
echo "</td></tr>";
}
$noplat=$noplat+1;
}
}
}
echo "</table>";
echo "<input type=\"submit\" id=\"edition\" name=\"edition\" value=\"MODIFIER\">";
echo "<input type=\"submit\" id=\"annuler\" name=\"annuler\" value=\"ANNULER\">";
echo "<input type=\"submit\" id=\"supprimer\" name=\"annuler\" value=\"SUPPRIMER\">";
echo "<input type=\"hidden\" id=\"semaine\" name=\"semaine\" value='".$semaine."'>";
echo "<input type=\"hidden\" id=\"client\" name=\"client\" value='".$client."'>";
echo "</form>";
la partie de récup des données du formulaire :
dans la variable menu, je récupère toutes les valeurs des checkbox cochées
$attributes=$_SERVER['REQUEST_URI'];
$attributes = parse_url($attributes, PHP_URL_QUERY);
parse_str($attributes, $outputattributes);
$menu="";
require("./param.php");
$conex=connection_base($host,$user,$password,$database);
$query="SELECT * from options";
$result = $conex->query($query);
$nboptions = mysqli_num_rows($result);
for ($i=1; $i<=($nbplats_par_jours*7*2); $i++) {
$chainechoix="";
for ($j=1;$j<=$nboptions;$j++) {
$chainechoix=$chainechoix.",".$outputattributes['choix'.$i."_".$j];
}
$chainechoix=substr($chainechoix, -(strlen($chainechoix)-1));
$menu=$menu.";".$chainechoix;
}
$menu=substr($menu, -(strlen($menu)-1));
je vous soumets mon pb :
j'ai un formulaire avec des cases à cocher liées à une base de données.
lorsque j'affiche le formulaire vide, et que je coche certaines checkbox, je récupère bien les valeurs dans la chaine $menu
lorsque j'affiche le formulaire en récupérant les valeurs stockées dans ma base de données lors d'une saisie précédente, les checkbox qui doivent être pré cochées le sont bien, et les autres non : tout est donc OK
par contre, si je modifie ces checkbox, seules les nouvelles checkbox que je coche sont prises en compte, et pas celles déjà checked.
pourquoi ?
ci dessous mon formulaire :
echo "<form ENCTYPE=\"multipart/form-data\" name=\"formulaire\" action=\"http://".$_SERVER['SERVER_NAME']."/maquettes/portage/portage/portage_menu_client.php\" method=\"get\" lang=\"fr\">";
echo "<table>";
while ($rows = $result1->fetch_row()) {
echo "<tr><td colspan=\"2\"><br>".$rows[0]."<br></td></tr><tr>";
for ($i=1; $i<=$nbplats_par_jours; $i++) {
if ($rows[1]=="oui") {
$query = "SELECT libelle FROM produit WHERE id=".$platslus[$noplat-1];
$result0 = $conex->query($query);
$plat=$result0->fetch_row();
if ($plat[0]<>"") {
echo "<td>".$plat[0]."</td>";
$query = "SELECT * FROM options";
$result = $conex->query($query);
echo "<td>";
$nochoix=1;
while ($choix = $result->fetch_row()) {
if (($clientexiste==1) and (choixpresents($choix[0],$choixlus[$noplat-1])==true)) {
echo "<input type=\"checkbox\" name=\"choix".$noplat."_".$nochoix."[]\" checked value=".$choix[0]." >".$choix[1];
}
else {
echo "<input type=\"checkbox\" name=\"choix".$noplat."_".$nochoix."\" value=".$choix[0].">".$choix[1];
}
$nochoix=$nochoix+1;
}
echo "</td></tr>";
}
$noplat=$noplat+1;
}
}
}
echo "</table>";
echo "<input type=\"submit\" id=\"edition\" name=\"edition\" value=\"MODIFIER\">";
echo "<input type=\"submit\" id=\"annuler\" name=\"annuler\" value=\"ANNULER\">";
echo "<input type=\"submit\" id=\"supprimer\" name=\"annuler\" value=\"SUPPRIMER\">";
echo "<input type=\"hidden\" id=\"semaine\" name=\"semaine\" value='".$semaine."'>";
echo "<input type=\"hidden\" id=\"client\" name=\"client\" value='".$client."'>";
echo "</form>";
la partie de récup des données du formulaire :
dans la variable menu, je récupère toutes les valeurs des checkbox cochées
$attributes=$_SERVER['REQUEST_URI'];
$attributes = parse_url($attributes, PHP_URL_QUERY);
parse_str($attributes, $outputattributes);
$menu="";
require("./param.php");
$conex=connection_base($host,$user,$password,$database);
$query="SELECT * from options";
$result = $conex->query($query);
$nboptions = mysqli_num_rows($result);
for ($i=1; $i<=($nbplats_par_jours*7*2); $i++) {
$chainechoix="";
for ($j=1;$j<=$nboptions;$j++) {
$chainechoix=$chainechoix.",".$outputattributes['choix'.$i."_".$j];
}
$chainechoix=substr($chainechoix, -(strlen($chainechoix)-1));
$menu=$menu.";".$chainechoix;
}
$menu=substr($menu, -(strlen($menu)-1));