Bonjour à tous,

J'ai créé un formulaire avec trois tables :
- une table formulaire (avec un id, un nom, ...),
- une table intermédiaire nommée siteformulaire (avec id_formulaire et id_site)
- une table site (qui contient un id et un nom), cette dernière étant reliée à une checkbox de mon formulaire.

Je souhaite effectuer une requête qui met à jour automatiquement les champs de la checkbox par rapport aux données dans la table site.
Exemple : si dans la table site, il y a deux noms affectés, il sera affiché dans le formulaire deux cases checkbox avec leur nom.

Je souhaite obtenir le résultat suivant dans la table site formulaire :

* Si un utilisateur rentre deux données, on aura le résultat suivant :
- id_formulaire = 1 id_site = 1 (=>"Internet")
- id_formulaire = 1 id_site = 2 (=>"Presse")

* Si un deuxième utilisateur rentre ses données, on aura le résultat suivant :
- id_formulaire = 2 id_site = 2 (=>"Presse")
- id_formulaire = 2 id_site = 3 (=>"Autres")

De plus je souhaiterais pouvoir afficher les noms affectés à la checkbox lorsque l'utilisateur coche telle ou telle case de la checkbox.

J'ai essayé de convenir à cet objectif sans pouvoir y parvenir. Voici mon code...

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
//Partie formulaire
 
		<tr>
			<td width="250"><label for="site[]">Comment avez vous connu le site ?</label></td>
			<td>
 
			<?php foreach($aSitesForm as $iSite => $sSite){ ?>
				<input type="checkbox" name="site[]" value="<?php echo $iSite; ?>" /> <label><?php echo $sSite; ?></label>
			<?php } ?>
 
			</td>
		</tr>
 
//_______________________________________________________
 
 
//Partie requête
 
		    $sql = "INSERT INTO formulaire(id, nom, prenom, adresse, code_postal, ville, telephone, fax, email, client, devis, contact) 
		    VALUES('','$nom','$prenom','$adresse','$code_postal','$ville','$telephone','$fax','$email', '$client', '$devis', '$contact')";
 
   			mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());
 
    		$id_formulaire = mysql_insert_id();// on récupère l'id_formulaire qui vient d'être généré
 
		if(is_array($aSite)){ // table site
		foreach($aSite as $iSite){
 
	        $sql = "INSERT INTO siteformulaire(id_formulaire, id_site) VALUES ('$id_formulaire','$iSite')";
	        mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());
 
			}
 
 
		}
 
		$sSQL = "SELECT * FROM site ORDER BY n_site";  
		$qSite = mysql_query($sSQL);
 
		$aSitesForm = array(); // table siteformulaire
	while($aSite = mysql_fetch_assoc($qSite)){  // recherche id et nom trouvé dans la table site
 
		//$aSite=array($iSite=>$sSite);
		$aSitesForm[$aSite['id']] = $aSite['n_site']; // lie id avec nom de la table site
 
		}
 
 
//____________________________________
 
 
//Partie affichage
 
    	echo '<b>Vous connaissez le site :</b><ul>';
 
    foreach($aSitesForm as $iSite){ //on insère pour chaque id_site
 
    	echo '<li>'.$aSitesForm[$iSite].'</li>';
    }
    	echo '</ul><br />';
N'hésitez pas à me faire part de vos remarques.

Merci