Les Allergies
Alimentaires
Posez votre question Signaler

Création de formulaire -champs automatique- [Résolu]

-CCM- 921Messages postés 28 mai 2008Date d'inscription 27 janvier 2012Dernière intervention - Dernière réponse le 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.
Lire la suite 

Création de formulaire -champs automatique »

20 réponses
Réponse
-1
moins plus
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
Ajouter un commentaire
Réponse
-1
moins plus
salut,

si tu veux y comprendre quelque chose, mieux vaut peut être un tuto.
Ajouter un commentaire
Réponse
-1
moins plus
je regarde sa de près, ce n'est pas faisable en php ?

MErci
Ajouter un commentaire
Réponse
-1
moins plus
ps: le script est payant :(

sinon j'ai trouver un script ici http://www.editeurjavascript.com/scripts/scripts_formulaires_3_167.php
Ajouter un commentaire
Réponse
-1
moins plus
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 : http://www.phpsources.org/scripts119-PHP.htm ..

J'ai juste du mal a faire l'imbrication des fonction (l'appel de la fonction listé repertoires via la fonction change liste ).
Ajouter un commentaire
Réponse
-1
moins plus
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 : http://www.phpsources.org/scripts119-PHP.htm

Comment imbriquer les deux fonctions ??
merci
Ajouter un commentaire
Réponse
-1
moins plus
Oups,

Désolé pour le doublons ... Gros bug du forum ou de moi même ...
Dalida- 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)
Ajouter un commentaire
Réponse
-1
moins plus
c'est fait ;)

Sinon sa ne te dit rien comment afficher la liste des répertoires dans une liste déroulante ?
Ajouter un commentaire
Réponse
-1
moins plus
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(); ?>
Ajouter un commentaire
Réponse
-1
moins plus
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 :)
Ajouter un commentaire
Réponse
-1
moins plus
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
Ajouter un commentaire
Réponse
-1
moins plus
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
Ajouter un commentaire
Réponse
-1
moins plus
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
Ajouter un commentaire
Réponse
-1
moins plus
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?
Dalida- 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'];
Ajouter un commentaire
Réponse
-1
moins plus
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
Dalida- 31 juil. 2008 à 10:21
salut,

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

pourquoi affiche-t-il quelque chose ?
Ajouter un commentaire
Réponse
-1
moins plus
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
Ajouter un commentaire
Réponse
-1
moins plus
J'ai tout effacer pour me refaire une fonction toute propre sur mon formulaire... elle marche beaucoup mieux (vive l'algorithme )

Merci :)

A++
Ajouter un commentaire
Ce document intitulé « création de formulaire -champs automatique- » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
Passage au tout numérique : quel coût pour les particuliers ?