Création de formulaire -champs automatique-
Résolu
-CCM-
Messages postés
927
Date d'inscription
Statut
Membre
Dernière intervention
-
-CCM- Messages postés 927 Date d'inscription Statut Membre Dernière intervention -
-CCM- Messages postés 927 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Je souhaite mettre en place un formulaire assez courant (étant debutant en php je ne voit pas vraiment par quoi commencer)
pour simplifier :
Mon fomulaire contient une liste déroulante" LD1" avec plusieurs valeurs,
en fonction de la valeur de cette liste déroulante "LD1" , soit je n'affiche pas une autre liste LD2, soit j'affiche LD2 et si c'est le cas, la valeur de ce champs LD2 dépendra de la valeur de ma liste déroulante LD1 ...
En gros :
liste déroulante :
LD1 LD2
Glace
----->Vanille
----->Fraise
----->Pistache
------> //Aucune valeur, l'utilisateur peu entrer une valeur dans le menu déroulante
Frites
------> Mayo
-----> Ketchup
-----> barbec
------> //Aucune valeur, l'utilisateur peu entrer une valeur dans le menu déroulante
Malbouffe
----->Sandwich
----->Hamburger
----->Kebab
------> //Aucune valeur, l'utilisateur peu entrer une valeur dans le menu déroulante
Sachant que LD1 Auras toujours des valeurs (definit dans mon <select> <option ...>
) mais LD2 contient une valeur vide qui permet à l'utilisateur de saisir sa propre valeur !!
J'ai commencer a regarder sur les tutaux pour la création de dossier, le listage de dossiers (car en fait chaque nom 'frites' 'pistache' 'kebab'... correspondent a un repertoir) ma je n'ai pas trouvé de reponses..
J'espere avoir été compris si ce n'est pas le cas faite moi le savoir !
Merci.
Je souhaite mettre en place un formulaire assez courant (étant debutant en php je ne voit pas vraiment par quoi commencer)
pour simplifier :
Mon fomulaire contient une liste déroulante" LD1" avec plusieurs valeurs,
en fonction de la valeur de cette liste déroulante "LD1" , soit je n'affiche pas une autre liste LD2, soit j'affiche LD2 et si c'est le cas, la valeur de ce champs LD2 dépendra de la valeur de ma liste déroulante LD1 ...
En gros :
liste déroulante :
LD1 LD2
Glace
----->Vanille
----->Fraise
----->Pistache
------> //Aucune valeur, l'utilisateur peu entrer une valeur dans le menu déroulante
Frites
------> Mayo
-----> Ketchup
-----> barbec
------> //Aucune valeur, l'utilisateur peu entrer une valeur dans le menu déroulante
Malbouffe
----->Sandwich
----->Hamburger
----->Kebab
------> //Aucune valeur, l'utilisateur peu entrer une valeur dans le menu déroulante
Sachant que LD1 Auras toujours des valeurs (definit dans mon <select> <option ...>
) mais LD2 contient une valeur vide qui permet à l'utilisateur de saisir sa propre valeur !!
J'ai commencer a regarder sur les tutaux pour la création de dossier, le listage de dossiers (car en fait chaque nom 'frites' 'pistache' 'kebab'... correspondent a un repertoir) ma je n'ai pas trouvé de reponses..
J'espere avoir été compris si ce n'est pas le cas faite moi le savoir !
Merci.
A voir également:
- Création de formulaire -champs automatique-
- Whatsapp formulaire opposition - Guide
- Logiciel de sauvegarde automatique gratuit - Guide
- Réponse automatique thunderbird - Guide
- Formulaire de réclamation facebook - Guide
- Recherche automatique des chaînes ne fonctionne pas - Guide
17 réponses
AFFICHER UNE LISTE DÉROULANTE EN FONCTION D'UNE AUTRE SANS RECHARGER LA PAGE.
http://www.comscripts.com/scripts/php.combobox-avec-ajax.1888.html
La création d'un site commence par la réflexion de son devenir...
http://www.comscripts.com/scripts/php.combobox-avec-ajax.1888.html
La création d'un site commence par la réflexion de son devenir...
ps: le script est payant :(
sinon j'ai trouver un script ici http://www.editeurjavascript.com/scripts/scripts_formulaires_3_167.php
sinon j'ai trouver un script ici http://www.editeurjavascript.com/scripts/scripts_formulaires_3_167.php
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
beaucoup plus compliqué maintenant... (enfin beaucoups plus compliqué pour moi)
J'ai reussi a faire apparaitre mes deux listes déroulantes une en fonction de l'autre .. tout va bien ,merci ;)
Maintenant ce que je souhaite réaliser c'est :
les valeurs de ma listes déroulantes ne douvent pas être entré en dur dans le code de cette manière :
script
//fruits
liste[1] = new Array("banane","pomme","poire");
liste[2] = .....;
body
<SELECT id=listeA onchange=changeliste() name=listeA>
<OPTION value=1> Fruits </OPTION>
<OPTION value=2> Légumes </OPTION>
<OPTION value=3> plats </OPTION>
<OPTION value=4> boissons </OPTION>
<OPTION value=5> vins </OPTION>
</SELECT>
<A id=listeB_div><SELECT id=listeB name=listeB>
mais plutôt par lecture de dossier,
script
//fruits
liste[1] = "une fonction qui va parcourir le dossier fruits et afficher les tout les répertoires enfants";
......
//vins
liste[5] = "une fonction qui va parcourir le dossier fruits et afficher les tout les répertoires";
Ma fonction delistage sera surement celle ci : https://phpsources.net/code/php/fichiers-repertoires/119_lister-un-repertoire-par-ordre-alphabetique-en-php ..
J'ai juste du mal a faire l'imbrication des fonction (l'appel de la fonction listé repertoires via la fonction change liste ).
J'ai reussi a faire apparaitre mes deux listes déroulantes une en fonction de l'autre .. tout va bien ,merci ;)
Maintenant ce que je souhaite réaliser c'est :
les valeurs de ma listes déroulantes ne douvent pas être entré en dur dans le code de cette manière :
script
//fruits
liste[1] = new Array("banane","pomme","poire");
liste[2] = .....;
body
<SELECT id=listeA onchange=changeliste() name=listeA>
<OPTION value=1> Fruits </OPTION>
<OPTION value=2> Légumes </OPTION>
<OPTION value=3> plats </OPTION>
<OPTION value=4> boissons </OPTION>
<OPTION value=5> vins </OPTION>
</SELECT>
<A id=listeB_div><SELECT id=listeB name=listeB>
mais plutôt par lecture de dossier,
script
//fruits
liste[1] = "une fonction qui va parcourir le dossier fruits et afficher les tout les répertoires enfants";
......
//vins
liste[5] = "une fonction qui va parcourir le dossier fruits et afficher les tout les répertoires";
Ma fonction delistage sera surement celle ci : https://phpsources.net/code/php/fichiers-repertoires/119_lister-un-repertoire-par-ordre-alphabetique-en-php ..
J'ai juste du mal a faire l'imbrication des fonction (l'appel de la fonction listé repertoires via la fonction change liste ).
j'arrive donc a faire le changement de valeur en fonction de ma liste déroulante ...voici en gros mon code
script
body
Ce que je souhaite réalisé maintenant est un peu plus complexe, au lieu d'inscrire en dur les valeur de mes new array dans mon code, je veu que ces valeur soit en variables, elle correspondrons aux sous repertoires trouvées dans les répertoires fruits, legumes ou boissons ...
je pense utiliser ce code pour le listage de répértoires : https://phpsources.net/code/php/fichiers-repertoires/119_lister-un-repertoire-par-ordre-alphabetique-en-php
Comment imbriquer les deux fonctions ??
merci
script
liste=new Array(); liste[1] = new Array("bananes","pomme"); liste[2] = new Array("tomate","carottes"); liste[3] = new Array("eau","vin"); //fonction pour le changement de valeur de la deuxième liste déroulante // function changeliste() { choix=document.getElementById("listeA").value; t='<select name="listeB" id="listeB">'; for(i=0;i<liste[choix].length;i++) { t+="<option value=\""+liste[choix][i]+"\">"+liste[choix][i]+"</option>"; } document.getElementById("listeB_div").innerHTML=t+'</select>'; }
body
<SELECT id=listeA onchange=changeliste() name=listeA> <OPTION value=1> fruits </OPTION> <OPTION value=2> legumes </OPTION> <OPTION value=3> boissons </OPTION> </SELECT> <A id=listeB_div><SELECT id=listeB name=listeB></SELECT></A>
Ce que je souhaite réalisé maintenant est un peu plus complexe, au lieu d'inscrire en dur les valeur de mes new array dans mon code, je veu que ces valeur soit en variables, elle correspondrons aux sous repertoires trouvées dans les répertoires fruits, legumes ou boissons ...
je pense utiliser ce code pour le listage de répértoires : https://phpsources.net/code/php/fichiers-repertoires/119_lister-un-repertoire-par-ordre-alphabetique-en-php
Comment imbriquer les deux fonctions ??
merci
Oups,
Désolé pour le doublons ... Gros bug du forum ou de moi même ...
Désolé pour le doublons ... Gros bug du forum ou de moi même ...
c'est fait ;)
Sinon sa ne te dit rien comment afficher la liste des répertoires dans une liste déroulante ?
Sinon sa ne te dit rien comment afficher la liste des répertoires dans une liste déroulante ?
re,
de tête et sans avoir testé je te propose quelque chose comme :
et dans le HTML :
de tête et sans avoir testé je te propose quelque chose comme :
function print_list() { $return = ''; $dirs = glob('mon/repertoire/', GLOB_ONLYDIR); if(is_array($dirs) && !empty($dirs)) { $return .= "<select>\n"; foreach($dir as $dirs) { $return .= "<option>$dir</option>\n"; } $return .= "</select>\n"; } return $return; }
et dans le HTML :
<?php echo print_list(); ?>
Merci a toi je vais tester et j'esserais de modifier si sa ne va pas.., en ce moment j'essai de faire un truc mais je ne sais pas si je post une autre sujet ou si je peu te deemander sa direct ement ... :
C'est assez simple a mon avis pour ceux qui y connaissent plus que moi .. !
Cette fonction crée des repertoires :
mais moi en faite j'essaie de créer un répertoire dans un répertoire definit par la variable $type que je récupere demon formulaire .. j'ai essayé :
<?php
function IsDir_or_CreateIt($path)
{
if(isset($_POST['type']))
$type=$_POST['type'];
else $type="";
if(is_dir($path))
{
echo "<script>alert('Dossier déjà existant : création du répertoire interrompue');</script>";
return true;
}
else
{
if(mkdir($type.$path)) // j'ai aussi essayé if(mkdir($type/$path))
{
return true;
}
else
{
return false;
};
};
}
?>
mais sa ne marche pas ... y'a t-il un moyen de créer un repertoire ailleur qu'a la racine ??
Merci pour cet aide :)
C'est assez simple a mon avis pour ceux qui y connaissent plus que moi .. !
Cette fonction crée des repertoires :
<?php function IsDir_or_CreateIt($path) { if(is_dir($path)) {echo "<script>alert('Dossier déjà existant : création du répertoire interrompue');</script>"; return true; } else { if(mkdir($path)) { return true; } else {return false; }; }; } ?>
mais moi en faite j'essaie de créer un répertoire dans un répertoire definit par la variable $type que je récupere demon formulaire .. j'ai essayé :
<?php
function IsDir_or_CreateIt($path)
{
if(isset($_POST['type']))
$type=$_POST['type'];
else $type="";
if(is_dir($path))
{
echo "<script>alert('Dossier déjà existant : création du répertoire interrompue');</script>";
return true;
}
else
{
if(mkdir($type.$path)) // j'ai aussi essayé if(mkdir($type/$path))
{
return true;
}
else
{
return false;
};
};
}
?>
mais sa ne marche pas ... y'a t-il un moyen de créer un repertoire ailleur qu'a la racine ??
Merci pour cet aide :)
Avec :
if(isset($_POST['type']))
$type=$_POST['type'];
else $type="";
......
" if(mkdir('../docs/'.$type.'/'.$path)) "
mon dossier est créé ici : ../docs/DOSSIER CREE
le $type n'est pas pris en compte .. :s, un petit coups de main?
-----------------------------------------------------
EDIT :
par contre
if(isset($_POST['type']))
$type=$_POST['type'];
else $type="pas_dossier";
avec un repertoire " pas_dossier" sous "docs" sa marche très bien, la création se fait bien sous "pas_dossier", je n'arrive pas a récuperer la valeur de mon $type apparament c'est un dialogue box :s
if(isset($_POST['type']))
$type=$_POST['type'];
else $type="";
......
" if(mkdir('../docs/'.$type.'/'.$path)) "
mon dossier est créé ici : ../docs/DOSSIER CREE
le $type n'est pas pris en compte .. :s, un petit coups de main?
-----------------------------------------------------
EDIT :
par contre
if(isset($_POST['type']))
$type=$_POST['type'];
else $type="pas_dossier";
avec un repertoire " pas_dossier" sous "docs" sa marche très bien, la création se fait bien sous "pas_dossier", je n'arrive pas a récuperer la valeur de mon $type apparament c'est un dialogue box :s
problemes reglé avec un switch car ma variable me retournais des chiffres et non la valeur de ma liste déroulante ...
j'ai juste un souci de variable
j'ai juste un souci de variable
Bonjour, comment lui dire que si le dossier existe, continuer l'acction, carj'ai une erreur de ce type :
Warning: mkdir() [function.mkdir]: File exists in C:\Program Files\EasyPHP 2.0b1\www\fonction.php on line 574
Une erreur est survenue lors de la creation du dossier
Warning: mkdir() [function.mkdir]: File exists in C:\Program Files\EasyPHP 2.0b1\www\fonction.php on line 574
Une erreur est survenue lors de la creation du dossier
Comment declarer une variable en global dans ce cas precis :
Formulaire.php
include code.php
si appuie sur le boutons
$GAINS = Champs du formulaire' €'
fonction(convertir euros en patates)
--------------------------------------------------
code.php
fonction (convertire euros en patates)
multiplier le $GAIN par 000
je n'arrive pas a passer ma variable $GAIN de mon formulaire.php vers mon code.php
Si je fait un include formulaire.php dans mon code.php j'ai toute la page qui s'affiche !!
J'ai essayer de mettre global $gain, sa ne marche pas.. comment faire svp?
Formulaire.php
include code.php
si appuie sur le boutons
$GAINS = Champs du formulaire' €'
fonction(convertir euros en patates)
--------------------------------------------------
code.php
fonction (convertire euros en patates)
multiplier le $GAIN par 000
je n'arrive pas a passer ma variable $GAIN de mon formulaire.php vers mon code.php
Si je fait un include formulaire.php dans mon code.php j'ai toute la page qui s'affiche !!
J'ai essayer de mettre global $gain, sa ne marche pas.. comment faire svp?
salut,
tu devrais ouvrir un nouveau fil pour les nouvelles questions.
soit tu déclares ta variable dans le script appelé en premier. comme par exemple dans 'index.php' avec des 'include()'
de 'header.php' et 'footer.php'. les variables instanciées avant les 'include()' seront accessibles dans les scripts inclus puis dans le reste de 'index.php'.
soit tu utilises une variable de session en pensant à démarrer ta session au tout début du script, un peu bourrin mais utile parfois…
tu devrais ouvrir un nouveau fil pour les nouvelles questions.
soit tu déclares ta variable dans le script appelé en premier. comme par exemple dans 'index.php' avec des 'include()'
de 'header.php' et 'footer.php'. les variables instanciées avant les 'include()' seront accessibles dans les scripts inclus puis dans le reste de 'index.php'.
soit tu utilises une variable de session en pensant à démarrer ta session au tout début du script, un peu bourrin mais utile parfois…
session_start(); $_SESSION['toto'] = 'tata'; $var = $_SESSION['toto'];
salut,
dès ce problème resolu, je posterais de nouveau post !
pour la solution avec include(toto.php); j'ai testé le souci c'est que j'ai mon fichier toto.php qui est entierement afficher sur ma page !!
variable de session : erreur ..
Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at C:\Program Files\EasyPHP 2.0 .....
sa viendrais de quoi ? merci
dès ce problème resolu, je posterais de nouveau post !
pour la solution avec include(toto.php); j'ai testé le souci c'est que j'ai mon fichier toto.php qui est entierement afficher sur ma page !!
variable de session : erreur ..
Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at C:\Program Files\EasyPHP 2.0 .....
sa viendrais de quoi ? merci
toto.php c'est mon formulaire avec quelques png et mes champs ....
Le faite de faire un "include" l'affichai toute ma page !
voici le code sa va être plus simple :
formulaire.php :
if( isset($_POST['envoi']) )// si formulaire envoyé
{
// transformer la valeur de la liste déroulante 1 en type de documents
if(isset($_POST['listeA']))
{ $type=$_POST['listeA'];
switch($type)
{ case 0:
$type="";
break;
case 1:
$type="G";
break;
case 2:
$type="R";
break;
case 3:
$type="M";
break;
case 4:
$type="N";
break;
}
}else $type="";
................
.............
............
.........
.....
.{ // si le champs "nouveau dossier" n'est pas vide, le dossier sera créé
if(IsDir_or_CreateIt($new_rep))
{ // si le champs "nouveau dossier" n'est pas vide --> le chemin sera " .../docs/type/nouveau_dossier/document.doc "
$content_dir= '../docs/'.$type.'/'.$new_rep.'/';
echo "<script>alert('DEBUGAGE creer dossier --> $content_dir');</script>"; //*******************// DEBUGAGE
}
</code>
fonction.php
et je voudrais eviter de faire deux switch case identique et en faite récuperer me $type de mon formulaire pour l'utiliser dans fonction.php .... :(
Merci
Le faite de faire un "include" l'affichai toute ma page !
voici le code sa va être plus simple :
formulaire.php :
<?php include '../fonctions.php'; // necessaire pour faire appel aux fonctions contenus dans ce fichier
if( isset($_POST['envoi']) )// si formulaire envoyé
{
// transformer la valeur de la liste déroulante 1 en type de documents
if(isset($_POST['listeA']))
{ $type=$_POST['listeA'];
switch($type)
{ case 0:
$type="";
break;
case 1:
$type="G";
break;
case 2:
$type="R";
break;
case 3:
$type="M";
break;
case 4:
$type="N";
break;
}
}else $type="";
................
.............
............
.........
.....
.{ // si le champs "nouveau dossier" n'est pas vide, le dossier sera créé
if(IsDir_or_CreateIt($new_rep))
{ // si le champs "nouveau dossier" n'est pas vide --> le chemin sera " .../docs/type/nouveau_dossier/document.doc "
$content_dir= '../docs/'.$type.'/'.$new_rep.'/';
echo "<script>alert('DEBUGAGE creer dossier --> $content_dir');</script>"; //*******************// DEBUGAGE
}
</code>
fonction.php
<?php // transformer la valeur de la liste déroulante 1 en type de documents if(isset($_POST['listeA'])) { $type=$_POST['listeA']; switch($type) { case 0: $type=""; break; case 1: $type="G"; break; case 2: $type="R"; break; case 3: $type="M"; break; case 4: $type="N"; break; } }else $type=""; ................ ............. ............ ......... // ****// FONCTION CREER UN DOSSIER ET TESTER SI IL EXISTE DEJA //****// function IsDir_or_CreateIt($path) { if(is_dir($path)) { echo "<script>alert('Dossier déjà existant : création du répertoire interrompue');</script>"; return true; } else { if(mkdir('../docs/'.$type.'/'.$path)) { return true;} else {echo "<script>alert('Erreur inconnu lors de la création du répertoire');</script>"; } }; }
et je voudrais eviter de faire deux switch case identique et en faite récuperer me $type de mon formulaire pour l'utiliser dans fonction.php .... :(
Merci