isset d'un GET d'une checkbox [RESOLU] - PHP - Programmation
Marsh Posté le 16-03-2009 à 16:02:49
On n'utilise pas la méthode GET pour insérer des données (effets de bords), cf. protocole HTTP. Il faut toujours utiliser la méthode POST dans ce cas
Marsh Posté le 16-03-2009 à 16:04:29
Je m'attèles à modifier tout sa et je poste le résultat.
Merci de cette réponse rapide.
EDIT : Comme je m'y attendais un peu, le fait de passer de GET à POST rend le code plus cohérent mais ne résoud pas le problème.
Je continue à chercher l'erreur ou la maladresse que j'aurais pu faire.
Marsh Posté le 16-03-2009 à 16:25:02
au lieu de localhost met 127.0.0.1,
si les magic quotes sont sur off
Code :
|
apres '$mysqlquery=mysql_query($sql1,$link) or die ('Erreur : '.mysql_error()); '
Code :
|
sinon pour ta validation, de formulaire faut le faire en javascript
Marsh Posté le 16-03-2009 à 16:57:48
stealth35 a écrit : au lieu de localhost met 127.0.0.1,
|
Je suis pas autant a l'aise que toi pour la manipulation de tableau et la concaténation de requètes mySQL.
Merci mille fois!
Le problème "semble être résolu", je fais quelques tests jusqu'à ce soir et je mettrais [RESOLU] devant le post si c'est bon.
Je m'attaquerais au javascript demain, mais effectivement, je ne vois que cette solution.
Marsh Posté le 16-03-2009 à 17:09:00
avec le framework dojo ca se fait super rapidement la validation de formulaire, tu pourras pas faire submit tant que les champs ne seront pas validé, de plus ca diras les erreurs et ou
Marsh Posté le 16-03-2009 à 18:13:28
par exemple
Code :
|
Marsh Posté le 16-03-2009 à 18:40:16
ReplyMarsh Posté le 16-03-2009 à 23:41:37
oui a commencer deja par une validation par session sinon tout le monde peu poster des trucs,
puis tout ce qui est formatage de donnée (date format timestamp, bool, base64...)
Marsh Posté le 18-03-2009 à 14:35:12
Merci beaucoup pour toutes vos réponses, le problème était peut-être également lié au fait que je n'avais pas fermé la connexion MySQL, et comme les premières requètes renvoyaient une erreur, lorsque j'essayais d'envoyer les données par le formulaire, la base de données était déja bloquée.
J'ai beaucoup avancé sur ce projet(grâce à d'autre posts de ce forum d'ailleurs), mais j'ai de nouveau un problème au niveau d'un affichage d'icones sur une API Googlemap.
Je vais poster mon problème chez google groups, si jamais ils ne trouvent pas la solution, je créerai un nouveau topic ici même.
Marsh Posté le 16-03-2009 à 15:43:38
Le titre du sujet n'est peut-être pas très explicite, mais je pense pouvoir me faire comprendre clairement :
J'ai un formulaire qui contient plusieurs champs afin de les enregistrer dans une base de données mySQL.
Parmi ces champs, de nombreux champs de textes divers et variés, et puis un champ "domaine d'activité" composé d'une checkbox.
Le HTML :
<form name='envoi' action='#' method='get'>
<tr><td>* Nom d'affaire :</td><td><input type='text' name='nomaffaire' /></td>
<tr><td>* Nom :</td><td><input type='text' name='nom' /></td>
<tr><td>* Prenom :</td><td><input type='text' name='prenom' /></td>
<tr><td>* Adresse :</td><td><input type='text' name='adresse' /></td>
<tr><td>Site-Web :</td><td><input type='text' name='siteweb' /></td>
<tr><td>Latitude :</td><td><input type='text' name='lat' value='' /></td>
<tr><td>Longitude :</td><td><input type='text' name='lon' value='' /></td>
<tr><td>* Domaine d'activité :</td><td><input type="checkbox" name="choix[]" value="1" />Fruits et légumes
<br /><input type="checkbox" name="choix[]" value="2" />Produits laitiers/fromages
<br /><input type="checkbox" name="choix[]" value="3" />Viande
<br /><input type="checkbox" name="choix[]" value="4" />Produits transformés/divers
<br /><input type="checkbox" name="choix[]" value="5" />Artisanat/divers
<br /><input type="checkbox" name="choix[]" value="6" />Economie solidaire</td>
<tr><td>Description :</td><td rowspan=2><TEXTAREA rows='3' cols='40' name='description' value='' ></TEXTAREA></td>
<tr><td></td><td></td></tr>
<tr><td><input type='submit' value='Enregistrer'/></td></tr></form></table>
Le Code PHP
if (isset($_GET) && !empty($_GET)){
if(!empty($_GET['nomaffaire'])
&& !empty($_GET['nom'])
&& !empty($_GET['prenom'])
&& !empty($_GET['adresse'])
&& !empty($_GET['lat'])
&& !empty($_GET['lon'])
&& is_null($_GET['choix']))
{
$link=mysql_connect('localhost','root','') or die ('Erreur : '.mysql_error());
mysql_select_db('carte',$link);
$sql1 = "INSERT INTO info_prod(Nom_affaire,nom_prod,prenom_prod,adresse_prod,description_prod,siteweb_prod,active)
VALUES('".$_GET['nomaffaire']."','".$_GET['nom']."', '".$_GET['prenom']."', '".$_GET['adresse']."', '".$_GET['description']."','".$_GET['siteweb']."', 'false')";
echo "entrée ajoutée avec succès!";
$mysqlquery=mysql_query($sql1,$link) or die ('Erreur : '.mysql_error());
$sql2 = "SELECT LAST_INSERT_ID()" ;
$mysqlquery2=mysql_query($sql2,$link) or die ('Erreur : '.mysql_error());
$query2=mysql_fetch_array($mysqlquery2,MYSQL_ASSOC);
foreach($_GET['choix'] as $a)
{
$sql3 = "INSERT INTO liaison_domaine_prod(id_domaine,id_prod) VALUES('".$a."','".$query2['LAST_INSERT_ID()']."')";
$mysqlquery3=mysql_query($sql3,$link) or die ('Erreur : '.mysql_error());
}
mysql_close($link);
}
}
Le problème que je rencontre est visiblement lié à mes conditions, le symptôme est simple, lorsque je rempli qu'une partie des champs, la page ne reste en chargement, pendant plus de 30sec.
J'ai biensur essayé de changer mes conditions, mais malgré tous mes différents tests, je commence à ne plus savoir ou j'en suis.
Ce que je souhaite est très simple : Si les champs de texte obligatoires sont remplis, et si au moins une case est cochée, alors j'execute la connexion à la base.
Je suis ouvert à toute proposition d'amélioration de mon code et à tous conseils et commentaires constructifs.
Merci d'avance à tous ceux qui m'aiderons à résoudre ce problème.
Message édité par HpX_tech le 18-03-2009 à 15:14:39