Insertion checkbox dans une base de donnée

Résolu/Fermé
Luffy_87 Messages postés 10 Date d'inscription mardi 15 septembre 2009 Statut Membre Dernière intervention 16 septembre 2010 - 15 sept. 2010 à 12:08
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 - 9 janv. 2013 à 22:42
Bonjour,

j'aimerai savoir comment il faut faire pour insérer les données renseignées dans le formulaire.
En fait il faudrait que pour chaque checkbox cochées il y est à chaque fois une ligne dans ma table avec id_cotation et le nom_gc.


<form name="creation" method="post" action="groupe_cotation.php">
	
	Groupe (cotation) : <br/><input type="text" name="nom_gc"/> 
<br/>
				
				<?php
					
					$host = 'localhost';
					$user = 'root';
					$pass = '';
					$db = 'formation';

					
				$link = mysql_connect ($host,$user,$pass) or die ('Erreur :'.mysql_error() );
				mysql_select_db($db) or die ('Erreur :'.mysql_error());

					
					$select = 'SELECT id_cotation, nom_cotation FROM cotation ORDER BY nom_cotation ASC';
					$result = mysql_query($select,$link) or die ('Erreur : '.mysql_error() );
					$total = mysql_num_rows($result);
					
					
					if($total) 
						{
					  
						while($row = mysql_fetch_array($result)) 
								{
						echo '<input type="checkbox" name="'.$row['id_cotation'].'" value="'.$row['id_cotation'].'"/> ' ; 
				
						echo $row['nom_cotation'];
				?>
							
				<?php
					
								}
				   
						}
					else 
						
						echo 'Aucunes cotations ';

				
				mysql_free_result($result);
				mysql_close($link);
				
				?>
				
				<br/>
				<br/>
				
				<input type="submit" name="valider" value="Enregistrer"/>
				
</form>


j'ai essayé plusieurs choses mais aucune d'elles fonctionnent, sachant que mes checkbox sont générées automatiquement.

Merci d'avance,
A voir également:

5 réponses

Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
15 sept. 2010 à 20:58
en plus simple:

<form name="creation" method="post" action="groupe_cotation.php">
    
    Groupe (cotation) : <br/><input type="text" name="nom_gc"/> 
<br/>
                
                <?php
                    
                    $host = 'localhost';
                    $user = 'root';
                    $pass = '';
                    $db = 'formation';

                    
                $link = mysql_connect ($host,$user,$pass) or die ('Erreur :'.mysql_error() );
                mysql_select_db($db) or die ('Erreur :'.mysql_error());

                    
                    $select = 'SELECT id_cotation, nom_cotation FROM cotation ORDER BY nom_cotation ASC';
                    $result = mysql_query($select,$link) or die ('Erreur : '.mysql_error() );
                    $total = mysql_num_rows($result);
                    
                    
                    if($total > 0) 
                        {
                      
                        while($row = mysql_fetch_array($result)) 
                                {
                        echo '<input type="checkbox" name="cases[]" value="'.$row['id_cotation'].'"/> ' ; //cases[] poste dans un array
                
                        echo $row['nom_cotation'];
                ?>
                            
                <?php
                    
                                }
                   
                        }
                    else 
                        
                        echo 'Aucune cotation ';

                
                mysql_free_result($result);
                mysql_close($link);
                
                ?>
                
                <br/>
                <br/>
                
                <input type="submit" name="valider" value="Enregistrer"/>
                
</form>

et la page groupe_cotation.php:

<?php
if(isset($_POST['valider']{
    //le formulaire a été posté!
    $nom_gc=$_POST['nom_gc'];
    //on recupére dans un array les cases cochées $_POST['cases'] est un array contenant seulement les valeurs des cases effectivement cochées
    $array_cochees=$_POST['cases'];
    
    $host = 'localhost';
    $user = 'root';
    $pass = '';
    $db = 'formation';
    $link = mysql_connect ($host,$user,$pass) or die ('Erreur :'.mysql_error() );
    mysql_select_db($db) or die ('Erreur :'.mysql_error());
    //on parcours l'array des cases cochées pour faire un INSERT a chaque fois
    for($i=0;$i<sizeof($array_cochees);$i++){
        $insert = "INSERT INTO cotation SET id_cotation = '".$array_cochees."' ,nom_gc='".$nom_gc."'";
    
    }
mysql_close($link);
}

?>
2
Luffy_87 Messages postés 10 Date d'inscription mardi 15 septembre 2009 Statut Membre Dernière intervention 16 septembre 2010
16 sept. 2010 à 09:54
j'ai essayé le code, mais apparemment ça ne fonctionne pas.
Lorsque je clique sur le bouton enregistrer une seul ligne apparait dans ma table mais avec comme valeur pour id_cotation : Array
0
younessnet Messages postés 6 Date d'inscription lundi 13 septembre 2010 Statut Membre Dernière intervention 16 septembre 2010 2
15 sept. 2010 à 12:34
bonjour,
tu peus utiliser la mm requet pour parcourire le resultat dans l'autre page php,
et t'utilise la fonction isset($var) pour verifier que la caseàcoché est coché par l'utilisateur :
on utilise isset qui détermine si une variable est définie et est différente de NULL, puisque une case non coché contient une valeur null.

$select = 'SELECT id_cotation, nom_cotation FROM cotation ORDER BY nom_cotation ASC';
$result = mysql_query($select,$link) or die ('Erreur : '.mysql_error() );
$total = mysql_num_rows($result);


if($total)
{

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


if(isset($_POST[ ''.$row['id_cotation'] ]))
{
//le traitement que tu veux

}



}
1
Luffy_87 Messages postés 10 Date d'inscription mardi 15 septembre 2009 Statut Membre Dernière intervention 16 septembre 2010
15 sept. 2010 à 14:57
merci de m'avoir répondu,

je n'ai pas été très clair dans mes explications. J'ai un bouton enregistrer donc je vais faire :

if(isset($_POST['valider']))
           {

           }


mais après je ne sais pas comment récupérer l'input 'text' avec celui checkbox pour insérer dans ma base de donnée. Chaque checkbox cochées doivent être liées avec le nom saisie au dessus .
0
younessnet Messages postés 6 Date d'inscription lundi 13 septembre 2010 Statut Membre Dernière intervention 16 septembre 2010 2
15 sept. 2010 à 17:45
nn, tu veux recuperer les valeurs des checkbox dans une autre page php "groupe_cotation.php"
et puisque ces checkbox sont generé d'une facon denamique, tu dois savoire leurs noms pour que tu les recupere à l'aide de $_POST['nomdechamp'].
le nom_de_checkbox (name) est un numero d'apres ton code, donc t'utilise le mm num pour recuperer la valeur de checkbox envoyer ,donc tu dois utiliser la mm boucle ( qui a generer les noms des checkbox dans la page de formulaire) pour recuperer les checkbox de votre formulaire dans la 2eme page.
et j'ai utilisé la fonction isset(), pour verifier si la case est coché ou non.
0
younessnet Messages postés 6 Date d'inscription lundi 13 septembre 2010 Statut Membre Dernière intervention 16 septembre 2010 2
16 sept. 2010 à 14:45
je vais modifier un peu dans le code de Alain_42:

la page groupe_cotation.php:

<?php
if(isset($_POST['valider']{
//le formulaire a été posté!
$nom_gc=$_POST['nom_gc'];
//on recupére dans un array les cases cochées $_POST['cases'] est un array contenant seulement les valeurs des cases effectivement cochées
$array_cochees=$_POST['cases'];

$host = 'localhost';
$user = 'root';
$pass = '';
$db = 'formation';
$link = mysql_connect ($host,$user,$pass) or die ('Erreur :'.mysql_error() );
mysql_select_db($db) or die ('Erreur :'.mysql_error());

//on parcours l'array des cases cochées pour faire un INSERT a chaque fois
for($i=0;$i<sizeof($array_cochees);$i++){

$insert = "INSERT INTO cotation (nom_gc, id_cotation) values ( '".$nom_gc."', '".$array_cochees[$i]."' )";

//pour le champs id_gc sera automatiquement rempli par MySQL

mysql_query($insert,$link) or die ('Erreur : '.mysql_error() );

}
mysql_close($link);
}
?>

je souhaite qu'il fonctionne , mais j'ai une petite remarque sur la logique de creation des tables, puisque si t'utilise la methode merise, tu dois creer une autre table qui va jouer le role d'un lien entre les deux tables (va contenir id_cotation,id_gc seulement), et comme ca tu va pas faire une repetition du nom_gc dans la table groupe_cotation
1
Luffy_87 Messages postés 10 Date d'inscription mardi 15 septembre 2009 Statut Membre Dernière intervention 16 septembre 2010
16 sept. 2010 à 15:05
Merci infiniment ça fonctionne!!!!!!!
Pour la table tu n'as pas tort, il faut que j'en rajoute une pour pouvoir mieux exploiter les données par la suite.
0
bonjour à tous,
je viens d'utiliser pour récupérer les valeurs de mes cases à cocher cependant je ne récupère que la valeur de la dernière case cochée !
quelqu'un a une idée ?
voici mon code:
	<form method="post" action="supprimer.php">
<?php
global $connexion;
include('connexion.php');

$film=$_POST['select_film'];
$requete="select nom_film from film where nom_film like '%$film%'";
$resultat=mysql_query($requete);
$ligne = mysql_fetch_array($resultat) ;
echo"<table>";
echo"<thead><tr><th>Film</th><th>supprimer</tr></thead>";
while( $ligne )
{
	echo '<tr><td class="largeur" >'.$ligne['nom_film'].'</td><td class="centre">'.'<input type="checkbox" name="cases" value="'.$ligne['nom_film'].'" >'."</td></tr>";
	$ligne = mysql_fetch_array($resultat) ;
}
echo"</table>";

?>
<input type="submit" name="valider" value="valider">
</form>


et ma page supprimer.php:
<?php
if (isset($_POST['valider']))
{
	$array_cochees=$_POST['cases'];
	for($i=0;$i<sizeof($array_cochees);$i++){
	echo $array_cochees;
	}
	//global $connexion;
	include('connexion.php');
	for($i=0;$i<sizeof($array_cochees);$i++){
        $requete = "DELETE FROM film WHERE nom_film = '".$array_cochees."'";
		$resultat=mysql_query($requete);
    
    }
}
?>


merci d'avance
0
Piou593 Messages postés 1 Date d'inscription mercredi 9 janvier 2013 Statut Membre Dernière intervention 9 janvier 2013
9 janv. 2013 à 14:56
Même soucis qu'atchoum17, quelqu'un a une idée pour récupérer plusieurs données au lieu de la dernière ?
0
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
9 janv. 2013 à 22:42
il faut mettre

......
$requete="select nom_film from film where nom_film like '%$film%'";
$resultat=mysql_query($requete);
//$ligne = mysql_fetch_array($resultat) ; // suprimer cette ligne
echo"<table>";
echo"<thead><tr><th>Film</th><th>supprimer</tr></thead>";
while( $ligne = mysql_fetch_array($resultat) ) //et faire le while comme ça
{
	//et mettre un name de la forme xxx[] pour avoir les checkbox array
	echo '<tr><td class="largeur" >'.$ligne['nom_film'].'</td><td class="centre">'.'<input type="checkbox" name="cases[]" value="'.$ligne['nom_film'].'" >'."</td></tr>";
	 
}

.......
1

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
younessnet Messages postés 6 Date d'inscription lundi 13 septembre 2010 Statut Membre Dernière intervention 16 septembre 2010 2
16 sept. 2010 à 13:40
bonjour,
Luffy_87 stp reexplique ton probleme, puisque j'arrive pas à bien comprendre ce que tu veux faire.
combien de table tu as? dans quelle table tu veux inserer ( ou modifier le contenu d'une table par) le resultat du formulaire,
qui ce qu'on a? et qui ce qu' on veut?
0
Luffy_87 Messages postés 10 Date d'inscription mardi 15 septembre 2009 Statut Membre Dernière intervention 16 septembre 2010
16 sept. 2010 à 14:04
Bonjour younessnet,

j'ai une table cotation où les champs sont : id_cotation et nom_cotation ainsi qu'une autre table groupe_cotation avec les champs id_gc, nom_gc et id_cotation.
En fait, je veux faire des groupes de cotations donc id_cotation des 2 tables doivent correspondre. Dans ma page php je voudrai saisir le nom du groupe (nom_gc) et cocher ensuite grâce aux checkbox les cases qui correspondent au nom du groupe. Ensuite lorsque je clique sur le bouton "enregistrer", j'aimerai que les données soient insérées dans groupe_cotation.

Ex : si il y a 3 checkbox cochées, il faut 3 enregistrements dans la table groupe_cotation.(donc chaque enregistrements avec id_gc qui est auto incrémenté, le nom_gc et l'id_cotation)
0