Création de formulaire -champs automatique-

Résolu/Fermé
-CCM- Messages postés 927 Date d'inscription mercredi 28 mai 2008 Statut Membre Dernière intervention 16 juin 2013 - 28 juil. 2008 à 16:48
-CCM- Messages postés 927 Date d'inscription mercredi 28 mai 2008 Statut Membre Dernière intervention 16 juin 2013 - 31 juil. 2008 à 12:09
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.
A voir également:

17 réponses

internetasso Messages postés 1054 Date d'inscription jeudi 25 octobre 2007 Statut Membre Dernière intervention 30 juin 2013 177
Modifié par crapoulou le 27/09/2010 à 21:24
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...
-1
Dalida Messages postés 6728 Date d'inscription mardi 14 mai 2002 Statut Contributeur Dernière intervention 11 janvier 2016 921
28 juil. 2008 à 17:56
salut,

si tu veux y comprendre quelque chose, mieux vaut peut être un tuto.
-1
-CCM- Messages postés 927 Date d'inscription mercredi 28 mai 2008 Statut Membre Dernière intervention 16 juin 2013 84
29 juil. 2008 à 09:57
je regarde sa de près, ce n'est pas faisable en php ?

MErci
-1
-CCM- Messages postés 927 Date d'inscription mercredi 28 mai 2008 Statut Membre Dernière intervention 16 juin 2013 84
29 juil. 2008 à 10:14
ps: le script est payant :(

sinon j'ai trouver un script ici http://www.editeurjavascript.com/scripts/scripts_formulaires_3_167.php
-1

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
-CCM- Messages postés 927 Date d'inscription mercredi 28 mai 2008 Statut Membre Dernière intervention 16 juin 2013 84
29 juil. 2008 à 11:44
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 ).
-1
-CCM- Messages postés 927 Date d'inscription mercredi 28 mai 2008 Statut Membre Dernière intervention 16 juin 2013 84
29 juil. 2008 à 12:02
j'arrive donc a faire le changement de valeur en fonction de ma liste déroulante ...voici en gros mon code

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
-1
-CCM- Messages postés 927 Date d'inscription mercredi 28 mai 2008 Statut Membre Dernière intervention 16 juin 2013 84
29 juil. 2008 à 13:46
Oups,

Désolé pour le doublons ... Gros bug du forum ou de moi même ...
-1
Dalida Messages postés 6728 Date d'inscription mardi 14 mai 2002 Statut Contributeur Dernière intervention 11 janvier 2016 921
29 juil. 2008 à 14:33
salut,

à priori du forum, j'en ai fait tout à l'heure à l'insu de mon plein clavier…

signale le post en double aux modos à l'aide du bouton avec un point d'exclamation dans un panneau jaune (en haut à gauche du post) !
-;o)
-1
-CCM- Messages postés 927 Date d'inscription mercredi 28 mai 2008 Statut Membre Dernière intervention 16 juin 2013 84
29 juil. 2008 à 14:53
c'est fait ;)

Sinon sa ne te dit rien comment afficher la liste des répertoires dans une liste déroulante ?
-1
Dalida Messages postés 6728 Date d'inscription mardi 14 mai 2002 Statut Contributeur Dernière intervention 11 janvier 2016 921
29 juil. 2008 à 16:01
re,

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(); ?>
-1
-CCM- Messages postés 927 Date d'inscription mercredi 28 mai 2008 Statut Membre Dernière intervention 16 juin 2013 84
29 juil. 2008 à 16:08
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 :


<?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 :)
-1
-CCM- Messages postés 927 Date d'inscription mercredi 28 mai 2008 Statut Membre Dernière intervention 16 juin 2013 84
30 juil. 2008 à 10:10
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
-1
-CCM- Messages postés 927 Date d'inscription mercredi 28 mai 2008 Statut Membre Dernière intervention 16 juin 2013 84
30 juil. 2008 à 12:03
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
-1
-CCM- Messages postés 927 Date d'inscription mercredi 28 mai 2008 Statut Membre Dernière intervention 16 juin 2013 84
30 juil. 2008 à 16:50
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
-1
-CCM- Messages postés 927 Date d'inscription mercredi 28 mai 2008 Statut Membre Dernière intervention 16 juin 2013 84
30 juil. 2008 à 16:57
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?
-1
Dalida Messages postés 6728 Date d'inscription mardi 14 mai 2002 Statut Contributeur Dernière intervention 11 janvier 2016 921
30 juil. 2008 à 17:26
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…
session_start();
$_SESSION['toto'] = 'tata';
$var = $_SESSION['toto'];
-1
-CCM- Messages postés 927 Date d'inscription mercredi 28 mai 2008 Statut Membre Dernière intervention 16 juin 2013 84
31 juil. 2008 à 10:08
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
-1
Dalida Messages postés 6728 Date d'inscription mardi 14 mai 2002 Statut Contributeur Dernière intervention 11 janvier 2016 921
31 juil. 2008 à 10:21
salut,

qu'est-ce qu'il y a dans 'toto.php' ?

pourquoi affiche-t-il quelque chose ?
-1
-CCM- Messages postés 927 Date d'inscription mercredi 28 mai 2008 Statut Membre Dernière intervention 16 juin 2013 84
31 juil. 2008 à 10:39
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 :

<?php

include '../fon
ctions.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
-1
-CCM- Messages postés 927 Date d'inscription mercredi 28 mai 2008 Statut Membre Dernière intervention 16 juin 2013 84
31 juil. 2008 à 12:09
J'ai tout effacer pour me refaire une fonction toute propre sur mon formulaire... elle marche beaucoup mieux (vive l'algorithme )

Merci :)

A++
-1