Case à cocher php / mysql
Résolutortue60 Messages postés 269 Statut Membre -
Je suis entrain de réaliser une application web où j'ai un formulaire de demande d'information. Celui-ci comporte des case à cocher dont je récupère les intitulés dans ma bdd. Ce que je voudrais, c'est savoir si ma case est cocher ou non et si c'est cocher sa m'ajoute un enregistrement dans ma table souhaitinfo qui est compose d'un idinfo et d'un idsouhait tout deux venant de deux table différentes. Commet puis-je faire? Je pense que je doit utiliser la fonction last_insert_id pour récupérer le dernier enreistrement insérer dans ma table info mais après je sais pas comment faire.
Voici mes script:
formulaire:
<body>
<div id="corps">
<h1 class="titrecentre">Demande de documentation</h1>
<form id="demandeInfo" action="demandeInfoAjout.php" method="post">
<table>
<tr>
<td>
nom :
</td>
<td>
<input type="text" name="nom" id="nom"/>
</td>
<td>
e-mail :
</td>
<td>
<input type="text" name="email" id="email"/><br/><br/>
</td>
</tr>
<tr>
<td>
téléphone :
</td>
<td>
<input type="text" name="teleph" id="teleph"/>
</td>
<td>
Souhaitez-vous nous rencontrer ?:
</td>
<td>
oui <input type="radio" name="rencontre" id="rencontreOui" checked = "checked" value="O"/>
non <input type="radio" name="rencontre" id="rencontreNon" value="N"/><br/>
</td>
</tr>
<tr>
<td colspan="4"><br/>
Comment avez-vous découvert notre site ?
<select name="origine" id="origine">
<?php
include("includes/accesBDD.php");
$requete = "select * from originedecouverte";
$result = $db->query($requete);
$ligne = $result->fetch_object();
while($ligne != false)
{
$cle = $ligne->id;
$valeur = $ligne->libelle;
echo "<option value = $cle>$valeur</option>";
$ligne = $result->fetch_object();
}
?>
</select>
</td>
</tr>
<tr>
<td>
Je souhaite obtenir<br/>
</td>
<td colspan="2">
<?php
$requete = "select * from souhaiteobtenir";
$result = $db->query($requete);
$ligne = $result->fetch_object();
while($ligne != false)
{
$cle = $ligne->id;
$valeur = $ligne->libel;
echo "<input type ='checkbox' name = '$cle' value = '$cle' />$valeur<br />";
$ligne = $result->fetch_object();
}
?>
</td>
<td>
<br/>vos remarques :<br/>
<textarea name="remarque" id="remarque" cols="30" rows="3"></textarea><br/><br/>
</td>
</tr>
<tr>
<td colspan="3"></td>
<td >
<input type ="submit" name="valider" id="valider" value= "Envoyer"/>
</td>
<td></td>
</tr>
</table>
</form>
</div>
<?php
// pied de page
include("includes/piedPage.php");
?>
</body>
script d'ajout:
<?php
// ajout du script de la connexion à la bdd
include("includes/accesBDD.php");
extract($_POST); // récupère les données transmisent par le formulaire et créer les variables du tableau $_POST
$requete = "insert into demandeinfo values(0,'$nom','$email','$teleph','$rencontre',$origine,'$remarque')";
if ($db-> query($requete)==true) // appel de la fonction qui permet d'exécuter la requête contenue dans la variable $requete
{
Echo "<script language='Javascript'>";
Echo "<!--\n"; // le "\n" permet de passer une ligne en Javascript
Echo "alert('Votre demande d\'information a été enregistrée !');\n";
Echo "// -->\n";
Echo "</script\n>";
include("formDemandeInfo.php");
}
else
{
Echo "<script language='Javascript'>";
Echo "<!--\n"; // le "\n" permet de passer une ligne en Javascript
Echo "alert('Un problème est survenu lors de l'enregistrement de votre demande d'information !');\n";
Echo "// -->\n";
Echo "</script\n>";
include("formDemandeInfo.php");
}
if ($db-> close()==false) // apel de la fonction qui ferme la conexxion
echo ("Un problème est survenu lors de la fermeture de la connexion à la BD") ;
?>
Merci de votre aide
- Case à cocher php / mysql
- Case à cocher libre office - Forum LibreOffice / OpenOffice
- Raccourci clavier case à cocher - Forum Clavier
- Case à cocher excel ✓ - Forum Excel
- Case à cocher open office - Forum LibreOffice / OpenOffice
- Cocher une case avec Libre Office Writer - Forum LibreOffice / OpenOffice
4 réponses
Le problème est de générer un enregistrement dans la table souhaitinfo pour chaque case à cocher sélectionnée dans le formulaire, en liant l'id info nouvellement inséré à l'idsouhait. La solution est d'insérer les données dans la table info, puis de récupérer l'identifiant généré et, pour chaque case cochée, d'insérer une ligne dans souhaiteinfo avec cet id et l'id de la case. En cas de non-cochage d'une option, aucune ligne correspondant à cette option n'est ajoutée, ce qui évite des enregistrements inutiles dans la table souhaiteinfo, ce qui garantit la cohérence des données. D'autres pratiques, notamment les requêtes préparées et les transactions, renforcent la sécurité lorsque plusieurs enregistrements doivent être liés et peuvent être intégrées dans le flux d'enregistrement.
Pour savoir si une checkbox est coché, c'est comme pour n'importe quel autre input :
if(isset($_POST['name de la checkbox']) && !empty($_POST['name de la checkbox']))
Ensuite bah tu fais tes insertions "normalement" :)
Dans mon script d'ajout, j'ai d'abord une première requete qui ajoute dans ma table info mais pour les checkbox j'ai une table associative qui comporte idinfo et idsouhait. Je doit récupère l'id du dernier enregistrement dans la table info avec la fonction last_insert_id pour ensuite insérer les id des case qui sont cocher dans la table associative infosouhait avec le dernier id de la table info
Je c pas trop comment faire sa
Tu as toutes les infos il me semble.
Tu regardes si ta checkbox est cochée, si elle l'est tu ajoutes avec le last_insert_id de juste avant pour l'idinfo, et la valeur de la checkbox pour idsouhait (dans ton while tu donne comme value l'id du souhait)
Et tu fais ca pour chaque checkbox :)