Problème:
Création d'un formulaire d'inscription avec cases à cocher
<form method="post" enctype="multipart/form-data" action="recup_donnee.php">
Nom :<input type="text" name="nom_etab" size="40" value="" maxlength="70"><br>
Texte :<textarea name="texte_etab" cols="40"></textarea><br>
Pictos :<?php
$db=mysql_connect('localhost', 'root', '') or die('Erreur de connexion '.mysql_error());
mysql_select_db('test_picto',$db);
$picto = "SELECT id_picto, nom_picto, image_picto FROM picto";
$result = mysql_query($picto);
while ($row = mysql_fetch_assoc($result)) {
echo '<input type="checkbox" name="picto[]" value="' . $row['id_picto'] . '"/>
<img src="picto/' . $row['image_picto'] . '">';
}
?><br>
<input type="submit" name="upload" value="Envoyer">
</form>
Page de traitement :
<?php
// On commence par récupérer les champs
if(isset($_POST['nom_etab'])) $etab=$_POST['nom_etab'];
else $etab="";
if(isset($_POST['texte_etab'])) $texte=$_POST['texte_etab'];
else $texte="";
// On vérifie si les champs sont vides
if(empty($etab) OR empty($texte))
{
echo '<font color="red">Aucun champ ne doit rester vide !</font>';
}
// On efface tout
$sql = "DELETE FROM liaison id_etab WHERE id_etab =" . $id_etab;
// on ré-ecrit
if (isset($_POST['picto'])) {
foreach ($_POST['picto'] as $id_picto) {
$sql = "INSERT INTO liaison (id_etab, id_picto) VALUES (id_etab, intval($id_picto))";
}
}
// Aucun champ n'est vide, on peut enregistrer dans la table
$db = mysql_connect('localhost', 'root', '') or die('Erreur de connexion '.mysql_error());
// sélection de la base
mysql_select_db('test_picto',$db) or die('Erreur de selection '.mysql_error());
// on écrit la requête sql
$sql = "INSERT INTO etab(id_etab,etab,texte) VALUES('".mysql_real_escape_string('')."','".mysql_real_escape_string($etab)."','".mysql_real_escape_string($texte)."')";
// on insère les informations du formulaire dans la table
mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());
// On récupère l'id_etab qui vient d'être généré
$id_etab = mysql_insert_id();
// Ci-dessous on insère les infos dans liaison
$sql = "INSERT INTO liaison(id_liaison, id_etab, id_picto) VALUES('','$id_etab','$id_picto')";
mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());
// On insère les informations du formulaire dans la table
mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());
// On affiche le résultat pour le visiteur
echo "<br />";
echo 'Votre Etablissement a été enregistré avec succés !';
echo "<br />";
mysql_close(); // on ferme la connexion
?>
Mon souci, c'est mes établissement s'enregistrent 2 fois dans ma base de liaison entre pictos et etab.Quant aux picos, ce n'est pas le l'id du picto qu s'enrgistre, mais le nombre de pictos cochés dans le formulaire.
Si vous avez une solution, parce que je galère depuis des jours la-dessus et ça m'énerve !!!!