begin process at 2012 05 30 15:47:24
  Trouver un code source :
 
dans
 
Accueil > Forum > 

PHP

 > 

Base de données

 > 

MySQL

 > 

listes deroulantes PHP


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

listes deroulantes PHP

mercredi 25 juillet 2007 à 19:12:40 | listes deroulantes PHP

la_main_sur_le_katana

Bonjour,
j'ai un soucis. Je dois faire un formulaire avec 2 listes déroulantes liées plus des champs texte à remplir en PHP. J'arrive à faire 2 listes déroulantes dépendantes l'une de l'autre mais ce qu'il y a c'est que je dois remplir les champs texte pour modifier la base de données qui se trouvent derrière (base de données MYSQL). Je dois récupérer les valeurs sélectionnées dans les 2 listes plus les champs entrés et mettre tout ça dans une requête. Le problème c'est que dans le action de mon formulaire j'ai "<?php echo($_SERVER['PHP_SELF']); ?>" et donc je sais pas comment faire pour appeler une page php qui va faire la requête sql avec les éléments récupérés.

Merci de votre aide
mercredi 25 juillet 2007 à 20:05:23 | Re : listes deroulantes PHP

rethenor

Je ne sais pas si c'est ça, mais si j'ai bien compris quand tu valides ton formulaire, la page se rappelle elle-même ($_SERVER['PHP_SELF']). C'est bien ça ? Mais tu voudrais en profiter pour alimenter ta base. Correct ?

Le problème que tu poses est-il lié à des listes déroulantes dépendantes et aux données saisies ou au rappel de la page par elle-même ?

Quand tu valides un formulaire, tu passes au script de traitement les valeurs de tous les contrôles de ton formulaire (input, select, checkbox, etc...), y compris celui du bouton submit.

Donc si dans les valeurs transmises, $submit n'est pas nul, c'est que le formulaire a été validé, donc tu engranges dans ta BD sinon, tu affiches le formulaire :

if($submit) {

   // construction requete d'insertion puis insertion dans BD

} else {

   // affichage du formulaire

}

Si tu veux réafficher le formulaire systématiquement après insertion :

if($submit) {

   // construction requete d'insertion puis insertion dans BD

}

// affichage du formulaire

Enfin, c'est ce que j'ai compris dans ce que tu as exposé...

jeudi 26 juillet 2007 à 18:50:40 | Re : listes deroulantes PHP

la_main_sur_le_katana

Tu as bien compris mon problème mais j'aurais 2, 3 précisions à te demander sur les indications que tu m'as donné : tout d'abord, d'après ce que j'ai compris tout ce fait dans un formulaire donc je dois laisser en action le ($_SERVER['PHP_SELF']) mais la varaible $submit comment tu l'obtiens?Je veux dire es ce qu'il faut faire une affectation ou autre chose?
jeudi 26 juillet 2007 à 19:53:31 | Re : listes deroulantes PHP

rethenor


Voilà succinctement deux exemples qui j'espère te suffiront.


Tu trouveras ces pages en service pour démo à :

http://www.fr-webdev.net/demophp/
test1.php pour le premier
test2.php pour le second


<html>

<head>
<title>Test</title>
</head>

<body>
<h2>Formulaire ou Traitement</h2>
<?
if($submit) {

 // si on passe par ici, le formulaire a été validé
 $requete = "INSERT into TableTest (nom,mois) values ('$nom','$moisnaiss');";
 // Ici (pour la démo) affichage de la requête. En réalité, il faut l'exécuter
 echo "<i>Au lieu d'afficher la requête, il faudrait l'exécuter...</i><br/>";
 echo $requete;

} else { ?>

 <!-- si on passe par ici, c'est le premier appel (pas de $submit) -->
 <!-- Affichage du formulaire (simplifié pour l'exemple) -->
 <form name="test" method="post" action="<? echo $_SERVER['PHP_SELF']; ?>">
 Nom: <input type="text" name="nom" size="20"><br>
 Né en: <select name="moisnaiss">
   <option value="jan">janvier
   <option value="feb">février
   <option value="mar">mars
   <option value="apr">avril
  </select><br>
 <input type="submit" name="submit" value="Enregistrer">
 </form>

<? } ?>
</body>

</html>

ou si tu veux réafficher d'office le formulaire :

<html>

<head>
<title>Test</title>
</head>

<body>
<h2>Formulaire ou (Traitement + Formulaire)</h2>
<?
if($submit) {

 // si on passe par ici, le formulaire a été validé
 $requete = "INSERT into TableTest (nom,mois) values ('$nom','$moisnaiss');";
 // Ici (pour la démo) affichage de la requête. En réalité, il faut l'exécuter
 echo "<i>Au lieu d'afficher la requête, il faudrait l'exécuter...</i><br/>";
 echo $requete; echo "<hr>";

} ?>

<!-- on passe d'office par ici, premier ou second appel (avec ou sans $submit) -->
<!-- Affichage du formulaire (simplifié pour l'exemple) -->
<form name="test" method="post" action="<? echo $_SERVER['PHP_SELF']; ?>">
Nom: <input type="text" name="nom" size="20"><br/>
Né en: <select name="moisnaiss">
  <option value="jan">janvier
  <option value="feb">février
  <option value="mar">mars
  <option value="apr">avril
 </select><br/>
<input type="submit" name="submit" value="Enregistrer">
</form>

</body>

Ai-je répondu à ta question ?
:o)

vendredi 27 juillet 2007 à 21:21:38 | Re : listes deroulantes PHP

la_main_sur_le_katana

En fait, j'ai essayé ton code et ça marche pas. Il me met Undefined variable :submit et donc la requête ne s'effectue pas. J'ai essayé de mettre $submit=$_POST['submit'] mais ça marche pas non plus.

Je te mets en-dessous mon code php avec des 2 listes déroulantes liées entre elles. En fait dans ma base, il ya 2 tables : une qui s'appelle societe_bus et l'autre ligne_bus sachant qu'une société a plusieurs lignes. En fait avec la liste je voudrais  fais une requête sql qui va prendre les valeurs sélectionnées dans chacune des listes mais également rajouter un champ texte par la suite qui sera un élément en plus dans la requête.
//-------------------Création des tables--------------------------------------
CREATE TABLE `societe_bus` (
  `id_societe_bus` int(11) NOT NULL auto_increment,
  `nom_societe` varchar(50) default NULL,
  PRIMARY KEY  (`id_societe_bus`)
)
//------------------------------------------------------------------------------
CREATE TABLE `ligne_bus` (
  `id_ligne_bus` int(11) NOT NULL auto_increment,
  `numero_ligne` int(3) default NULL,
  `id_societe_bus` int(11) NOT NULL default '0',
  PRIMARY KEY  (`id_ligne_bus`),
  KEY `id_societe_bus` (`id_societe_bus`)
)

//------Code PHP des 2 listes dépendantes----------------------------------------

<?php
    //connexion à la base
    include("include/connexion.php");
   
    //on récupère si elle existe la valeur de la société envoyée par le formulaire
    $idr=isset($_POST['nomsociete'])?$_POST['nomsociete']:null;
?>
<html>
<body>
<?php
    if(isset($_POST['ok'])&& isset($_POST['ligne'])&& $_POST['ligne']!="")
    {
        $societe_selectionnee=$_POST['nomsociete'];
        $ligne_selectionnee=$_POST['ligne'];
    }
?>
<h3>Trouver une ligne</h3>
<?php
    $rech_societe=mysql_query("select id_societe_bus, nom_societe from societe_bus order by id_societe_bus")or die (mysql_error());
   
    //création de 2 tableaux
    $code_societe=array();
    $societe=array();
   
    //onactive un compteur pour les sociétés
    $nb_societe=0;
    if($rech_societe!=false)
    {
        while($ligne=mysql_fetch_assoc($rech_societe))
        {
            //onremplit les 2 tableaux avec l'id et le nom des sociétés retournés par la requête
            array_push($code_societe,$ligne['id_societe_bus']);
            array_push($societe, $ligne['nom_societe']);
           
            //incrémentation du compteur
            $nb_societe++;
        }
    }
?>
<!--Début du formulaire-->
<form method="post" id="chgligne">

<!--première liste déroulante contenant le nom des sociétés de bus -->
Sélectionner une société :
<select name="nomsociete" id="nomsociete" onchange="document.forms['chgligne'].submit();">
    <option value="-1">--Choississez une société --</option>
<?php
    for($i=0;$i<$nb_societe;$i++)
    {
?>
    <option value="<?php echo($code_societe[$i]);?>"<?php echo((isset($idr)&& $idr==$code_societe[$i])?" selected=\"selected\"" :null); ?>><?php echo($societe[$i]);?></option>
<?php
    }
?>

</select>
<!-- fin de la liste déroulante-->

<?php
    //on commence par vérifier si on a envoyé un numéro de société et le cas échéant s'il est différent de -1
    if(isset($idr)&& $idr!=-1)
    {
        //création de la requête pour avoir les lignes de cette société
        $rech_ligne=mysql_query("select id_ligne_bus,numero_ligne from ligne_bus where id_societe_bus=".$idr." order by id_ligne_bus")or die (mysql_error());
       
        //compteur pour les lignes de bus
        $nb_ligne=0;
       
        //création de deux tableaux pour les id et les numéros de lignes de bus
        $code_ligne=array();
        $numero_ligne=array();
       
        //on va remplir le tableau du numéro
        while($ligne_l=mysql_fetch_assoc($rech_ligne))
        {
            array_push($numero_ligne,$ligne_l['numero_ligne']);
           
            //incrémentation du compteur
            $nb_ligne++;
        }
       
        //maintenant construction de la liste déroulante
?>
<br>
Sélectionner une ligne de bus :
<select name="ligne" id="ligne">
<?php
    for($j=0;$j<$nb_ligne;$j++)
    {
?>
    <option value="<?php echo($code_ligne[$j]); ?>"<?php echo((isset($ligne_selectionnee) && $ligne_selectionnee==$cpde_ligne[$j])? "selected=\"selected\"":null);?>><?php echo ($numero_ligne[$j]);?></option>
<?php
    }
?>
</select>
<!--fin de la deuxième liste déroulante-->
<?php
    }
?>

<!--bouton submit du formulaire-->

<br /><input type="submit" name="ok" id="ok" value="Envoyer" />

</form>
</body>
</html>
//------------------------------------------------------------------------------------
Merci pour ton aide.

samedi 28 juillet 2007 à 12:16:39 | Re : listes deroulantes PHP

rethenor

Quel code ne marche pas ?
- est-ce que les deux pages test1.php et test2.php placées sur
  [ Lien ] fonctionnent ?
- est-ce la modification de ta page qui ne marche pas ?

Tu mets :
<!--bouton submit du formulaire-->
<br /><input type="submit" name="ok" id="ok" value="Envoyer" />

pourquoi a-tu donné "ok" comme nom à ce contrôle (ce bouton) ?
- soit tu ne mets pas le name="submit" et il prendra pour nom le type (cad submit)
- le plus propre est de préciser le nom (name="submit").
  Et le script de traitement utilisera la variable $submit
<br /><input type="submit" name="submit" value="Envoyer" />

A quoi sert l'attribut id="ok" ?
Dans quasiment chaque contrôle tu mets l'attribut id.
Il te sert à quoi ?

samedi 28 juillet 2007 à 14:37:16 | Re : listes deroulantes PHP

rethenor

Il me semble que tu as affiché les pages test1.php et test2.php mais que tu n'y as pas fait de saisie dans les formulaires pour les vérifier...
dimanche 29 juillet 2007 à 10:03:03 | Re : listes deroulantes PHP

la_main_sur_le_katana

J'ai essayé tes pages de test avec une vrai base et des vraies insertions mais ça me disait que la variable $submit n'était pas définie

dimanche 29 juillet 2007 à 13:54:13 | Re : listes deroulantes PHP

rethenor

t'as pas répondu à mes questions ? 1) tu as affiché les pages test1 et test2 mais tu n'y a pas fait de saisie. As-tu réellement essayé ces pages de démo ? 2) c'est quoi ton attribut id="xxx" ? 3) qu'appelles-tu une vraie base ? Tu crois que j'utilises Access ? :o) Quelle version de PHP utilises-tu ?
lundi 30 juillet 2007 à 18:57:52 | Re : listes deroulantes PHP

la_main_sur_le_katana

Merci pour ton aide mais j'ai réussi à résoudre mon problème tout seul.

1 2

Cette discussion est classée dans : php, formulaire, champs, listes, deroulantes


Répondre à ce message

Sujets en rapport avec ce message

vérification de formulaire [ par nino69 ] Bonjour, j'ai crée un formulaire et une vérification en PHP. Si l'un des champs est mal rempli, le code PHP envoye un message à l'utilisateur en l'ave formulaire php/mysql [ par g_marvin ] bonjourj'ai fait un formulaire php ou j'ai plusieurs champs + les champs identifiant et nom qui sont des listes déroulante, et je voudrais si l'utilis Gérer erreurs dans un formulaire [ par chandler8692 ] Bonjour. Je sui noob en PHP;  Je m'y suis mis il y a trois jours car j'ai un projet à faire pour mon école. Je crée un sondage en php dont les premier aide pour éditer fichier php [ par luciano12 ] Bonjour,   J'aimerais savoir si tu voudrais m'aider à modifier un fichier PHP que j'ai Formulaire de contact php [ par fredouille312 ] Bonjour, je débute en php et je bloque sur le formulaire de contact. J'arrive à envoyer des mails mais le problèmes, c'est que si un ou plusieurs cham Php pb de formulaire [ par caracactus ] Bonjour,Tout d'abord merci à ceux qui lisent ce poste et y crame quelques neuronnes J ai un formulaire de vente, qui contient tout les élement Ajout de champs dans un formulaire [ par neomary ] SalutA vrai dire, je ne suis meme pas au niveau d'un debutant en php ; Je demande votre aide pour resoudre mon probleme le plus tot possible :- J'ai u PHP, formulaire et innerHTML [ par ExeQTd ] Bonjour à tous,Je suis actuellement confronté à un petit souci technique. Autant le dire tout de suite, je suis débutant dans le monde du web 2.0 et j Formulaire en php [ par winosx01 ] [color=blue]Bonjour, J'ai un fichier excel, avec des champs ou des colonnes : Numéro de lignes, désignation, colonne, calcul, longueur, position débu 2 listes déroulantes liées, envoyer le div dans un autre formulaire ?? [ par lancelolo ] Bonjour et d'avance merci. Voilà mon problème. J'ai une page de saisie de véhicule avec 2 listes déroulantes liées (marque / type). Quand je sélectio


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,889 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales