Problème liste déroulante

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Problème liste déroulante

par Invité » 15 sept. 2005, 11:37

bien vu ! merci mec ça marche, t'es mon dieu et mon sauveur :lol:

par Cyrano » 15 sept. 2005, 11:12

Tu peux tester si le bouton d'envoi a été cliqué : ton bouton submit a un attribut name, par exemple name="envoi": dans la partie traitement, commence par tester si la valeur existe:
<?php
if(isset($_POST['envoi']))
{
    //... le bouton submit a été cliqué, on peut alors exécuter la requête après les vérifications d'usage;
}
elseif(isset($_POST) && !isset($_POST['envoi']))
{
    //... La soumission du formulaire vient d'un évènement onchange sur un élément : autre type de traitement.
}
else
{
    //.... Affichage normal du formulaire (première ouverture de la page)
}
?>

par Invité » 15 sept. 2005, 10:55

mon formulaire fait plus de 300 lignes lol. mais toute les listes déroulantes sont dans ce genre là.

Avec la solution que tu m'as donné le this.form.submit() sur l'action des listes déroulante va aussi exécuter la requête. Tu n'aurais pas une parade ?

par Cyrano » 15 sept. 2005, 10:51

C'est tout le formulaire qu'il aurait fallu mettre: enfin pour cette partie là, on va simplifier un peu et sortir en plus un code conforme:
<select name="type" onchange="this.form.submit()">
<?php
$connexion = mysql_connect("localhost","root","");
mysql_select_db("TOSCANE",$connexion);
$requete = "SELECT * FROM TYPE";
$typ = $_POST['type'];
if($result = mysql_query($requete))
{
    while($ligne = mysql_fetch_row($result))
    {
        $selected = ($ligne[0] == $typ) ? " selected" : null;
        echo "<option value=\"". $ligne[0] . $selected ."\">". $ligne[1] ."</option>\n";
    }
}
?>
</select>

par Invité » 15 sept. 2005, 10:39

Type :
<select name="type" onchange="this.form.submit()">
<?php
$connexion = mysql_connect("localhost","root","");
mysql_select_db("TOSCANE",$connexion);
$requete = "SELECT * FROM TYPE";
$typ = $_POST['type'];
if($result = mysql_query($requete)) {
	while($ligne = mysql_fetch_row($result)) {
		if ($ligne[0] == $typ) { echo "<option value=$ligne[0] selected>$ligne[1]"; }
		 else { echo "<option value=$ligne[0]>$ligne[1]"; }
	}
}
?>
je sais c'est le bordel, mon code c'est n'importe quoi mais je m'y retrouve comme ça et ça marche lol. C'est pour ça que j'ai mis un this.form.submit(), comme ca avec le php self du action du Form ca me refraichissait la page et donc me mettai à jour la liste déroulante ^^

Pour ça que si je change ça m'embete un peu ^^

par Cyrano » 15 sept. 2005, 10:25

Fais voir ton code.

par Invité » 15 sept. 2005, 10:20

oui mais alors je fais quoi pour mettre à jour mes listes déroulantes :(

par Cyrano » 15 sept. 2005, 10:17

ÇA ne change rien au faire que l'include d'un fichier PHP n'a strictement rien à faire dans un onclick

par Invité » 15 sept. 2005, 10:16

mon problème reviendrait au même. Vu que pour mettre à jour les listes déroulantes par rapport aux autres j'utilise aussi this.form.submit(), quand je sélectionnerai un élément de cette liste déroulante ça me l'enverra dans la base SQL quand même ^^

par Cyrano » 15 sept. 2005, 10:12

Ça n'a rien à faire là, onclick est un évènement JavaScript et le PHP ne sera pas interprété coté client.

Ce que tu peux faire à la rigueur, c'est onclick="this.submit()" et dans l'attribut action de ta balise form mettre l'url du fichier insertion.php.

par Invité » 15 sept. 2005, 10:09

le code php qui insère les éléments du formulaire dans la base sql ^^

par Cyrano » 15 sept. 2005, 10:07

Il y a quoi dans le fichier "insertion.php" ?

par Invité » 15 sept. 2005, 09:59

bah le problème c'est surtout que cette ligne :

<input type=SUBMIT value='Envoyer' onclick="<? include('insertion.php'); ?>">

il s'occupe pas du OnClick, et il m'include donc le fichier insertion.php a chaque fois et me poste la requête à chaque refresh :(

par Vaedan » 15 sept. 2005, 09:55

euh ça m'a tout l'air d'un probleme de javascript. pas de php ...

Problème liste déroulante

par Invité » 15 sept. 2005, 09:54

Bonjour ^^

J'ai un petit problème avec un code que j'ai fais.

J'ai fais un petit formulaire pour saisir différente chose, et lorsqu'on clique sur une liste déroulante de ce formulaire, une autre liste déroulante de ce formulaire est mise à jour et ainsi de suite.

Le problème c'est que quand je clique et sélectionne un élément de cette liste déroulante, il poste la requête pour l'insérer dans la base sans que je clique sur le boutton de soumission du formulaire :/

Lignes majeures liées au problème de mon code :

<form action='<? $SERVER_["PHP_SELF"]; ?>' method=POST id='formulaire'>

...

Équipement :
<select name="equipement" onchange="this.form.submit()">

...

<input type=SUBMIT value='Envoyer' onclick="<? include('insertion.php'); ?>">

----

Voilà en gros c'est ça. Je crois que il prend pas en compte le OnClick et qu'il prend directement le code d'insertion dans la base de données.

Quelqu'un aurait-il une idée pour que je m'en sorte ? merci ^^