Problème php/mysql et checkbox

cs_mary62 Messages postés 8 Date d'inscription mercredi 9 mars 2011 Statut Membre Dernière intervention 28 août 2011 - 9 juin 2011 à 09:57
cs_mary62 Messages postés 8 Date d'inscription mercredi 9 mars 2011 Statut Membre Dernière intervention 28 août 2011 - 14 juin 2011 à 15:33
Bonjour à tous,

Voilà j'ai un gros problème depuis hier et je cherche quelqu'un qui pourrait m'aider.
Je crée actuellement une application qui gere des inscriptions.
Voici la page où on selectionne la date et en fonction de la date selectionnée, les enfants inscrits s'affichent dans un tableau avec leurs prévisions de présence et dans les 3 dernières colonnes il y a 3 cases à cocher où l'on coche si l'enfant a été présent comme prévu ou pas le matin/midi/après-midi.
Moi ce que je souhaite c'est cocher les cases et que la valeur de la case cochée s'insere dans ma table inscription.
Comme sa par la suite,on pourra afficher un tableau avec les previsions et les réalisations.
J'ai essayé insert into et update mais sans résultat.
J'espère avoir été assez claire et si vous pouviez m'aider en me disant ce qui bloque la récuperation des données des checkbox où me donner la demarche ça serait géniale car je suis vraiment bloqué.
Merci

Voici mon code :

Page avec les cases a cocher

<html>
  <head>
    <title></title>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <link href="style.css" rel="stylesheet" type="text/css" />
  </head>
  
      


<?php
        include("menu.inc");
        echo'
';
        ?>
<?php
if(isset($_POST['liste1'])){
//si la liste a été "postée" c'est à dire choix fait
$liste1=$_POST['liste1'];
}else{
$liste1=-1;
}
?>

Sélectionnez un mercredi :
<form name="form1" method="post" action="">
<select name="liste1" onchange=" form1.submit();">
<option value=-1>-- Choisissez -- </option>

 

<?php

$connection = mysql_connect('localhost', 'root', 'mysql');
$base = mysql_select_db('Centre_aere');

$requete = "SELECT Date FROM Date_mercredi Order by Id";
$execution_requete = mysql_query($requete);
while($total = mysql_fetch_array($execution_requete))

//Liste déroulante
{
echo "<option value="".$total["Date"].""";
if($liste1==$total['Date']) { echo "selected"; }//ça c'est pour garder la selection lors du réaffichage
echo ">".$total['Date']."</option>\n";

}

?>
</select>




</form>

<?php
$requete1 = "SELECT Nom,Previsions_AM,Previsions_R,Previsions_PM FROM Inscription_mercredi WHERE Date='".$liste1."'";
$execution_requete1 = mysql_query($requete1);
$tot = mysql_num_rows($execution_requete1);
 // accolade de fin de if liste postee

// si on a récupéré un résultat on l'affiche.
if($tot) {
    // debut du tableau
    echo ''.\"\n\";

echo '----
';
echo 'Nom, ';
echo 'Previsions_Matin, ';
echo 'Previsions_Midi, ';
echo 'Previsions_Après-midi, ';
echo 'Realisations_Matin, ';
echo 'Realisations_Midi, ';
echo 'Realisations_Après-midi, ';
echo ''.\"\n\";

while($row = mysql_fetch_array($execution_requete1)) {

echo '----
';
echo ''.$row["Nom"].', ';
echo ''.$row["Previsions_AM"].', ';
echo ''.$row["Previsions_R"].', ';
echo ''.$row["Previsions_PM"].', ';
echo ', ';
echo ', ';
echo ', ';

echo ''.\"\n\";
}
    echo '
'."\n";
   // fin du tableau.<code><code>
}
else echo "Aucune inscription  ";

//*on libère le résultat*//
mysql_free_result($execution_requete1);


        ?>



<form name="form" method="post" action="Traitement_validation_presence.php">






</form>


[b]Page où on récupere les données des checkbox pour les inserer dans la base de donnée
/b

<?php
// On  récupére les champs :

if(isset($_POST['matin']))      $matin=$_POST['matin'];
else      $matin="";

if(isset($_POST['midi']))      $midi=$_POST['midi'];
else      $midi="";

if(isset($_POST['apresmidi']))      $apresmidi=$_POST['apresmidi'];
else      $apresmidi="";


    {
       // connexion à la base
$db = mysql_connect('localhost','root','mysql')  or die('Erreur de connexion '.mysql_error());

      // sélection de la base
    mysql_select_db('Centre_aere',$db)  or die('Erreur de selection '.mysql_error());      

     // on écrit la requête sql
 // $sql1 "UPDATE Inscription_mercredi SET Realisations_AM '$matin',Realisations_R = '$midi',Realisations_PM = '$apresmidi' ";
$sql1 = "INSERT INTO Inscription_mercredi(Realisations_AM,Realisations_R,Realisations_PM) VALUES('$matin','$midi','$apresmidi')";


   // on insère les informations du formulaire dans la table
    mysql_query($sql1) or die('Erreur SQL !'.$sql.'
'.mysql_error());

     // on affiche le résultat 
    echo 'Les informations ont bien été ajoutées. 
 
';
    echo '[index.php  Retour à l\'accueil]';

    mysql_close();  // on ferme la connexion
    }

?>

4 réponses

cod57 Messages postés 1653 Date d'inscription dimanche 7 septembre 2008 Statut Membre Dernière intervention 11 septembre 2013 19
9 juin 2011 à 15:15
bonjour

il faut mettre des 'brackets' []
comme ça tu auras des checkbox indicé dans un tableau

echo '<td bgcolor="#dddddd"></td>'; ...

mais je comprend pas ton premier form il y a pas de submit
y a t'il pas un probleme déjà ici

veux tu faire


<form name="form" method="post" action="Traitement_validation_presence.php">
<!--
<form name="form1" method="post" action="">
-->
<select name="liste1" onchange=" form1.submit();">
<option value=-1>-- Choisissez -- </option>

 

<?php

$connection = mysql_connect('localhost', 'root', 'mysql');
$base = mysql_select_db('Centre_aere');

$requete = "SELECT Date FROM Date_mercredi Order by Id";
$execution_requete = mysql_query($requete);
while($total = mysql_fetch_array($execution_requete))

//Liste déroulante
{
echo "<option value="".$total["Date"].""";
if($liste1==$total['Date']) { echo "selected"; }//ça c'est pour garder la selection lors du réaffichage
echo ">".$total['Date']."</option>\n";

}

?>
</select>




<!--
</form>
-->
<?php
$requete1 = "SELECT Nom,Previsions_AM,Previsions_R,Previsions_PM FROM Inscription_mercredi WHERE Date='".$liste1."'";
$execution_requete1 = mysql_query($requete1);
$tot = mysql_num_rows($execution_requete1);
 // accolade de fin de if liste postee

// si on a récupéré un résultat on l'affiche.
if($tot) {
    // debut du tableau
    echo ''.\"\n\";

echo '----
';
echo 'Nom, ';
echo 'Previsions_Matin, ';
echo 'Previsions_Midi, ';
echo 'Previsions_Après-midi, ';
echo 'Realisations_Matin, ';
echo 'Realisations_Midi, ';
echo 'Realisations_Après-midi, ';
echo ''.\"\n\";

while($row = mysql_fetch_array($execution_requete1)) {

echo '----
';
echo ''.$row["Nom"].', ';
echo ''.$row["Previsions_AM"].', ';
echo ''.$row["Previsions_R"].', ';
echo ''.$row["Previsions_PM"].', ';
echo ', ';
echo ', ';
echo ', ';

echo ''.\"\n\";
}
    echo '
'."\n";
   // fin du tableau.<code><code>
}
else echo "Aucune inscription  ";

//*on libère le résultat*//
mysql_free_result($execution_requete1);


        ?>


<!--
<form name="form" method="post" action="Traitement_validation_presence.php">
-->





</form>



Bonne programmation !
0
cs_mary62 Messages postés 8 Date d'inscription mercredi 9 mars 2011 Statut Membre Dernière intervention 28 août 2011
10 juin 2011 à 14:51
Bonjour cod57, merci de ta réponse.
Le problème , c'est que si je fais comme tu me dis avec les form, et bien mon onchange ne fonctionne plus donc je ne peux plus afficher les enfants inscrits selon la date que j'ai selectionné dans ma liste déroulante.
Et donc je n'ai pas pu essayer ta solution concernant les brackets.
A tu une solution pour ce problème ?
0
cs_mary62 Messages postés 8 Date d'inscription mercredi 9 mars 2011 Statut Membre Dernière intervention 28 août 2011
10 juin 2011 à 20:54
C'est bon j'ai resolu mon problème.
0
cs_mary62 Messages postés 8 Date d'inscription mercredi 9 mars 2011 Statut Membre Dernière intervention 28 août 2011
14 juin 2011 à 15:33
Je me suis rendu compte que tout fonctionne sauf que je ne peux cocher qu'une fois chaque réalisations pour toute ma liste d'enfants,c'est à dire que si je coche réalisation matin chez 10 enfants , il y en aura qu'un qui sera pris en compte donc ça ne peut pas fonctionner si 10 enfants ne peuvent pas être present le même matin.
Je pense que ça ne doit pas être grand chose mais si quelqu'un pouvait m'éclairer.
Merci

Je remet mon code :

Page avec les cases à cocher :

<html>
  <head>
    <title></title>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <link href="style.css" rel="stylesheet" type="text/css" />
  </head>
  
      


<?php
        include("menu.inc");
        echo'
';
        ?>
<?php
if(isset($_POST['liste1'])){
//si la liste a été "postée" c'est à dire choix fait
$liste1=$_POST['liste1'];
}else{
$liste1=-1;
}
?>

Sélectionnez un mercredi :
<form name="form1" method="post" action="">
<select name="liste1" onchange=" form1.submit();">
<option value=-1>-- Choisissez -- </option>

 

<?php

$connection = mysql_connect('localhost', 'root', 'mysql');
$base = mysql_select_db('Centre_aere');

$requete = "SELECT Date FROM Date_mercredi Order by Id";
$execution_requete = mysql_query($requete);
while($total = mysql_fetch_array($execution_requete))

//Liste déroulante
{
echo "<option value="".$total["Date"].""";
if($liste1==$total['Date']) { echo "selected"; }//ça c'est pour garder la selection lors du réaffichage
echo ">".$total['Date']."</option>\n";

}

?>
</select>




</form>
<form name="form" method="post" action="Traitement_validation_presence.php">
<?php
$requete1 = "SELECT Id,Nom,Previsions_AM,Previsions_R,Previsions_PM FROM Inscription_mercredi WHERE Date='".$liste1."'";
$execution_requete1 = mysql_query($requete1);
$tot = mysql_num_rows($execution_requete1);
 // accolade de fin de if liste postee

// si on a récupéré un résultat on l'affiche.
if($tot) {
    // debut du tableau
    echo ''.\"\n\";
// première ligne on affiche les titres prénom et surnom dans 2 colonnes
echo '----
';
echo 'Nom, ';
echo 'Previsions_Matin, ';
echo 'Previsions_Midi, ';
echo 'Previsions_Après-midi, ';
echo 'Realisations_Matin, ';
echo 'Realisations_Midi, ';
echo 'Realisations_Après-midi, ';
echo ''.\"\n\";

while($row = mysql_fetch_array($execution_requete1)) {

echo '----
';
echo ''.$row["Nom"].', ';
echo ''.$row["Previsions_AM"].', ';
echo ''.$row["Previsions_R"].', ';
echo ''.$row["Previsions_PM"].', ';
echo ', ';
echo ', ';
echo ', ';
echo ''.\"\n\";
}
    echo '
'."\n";
   // fin du tableau.
}
else echo "Aucune inscription  ";

//*on libère le résultat*//
mysql_free_result($execution_requete1);


        ?>










</form>



Page où on récupere les données des checkbox pour les inserer dans la base de donnée :


<?php
for($i=0;$i<count($_POST['matin']);$i++)
{
$id=$_POST['matin'][$i];
/* requête avec UPDATE matable SET champ='valeur' WHERE id=$id */
}

for($i=0;$i<count($_POST['midi']);$i++)
{
$id1=$_POST['midi'][$i];
/* requête avec UPDATE matable SET champ='valeur' WHERE id=$id */
}

for($i=0;$i<count($_POST['apresmidi']);$i++)
{
$id2=$_POST['apresmidi'][$i];
/* requête avec UPDATE matable SET champ='valeur' WHERE id=$id */
}
    {
       // connexion à la base
    $db = mysql_connect('localhost','root','mysql')  or die('Erreur de connexion '.mysql_error());

      // sélection de la base
    mysql_select_db('Centre_aere',$db)  or die('Erreur de selection '.mysql_error());  
  
    // on écrit la requête sql
 // $sql1 "UPDATE Inscription_mercredi SET Realisations_AM '$matin',Realisations_R = '$midi',Realisations_PM = '$apresmidi' ";
    $sql  "UPDATE Inscription_mercredi SET Realisations_AM'1' WHERE Id=$id" ;
    $sql1 "UPDATE Inscription_mercredi SET Realisations_R '1' WHERE Id=$id1" ;
    $sql2 "UPDATE Inscription_mercredi SET Realisations_PM'1' WHERE Id=$id2" ;
    
   // on insère les informations du formulaire dans la table
    mysql_query($sql)  or die('Erreur SQL !'.$sql.'
'.mysql_error());
    mysql_query($sql1) or die('Erreur SQL !'.$sql1.'
'.mysql_error());
    mysql_query($sql2) or die('Erreur SQL !'.$sql2.'
'.mysql_error());
    }
     // on affiche le résultat pour le visiteur
    echo 'Les informations ont bien ete ajoutees. 
 
';
    echo '[index.php  Retour a l\'accueil]';

    mysql_close();  // on ferme la connexion
    

?>

0
Rejoignez-nous