L'insertion de case à cocher valeurs en Base de données MySQL avec PHP
tout le monde.
Je sais que c'est un présent sujet traité, mais j'ai cherché partout et impossible de le faire résolus.
J'ai une série de cases à cocher dans ma page web et la nécessité d'insérer les valeurs dans une base de données.
Pour ce que j'ai lu, il est censé être fait de cette façon:
<tr>
<td class="titulofila">Salón Completo con: </td>
<td>
<table width="100%"><tr><td>
<label>
<input name="equipSalon[]" type="checkbox" id="equipSalon[]" value="mesa" />
mesas </label>
</td><td>
<label>
<input name="equipSalon[]" type="checkbox" id="equipSalon[]" value="sillas" />
sillas </label>
</td><td>
<label>
<input name="equipSalon[]" type="checkbox" id="equipSalon[]" value="sofa" />
sofá</label>
</td></tr></table>
</td>
</tr>
Et puis, dans le script PHP que le bouton soumettre prend à:
$equipSalonF=mysql_real_escape_string(implode(',', $_POST['equipSalon']));
mysql_query("INSERT INTO markers (ciudad,
zona,address,name,
telefono,email,piso,
tipo,erasmus,nhabitaciones,
plazas,equipHabita,nbanos,
salon,cocina,electrodomesticos,
garaje,internet,calefaccion,
sexo,precio,superficie,otros,
fecha,lat,lng)
VALUES ('{$_POST['ciudad']}','{$_POST['zona']}',
'{$_POST['address']}','{$_POST['name']}','{$_POST['telefono']}',
'{$_POST['email']}','{$_POST['piso']}','{$_POST['tipo']}',
'{$_POST['erasmus']}','{$_POST['nhabitaciones']}',
'{$_POST['plazas']}','{$equipHabitaF}',
'{$_POST['nbanos']}','{$equipSalonF}',
'{$equipCocinaF}','{$equipElectroF}','{$_POST['garaje']}',
'{$_POST['internet']}','{$_POST['calefaccion']}',
'{$_POST['sexo']}','{$_POST['precio']}',
'{$_POST['superficie']}','{$_POST['otrosF']}',
'{$_POST['fecha']}','{$_POST['lat']}',
'{$_POST['lng']}'",$link);
J'ai plus de cela les cases à cocher et cela ne fonctionne pas, dit simplement: "Vous avez une erreur dans votre syntaxe SQL; consultez le manuel qui correspond à votre versions du serveur MySQL pour la bonne syntaxe à utiliser près de "à la ligne 21"
Si quelqu'un veut regarder la index.html et php les fichiers, vous pouvez avoir ici: http://paste.ideaslabs.com/show/8qEHDnsZdr la forme commence à la ligne 147. Et le Fichier PHP ici: http://paste.ideaslabs.com/show/IJFLSHM7Ka
Merci d'avance.
- Sauf que vous devez supprimer les attributs ID. Vous avez seulement besoin de le faire pour le nom de l'attribut.
- si vous voulez vraiment voir ce qui se passe sous le capot, vidage de la variable POST: <?php echo "<!-- POST: "; print_r($_POST); echo "-->\n"; ?> ... puis utilisez l'affichage de la source pour voir le débogage dans les commentaires
Vous devez vous connecter pour publier un commentaire.
Les cases à cocher sont publiées uniquement lorsqu'ils sont cochées. Donc, si la case n'est pas cochée, est la volonté de ne pas apparaître dans
$_POST
. En outre, vous devriez généralement pas de valeurs pour les cases à cocher. Au lieu d'utiliser les noms de distinguer entre eux.Dans la base de données j'ai l'habitude de représenter les cases à cocher avec tinyints et de stocker 1 pour vos bagages et 0 pour non cochée.
Également noter que html nécessite id doit être unique. Si vous ne pouvez pas avoir plusieurs éléments avec le même id. Et vous devez désinfecter vos entrées pour prévenir l'injection sql. Utilisation
mysql_real_escape_string()
sur les entrées de l'utilisateur que d'aller dans la base de données.Mise à jour
Le principal problème est que la requête est en manque un "
)
" à la dernière ligne.La requête devrait ressembler à
Note la fermeture "
)
" sur la dernière ligne de la requête. Notez également que la création de la requête comme ceci, dans une variable, permet à la sortie de la requête créée de sorte que vous pouvez voir exactement ce que est envoyée à MySQL et vous pouvez également tester votre requête dans un environnement différent (c'est à dire dans phpmyadmin ou toute autre base de données de l'outil d'administration).$_POST
pour un contrôle de case à cocher, mais si la case n'est pas cochée alors il ne sera jamais publié. Donc, vous avez à mettre en œuvre une logique de voir les valeurs qui ont été publiés et l'utiliser pour déterminer les valeurs n'ont pas été validées.