Insertion checkbox dans une base de donnée

Résolu
Luffy_87 Messages postés 10 Date d'inscription   Statut Membre Dernière intervention   -  
Alain_42 Messages postés 5361 Date d'inscription   Statut Membre Dernière intervention   -
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   Statut Membre Dernière intervention   894
 
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   Statut Membre Dernière intervention  
 
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   Statut Membre Dernière intervention   2
 
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   Statut Membre Dernière intervention  
 
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   Statut Membre Dernière intervention   2
 
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   Statut Membre Dernière intervention   2
 
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   Statut Membre Dernière intervention  
 
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
atchoum17
 
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   Statut Membre Dernière intervention  
 
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   Statut Membre Dernière intervention   894
 
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   Statut Membre Dernière intervention   2
 
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   Statut Membre Dernière intervention  
 
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