Problème php/mysql et checkbox

Signaler
Messages postés
8
Date d'inscription
mercredi 9 mars 2011
Statut
Membre
Dernière intervention
28 août 2011
-
Messages postés
8
Date d'inscription
mercredi 9 mars 2011
Statut
Membre
Dernière intervention
28 août 2011
-
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

Messages postés
1654
Date d'inscription
dimanche 7 septembre 2008
Statut
Membre
Dernière intervention
11 septembre 2013
16
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 !
Messages postés
8
Date d'inscription
mercredi 9 mars 2011
Statut
Membre
Dernière intervention
28 août 2011

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 ?
Messages postés
8
Date d'inscription
mercredi 9 mars 2011
Statut
Membre
Dernière intervention
28 août 2011

C'est bon j'ai resolu mon problème.
Messages postés
8
Date d'inscription
mercredi 9 mars 2011
Statut
Membre
Dernière intervention
28 août 2011

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
    

?>