Case à cocher php / mysql

Résolu
tortue60 Messages postés 250 Date d'inscription   Statut Membre Dernière intervention   -  
tortue60 Messages postés 250 Date d'inscription   Statut Membre Dernière intervention   -
bonjour,

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


4 réponses

jeremy.s Messages postés 1226 Date d'inscription   Statut Membre Dernière intervention   79
 
Salut !

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" :)
0
tortue60 Messages postés 250 Date d'inscription   Statut Membre Dernière intervention  
 
la mes checkbot provienne d'une table dans ma bdd: table souhaiteobtenir
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
0
jeremy.s Messages postés 1226 Date d'inscription   Statut Membre Dernière intervention   79
 
Moi je ne vois pas de problème :
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 :)

0
tortue60 Messages postés 250 Date d'inscription   Statut Membre Dernière intervention  
 
Je vois pas comment faire ma requête avec le last_inster_id et si je la met dans un while ou pas
0
jeremy.s Messages postés 1226 Date d'inscription   Statut Membre Dernière intervention   79
 
Le last insert id n'est pas dans le requete. Tu fais ton insert into, et ensuite sur l'objet (mysql_connect, pdo ou autre) tu fais un last insert id, c'est une fonction PHP pas SQL.
0
tortue60 Messages postés 250 Date d'inscription   Statut Membre Dernière intervention  
 
et pour mon insert, il me faut des jointures puisque je récupère id de la table souhaiteobtenir
0
jeremy.s Messages postés 1226 Date d'inscription   Statut Membre Dernière intervention   79
 
D'abord tu ajoutes les infos dans ta table info
Tu récupères le last insert id
Tu ajoutes une lignes pour chaque checkbox chochée avec le last insert id stocké et la valeur du checkbox : tu as donc bien ton idinfo (last insert id) et le idsouhait (valeur de la checkbox)
0
tortue60 Messages postés 250 Date d'inscription   Statut Membre Dernière intervention  
 
on fait comment pour récupérer le last_insert_id
0
jeremy.s Messages postés 1226 Date d'inscription   Statut Membre Dernière intervention   79
 
Il faut récupéré ton last insert id APRES avoir fait ta requete

1) Tu Fais ta requete 1
2) tu récupères last insert id
3) Pour chaque checkbox cochée : tu fais ta requete 2
0
tortue60 Messages postés 250 Date d'inscription   Statut Membre Dernière intervention  
 
sa veut dire que mon last insert id et ma requete 2 je les met dans le if?
0
jeremy.s Messages postés 1226 Date d'inscription   Statut Membre Dernière intervention   79
 
Oui !
Mais si t'as plusieurs checkbox coché il faut faure plusieurs requete 2, donc il faut la mettre dans une boucle qui ergarde si la checkbox est cochée.
Et le last insert id avant la boucle
0
jeremy.s Messages postés 1226 Date d'inscription   Statut Membre Dernière intervention   79
 
J'ai edité le post, actualise la page
0
tortue60 Messages postés 250 Date d'inscription   Statut Membre Dernière intervention  
 
dans un while pour la boucle
while($db ->query(requete2) != false)
{
}
??
0
jeremy.s Messages postés 1226 Date d'inscription   Statut Membre Dernière intervention   79
 
Non ca c'est l'execution de la requete, pas la vérification des checkbox !
0