Case à cocher php / mysql

Résolu/Fermé
tortue60 Messages postés 250 Date d'inscription jeudi 21 mars 2013 Statut Membre Dernière intervention 1 septembre 2013 - 14 mai 2013 à 20:56
tortue60 Messages postés 250 Date d'inscription jeudi 21 mars 2013 Statut Membre Dernière intervention 1 septembre 2013 - 17 mai 2013 à 23:11
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


A voir également:

4 réponses

jeremy.s Messages postés 1226 Date d'inscription lundi 28 mars 2011 Statut Membre Dernière intervention 2 septembre 2013 79
14 mai 2013 à 21:17
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 jeudi 21 mars 2013 Statut Membre Dernière intervention 1 septembre 2013
14 mai 2013 à 21:24
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 lundi 28 mars 2011 Statut Membre Dernière intervention 2 septembre 2013 79
14 mai 2013 à 21:36
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 jeudi 21 mars 2013 Statut Membre Dernière intervention 1 septembre 2013
14 mai 2013 à 21:38
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 lundi 28 mars 2011 Statut Membre Dernière intervention 2 septembre 2013 79
14 mai 2013 à 21:54
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 jeudi 21 mars 2013 Statut Membre Dernière intervention 1 septembre 2013
14 mai 2013 à 21:57
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 lundi 28 mars 2011 Statut Membre Dernière intervention 2 septembre 2013 79
14 mai 2013 à 22:04
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 jeudi 21 mars 2013 Statut Membre Dernière intervention 1 septembre 2013
14 mai 2013 à 22:16
on fait comment pour récupérer le last_insert_id
0
jeremy.s Messages postés 1226 Date d'inscription lundi 28 mars 2011 Statut Membre Dernière intervention 2 septembre 2013 79
14 mai 2013 à 23:12
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 jeudi 21 mars 2013 Statut Membre Dernière intervention 1 septembre 2013
14 mai 2013 à 23:18
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 lundi 28 mars 2011 Statut Membre Dernière intervention 2 septembre 2013 79
Modifié par jeremy.s le 14/05/2013 à 23:30
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 lundi 28 mars 2011 Statut Membre Dernière intervention 2 septembre 2013 79
14 mai 2013 à 23:32
J'ai edité le post, actualise la page
0
tortue60 Messages postés 250 Date d'inscription jeudi 21 mars 2013 Statut Membre Dernière intervention 1 septembre 2013
14 mai 2013 à 23:33
dans un while pour la boucle
while($db ->query(requete2) != false)
{
}
??
0
jeremy.s Messages postés 1226 Date d'inscription lundi 28 mars 2011 Statut Membre Dernière intervention 2 septembre 2013 79
15 mai 2013 à 00:47
Non ca c'est l'execution de la requete, pas la vérification des checkbox !
0