Vous n'êtes pas identifié(e).
Pages : 1
Bonsoir JC,
Je ne disais pas cela pour isset mais pour $_post, isset vérifiant seulement que la variable a bien été affectée ou pas dans le cas qui nous intéresse. Par contre la variable n'est testée que par rapport à $_post ce qui implique que le formulaire ait bien été rempli par l'utilisateur sans quoi $_post n'est pas activé et ne peut pas être utilisé, voilà pourquoi je posais la question.
Est-ce que je me trompe?
RE,
Oui en fait s'agissant de la gestion dynamique des pages tu conditionnes l'appel de l'une ou l'autre suivant des variables qui peuvent être dynamiquement calculées ou modifiées. C'et clair.
Pour aller plus loin j'avais dans l'idée de générer des pages dynamiquement, de toute pièce et de les faire exécuter; mais ceci est encore d'un autre niveau ça fait appel à une technique de générateur (ceci me rajeunirait car c'est une technique que j'ai souvent utilisée, très tôt.... en 1970 pour mon premier générateur de programmes Cobol pour le squelette du programme gérant toute la partie logique de la logique du programme à partir d'un paramétrage issu d'une méthode d'analyse appelée MINOS).
Ceci est un autre sujet mais qui me tient à cœur de vérifier également en PHP, faire en quelque sorte un générateur d'application.
Bonjour JC,
Merci beaucoup, je pense avoir bien compris maintenant et tu as sans doute raison je pourrai anticiper sur le choix des traitements en demandant un choix multiple à l'utilisateur dès le premier formulaire et qui sera également passé en variable, après quoi on peut effectivement conditionner automatiquement les traitements.
Par contre es-tu sur qu'on puisse utiliser $_post dans la condition de départ, elle ne pourra être vérifiée qu'à partir du moment où l'utilisateur aura répondu au premier formulaire ligne2?
Bonjour,
Merci pour les exemples et les précisions de vocabulaire.
Je pense avoir compris mais je crois être un peu perdu face à mon exemple.
Si j'ai bien compris l'approche consiste à faire une page qui n'affiche rien et qui seulement teste des conditions de valeurs de variables afin d'appeler les fonctions de traitement correspondante aux résultats des conditions trouvées. Cette page sert comme tu le dis une page contrôleur.
Mais pour revenir à mon exemple très simple il y a comme préambule le fait qu'il faudra:
1) Demander la saisie des données clients au travers d'un formulaire unique,
2) Demander à l'utilisateur ce qu'il veut faire sachant que les traitements ne dépendent pas du résultat de la saisie des données.
En conséquence, quelle que soit l'architecture envisagée, je ne vois pas comment éviter de faire deux étapes:
1) Faire une page de saisie des données clients, avec vue du formulaire, saisie et passage des valeurs des données client,
2) Faire une page de contrôle de formulaires multiples avec récupération des données par $_post et appel des fonctions de traitement correspondant au libre choix de l'utiliateur (non conditionné par des valeurs particulières).
Je tourne en rond et je ne vois toujours pas comment ne pas avoir deux pages distinctes pour dialoguer avec l'utilisateur. Encore une fois j'aurai voulu avoir tout sur une seule page avec formulaires multiples (saisie des données et choix de traitements) mais la contrainte liée à la récupération des données par $_post impose deux étapes et deux pages distinctes.
La seule chose qu'on puisse imaginer, pour n'avoir qu'une page à gérer et à maintenir, c'est de présenter la page avec des vues différentes en jouant sur les champs cachés suivant que les données clients ont été ou non déjà saisies (c'est je pense ce que vous appelez générer dynamiquement les formulaires). Au départ on ne montre que la saisie des données clients , le reste étant caché (formulaire de saisie), par la suite retour sur la même page mais cette fois avec vue des autres formulaires de traitement (formulaire d'affichage client, de saisie client, de mise à jour client, etc.....). Le tout conditionné par une variable d'affichage (false ou true) suivant le cas.
Mais dans la réalité pour l'utilisateur cela revient toujours au même, il aura toujours deux étapes à faire car les choix de traitement dépendent de son choix et non pas de conditions.
Ai-je bien compris?
Question: Est-il possible de modifier dynamiquement les attributs des champs (cachés ou visibles)? Ou bien comment faire pour que les champs s'affichent ou pas suivant la variable d'affichage?
Bonsoir JC,
Merci pour ton aide, je suis rentré tard ce soir et il faudra que je regarde ce que tu me dis un peu plus tard. Je te tiendrai au courant.
OK donc oublions MVC puisque je travaille avec des notions de page.
pardon d'être lourd avec vous mais une fois de plus ce n'est pas un problème d'avoir plusieurs formulaires sur une même page, cela fonctionne bien avec des noms différents et des actions différentes (j'ai d'ailleurs un exemple dans mon code pour le menu du choix de traitement proposé à l'utilisateur.
Mon problème est lié au $post, dès l'instant où il faut récupérer les données je ne vois pas comment d'autres formulaires sur la même page peuvent fonctionner. Voilà en fait le problème qui m'oblige à ouvrir une seconde page contenant les actions de traitement après avoir récupéré les données par $post provenant de la première page.
Bonjour Maljuna Kris,
J'ai essayé de comprendre mais je ne vois pas ce que ça peut résoudre au problème et à la contrainte inhérente au $post qui est propre à PHP.
D'autre part, quelle que soit l'architecture, le navigateur interprète des pages, il faudra donc bien créer des pages. Ou alors peut-être que le MVC propose un viewer spécifique à la place du navigateur tel que Mozilla?
Peut-être que je n'ai pas bien compris et sur la base de mon exemple (voir mon code) tu pourrais me montrer comment faire.
Merci d'avance pour concrétiser ce que tu proposes.
OK merci, je regarderai.
OUI, merci à tous. Vous m'avez bien aidé.
Je n'ai pas utilisé le paramètre en URL, car moins sécurisé, j'ai utilisé les sessions.
Mais je crois que l'incompréhension vient du fait que la même page ne peut pas à la fois valider les données du formulaire client (paramètres utiles à toutes les pages) pour les $post et permettre à l'utilisateur de faire les choix des traitements (afficher, saisir, mettre à jour, supprimer le client) par un simple click sur un bouton submit; ce qui m'a obligé de faire une autre page.
Il est clair que les données récupérables par $post ne le sont qu'à partir du moment où l'utilisateur a cliqué sur le bouton submit.
Je n'ai pas trouvé de moyen plus simple que de faire deux pages différentes, une pour saisir les paramètres, une autre pour donner le choix des traitements.
Pour moi le problème était moins un problème technique qu'un problème de logique et de conception.
J'ai finalement vu ici les limites du langage PHP et de la structure des pages.
J'ai encore beaucoup à apprendre car je suis débutant en PHP mais j'ai une certaine connaissance dans la conception des applications.
J'aurai donc sans doute encore à vous demander votre aide.
Merci encore à vous.
Je pense qu'on ne se comprends pas sur le traitement.
En fait on ne peut pas anticiper ce que l'utilisateur veut faire, premièrement on doit mémoriser les données client et ensuite donner la main à l'utilisateur pour qu'il choisisse le traitement, donc pas possible à mon avis de paramétrer dans l'URL l'argument de traitement.
Il faut bien deux pages à partir du moment où sur la première on ne peut pas activer les données clients et activer les traitements.
Ou alors je n'ai rien compris.....
OK, vous confirmez ce que je pensais.
Il faut effectivement valider le premier formulaire qui contient les données nom, prénom, année pour pouvoir ensuite travailler sur le deuxième formulaire (quelle que soit la technique) et récupérer les données.
Ceci alourdit un peu le dialogue car il faut avoir deux pages différentes, donc deux menus, un pour saisir les données, un deuxième pour accéder aux traitements.
En fait j'essayais de voir si on pouvait faire cela avec un seul menu donc une seule page, mais apparemment vous confirmez que ce n'est pas possible. Dommage car un peu lourd.
J'ai pris acte de votre aide et j'ai utilisé deux formulaires, deux pages différentes, en utilisant les sessions, ça marche.
Mon code du premier formulaire pour saisir les données:
<body>
<p><font face="Arial, Helvetica, sans-serif"><strong>SELECTION DU CLIENT A TRAITER </strong></font></p>
<form id="Recherche_Client" name="Recherche_Client" method="post" action="Menu_General.php">
<p>Nom Client :
<input name="Nom_Client" type="text" id="Nom_Client" size="50" maxlength="50" />
</p>
<p>Prénom Client :
<input name="Prenom_Client" type="text" id="Prenom_Client" size="45" maxlength="45" />
</p>
<p>Année :
<input name="Annee" type="text" id="Annee" size="7" value=" 2010"maxlength="4" />
</p>
<p>
<input type="submit" name="Saisie client" value="VALIDER" />
</p>
</form>
</body>
</html>
Second code pour le menu de traitement:
<body>
<p class="Style2">MENU GENERAL</p>
<form id="Afficher_Client" name="Afficher_Client" method="post" action="Affichage_Fiche_Client.php">
<span class="Style1">Pour afficher un client cliquez sur </span>
<input type="submit" name="Submit" value="AFFICHER" />
</form>
<form id="Saisie_Client" name="Saisie_Client" method="post" action="SAISIE CLIENT/Saisie_Client.php">
<span class="Style1">Pour saisir une fiche client cliquez sur</span>
<input name="Saisir Client" type="submit" id="Saisir Client" value="SAISIR" />
</form>
<p class="Style1"> </p>
</body>
</html>
Merci à vous pour votre aide et merci de me dire si j'ai bien assimilé ce que vous me disiez.
OK merci, mais désolé ça ne fonctionne pas avec le $_POST['Nom_Client'] dans le deuxième formulaire.
Il me semble que le $_POST['Nom_Client'] ne peut fonctionner qu'à partir du moment où on valide avec le bouton submit, sans quoi la donnée saisie dans l'input n'est toujours pas disponible.
Deuxièmement ce n'est apparemment pas récupérable dans le deuxième formulaire, ça ne peut marcher que s'il n'y a qu'un seul formulaire mais alors il y a conflit avec le menu pour avoir deux boutons (ou plus) submit.
Je ne vois donc pas comment faire mon menu avec plusieurs formulaires et donc plusieurs submit sur la même page.
Effectivement avec les sessions ça fonctionne mais ça alourdit le menu puisqu'il me faut passer par un premier menu qui permet au premier formulaire de saisir les données, puis d'appeler un deuxième formulaire avec d'autres boutons submit (autant que de traitements à réaliser (exemple affichage client, création client, mise a jour client, suppression client, etc....).
J'ai appliqué ce que vous dites mais le deuxième bouton submit ne s'affiche pas, car il semble que if( !empty($_POST['Nom_Client']) ) repond false, si je supprime ce test j'ai l'erreur:
Notice: Undefined index: Nom_Client in C:\wamp\www\TESTPHP\MICHEL\Nom_Client.php on line 27
Nom Client :
Notice: Undefined index: Prenom_Client in C:\wamp\www\TESTPHP\MICHEL\Nom_Client.php on line 29
Prénom Client :
Notice: Undefined index: Annee in C:\wamp\www\TESTPHP\MICHEL\Nom_Client.php on line 31
Annee :
ce qui prouverait qu'on ne peut pas utiliser $_POST['Nom_Client']
Voici le code :
<body>
<p><font face="Arial, Helvetica, sans-serif"><strong>SELECTION DU CLIENT A AFFICHER </strong></font></p>
<?php
echo '<form action="Affichage_Fiche_Client.php" name="Recherche_Client" method="post">';
echo 'Nom Client :<input type="text" name="Nom_Client" id="Nom_Client" size="50" maxlength="50">';
echo '<br>';
echo 'Prénom Client :<input type="text" name="Prenom_Client" id="Prenom_Client" size="45" maxlength="45">';
echo '<br>';
echo 'Année : <input name="Annee" type="text" id="Annee" size="7" value=" 2010"maxlength="4">';
echo '<br>';
echo '<input type="submit" name="Afficher client" value="AFFICHER CLIENT" >';
echo '</form>';
if( !empty($_POST['Nom_Client']) )
{
echo '<form action="SAISIE CLIENT/Saisie_Client.php" name="SAISIE CLIENT" method="post">';
echo 'Nom Client :<input type="hidden" name="Nom_Client" size="50" maxlength="50" value="'.$_POST['Nom_Client'].'">';
echo '<br>';
echo 'Prénom Client :<input type="hidden" name="Prenom_Client" size="45" maxlength="45" value="'.$_POST['Prenom_Client'].'">';
echo '<br>';
echo 'Annee :<input type="hidden" name="Annee" size="7" maxlength="4" value="'.$_POST['Annee'].'">';
echo '<input type="submit" name="Saisie client" value="SAISIE CLIENT" >';
echo '</form>';
}
Merci.
J'ai essayé ce que vous dites en PHP. 9a fonctionne pour l'affichage.
Mais comment résoudre le problème des submit?
Je ne vois toujours pas comment.
Que deviennent les submit et les deux actions différentes pour appeler soit une page soit une autre ?
Dois-je garder les deux boutons avec les deux appels comme avant?
Merci de me dire également pourquoi utiliser le hidden, c'est une astuce?
Apparemment non car elles dépendent de la réponse du premier formulaire, donc je ne sais pas comment les récupérer si ce n'est par $_POST.
Or $_POST ne peut pas marcher dans le second formulaire.
D'où ma question:
Est-ce possible de les récupérer ou pas?
Avant d'envisager des sessions je voudrais savoir si je peux récupérer les valeurs dans mon deuxième formulaire de la même page de manière à n'avoir qu'un seul menu et non pas deux au minimum..
Oui j'avais pensé aux sessions mais en fait ce que je voudrais c'est tout simplement récupérer les valeurs des nom, prénom, année dans le second formulaire de la même page.
Est-ce possible à partir de la même page?
Si j'utilise les sessions cela voudrait dire que j'aurai d'abord une page de menu général avec un formulaire (nom, prénom, année) qui appellerait un autre menu dans lequel j'aurai différent formulaires avec différents submit de différentes pages récupérant par session les valeurs nom, prénom, année.
Est-ce que je me trompe?
Bonjour à tous,
J'aurai besoin de votre aide pour m'indiquer comment procéder pour résoudre le problème suivant:
J'ai un menu général avec plusieurs formulaires, donc plusieurs bouton submit et plusieurs actions de pages à appeler.
Mon menu comprend trois variables nom, prénom, année.
J'arrive à récupérer les valeurs de ces variables avec $_POST['Nom_Client']; par exemple pour l'action correspondant au premier formulaire "afficher client".
Mais je voudrais récupérer les mêmes données dans les autres formulaires comme pour "saisie client" ou autre que je souhaite rajouter au menu (dans ce cas la méthode $_POST['Nom_Client']; ne peut pas fonctionner.
Merci de me dire comment procéder pour récupérer les données du premier formulaire dans les formulaires suivants.
Voici mon code:
<body>
<p><font face="Arial, Helvetica, sans-serif"><strong>SELECTION DU CLIENT A AFFICHER </strong></font></p>
<form id="Recherche_Client" name="Recherche_Client" method="post" action="Affichage_Fiche_Client.php">
<p>Nom Client :
<input name="Nom_Client" type="text" id="Nom_Client" size="50" maxlength="50" />
</p>
<p>Prénom Client :
<input name="Prenom_Client" type="text" id="Prenom_Client" size="45" maxlength="45" />
</p>
<p>Année :
<input name="Annee" type="text" id="Annee" size="7" value=" 2010"maxlength="4" />
</p>
<p>
<input type="submit" name="Afficher client" value="AFFICHER CLIENT" />
</p>
</form>
<form action="SAISIE CLIENT/Saisie_Client.php" method="post" name="SAISIE CLIENT">
<input type="submit" name="Saisie client" value="SAISIE CLIENT" />
</form>
<p> </p>
</body>
</html>
Il n'y a pas d'erreur, ça fonctionne.
Mon problème vient du refresh de mon navigateur.Je dois repartir à zero depuis le programme du formulaire si je veux que les modifications du programme soient prises en charge.
Voilà le genre de piège dans lequel je suis tombé.
Merci à tous.
Pour plus de précisions voici les autres instructions (appelant appelé)
Programme appelant contenant le formulaire:
Programme appelé:
Pareil pour E_Mail
OK Merci.
J'ai corrigé:
Mais maintenant j'ai l'erreur:
Notice: Undefined index: Prenom_Conjoint in C:\wamp\www\TESTPHP\MICHEL\Affichage_Client_Saisie.php on line 19
Notice: Undefined index: E_Mail in C:\wamp\www\TESTPHP\MICHEL\Affichage_Client_Saisie.php on line 49
Qu'elle en est la raison? J'ai beau vérifier je ne vois pas l'erreur, les deux post ont bien le même nom.
Que dois-je vérifier?
Ça marche, j'ai recopié le module appelant.
Mystère.
Je ne sais pas comment faire.
Je ne connais pas l'adresse.
Bonjour,
J'ai récupéré un code PHP pour gérer un calendrier.
Je l'ai copié, changé les paramètres et j'ai une erreur d'appel:
Not Found
The requested URL /TESTPHP/MICHEL/pop.php was not found on this server.
voici mon code:
<html>
<head>
<title>Test Calendrier -> Exemple</title>
</head>
<body>
<form name="test" method="post" action="#">
Date de Naissance :<input type="text" name="date_naissance" readonly="readonly"/>
<a href="#" onClick=" window.open('pop.php?frm=test&ch=date_naissance','calendrier','width=350,height=160,scrollbars=0').focus();"><img src="TEST_CALENDRIER/petit_calendrier.gif" width="23" height="16" border="0"/></a>
</form>
</body>
</html>
or le pop.php existe bien dans la même directory du serveur que mon programme..
Pouvez-vous me dire pourquoi il ne trouve pas?
Merci d'avance.
Pages : 1