5 1Ce message vous semble utile, votez !- Ce message ne vous semble pas utile, votez !
- Signaler ce message aux modérateurs
|
kilian, le vendredi 11 février 2005 à 22:08:33 Bonsoir,
Alors il faut recharger la page dans ce cas là (selon l'évènement que tu veux en Javascript)...
Si ton Formulaire a pour methode "post", tu poses une condition en php
if (isset($_POST['iduser']))
{
Récupération du service dans la base de données...
}
Ca te permet de dire à la page => si j'ai reçu telle valeur via la methode post (en l'occurence, ta valeur iduser depuis ton formulaire) alors je vais récupérer des trucs dans la base de données, sinon j'affiche le formulaire comme d'habitude...
A la fin de la récupération, il faut encore recharger la page et envoyer la valeur de ton service vers ton formulaire.
Pour ça tu peux utiliser
document.location.replace("http://ta_page_actuelle?service=machin")
Puis dans le formulaire (sans oublier de poser une condition en début de page avec isset comme au dessus, pour savoir si le nom du service est là, sinon afficher le formulaire comme d'habitude):
<input type="text" name="service" value="$_GET['service']" (à retranscrire en php => echapper les guillemets etc...)
Voilà :-) Répondre à kilian
6 1Ce message vous semble utile, votez !- Ce message ne vous semble pas utile, votez !
- Signaler ce message aux modérateurs
|
zeal21, le vendredi 11 février 2005 à 23:39:57 merci beaucoup!!
je vais essayer ca
mais le souci c'est que pour le site (je modifie en fait certaines pges du site d'une entreprise), l'entreprise n'a pas utilisé $_GET ou $_POST pour le site
mais est ce que cela fonctionnera quand même?
en tout cas un grand merci car c'est le 1er forum qui me donne une réponse concrète!!
je reviendrais plus souvent ici je crois
merci a bientot
/!\ ZeaL21 /!\ Répondre à zeal21 |
7 1Ce message vous semble utile, votez !- Ce message ne vous semble pas utile, votez !
- Signaler ce message aux modérateurs
|
kilian, le samedi 12 février 2005 à 00:04:49 A priori oui ça devrait fonctionner.
D'abord, c'est une manière d'écrire des scripts Php plus compatibles. Certains serveurs désactivent les variables globales, la récupération des données par get et post en php se font donc obligatoirement avec la manière que je t'ai montré. Si on utilise la manière plus directe (avec <input name="variable"> que l'on récupère directement avec $variable) avec les variables globales désactivées ça ne marchera pas. Par contre utiliser les tableaux $_POST et $_GET ça fonctionne dans les deux sens (variables globales activées ou non).
Et c'est plus sécurisé de les désactiver d'ailleurs.
Un ptit topo là dessus:
http://www.commentcamarche.net/php/phpform.php3
Et si un jour ton entreprise change d'hebergeur et se retrouve avec une configuration de variables globales désactivées (A moins qu'elle heberge le site chez elle)? :-)
J'oubliais, il ne faudra pas oublier de faire transiter aussi ta variable $iduser, sinon tu ne retrouveras pas sa valeur dans ton formulaire à l'arrivée.
Et au lieu de recharger la page, utiliser un fichier php annexe sera peut être plus pratique. Mais ça tu fais comme tu veux.... :-) Répondre à kilian
8 Ce message vous semble utile, votez !- Signaler ce message aux modérateurs
|
zeal21, le lundi 14 février 2005 à 09:18:44 bonjour,
je suis en train de faire ta méthode.
étant encore un débutant en php, j'aimerais savoir où tu mets ta solution.
je m'explique: ta condition pour récupérer le service avec l'iduser grâce à if(isset($_POST['iduser']))
je le mets où?
puis je sais pas si ca va fonctionner car j'ai déjà créé une fonction en javascript qui permet l'affichage automatique(d'accord ce n'est que l'iduser au lieu du service mais bon...)
faut-il que ce code dans une fonction ou pas?
je dois dire que c'est un peu mélanger dans ma téte......
merci pour les infos Répondre à zeal21 |
9 1Ce message vous semble utile, votez !- Ce message ne vous semble pas utile, votez !
- Signaler ce message aux modérateurs
|
kilian, le lundi 14 février 2005 à 10:11:16 Il vaut mieux utiliser une autre page pour ce script php je pense.
Donc il faut qu'il y ait soumission automatique du formulaire une fois que l'utilisateur a été choisi.
Il faut que ce formulaire parte vers une page nommée search_service.php (c'est pour l'exemple, tu l'appeles comme tu veux...). Là si ton formulaire de l'autre page se présentait comme suit:
<form method="post".....
<input name="iduser"....
Tu récupèreras donc la valeur de iduser dans cette variable:
$_POST['iduser']
C'est grâceà cette variable que tu fais ta requête Sql.
La fonction isset() sert à vérifier qu'une variable a bien été initialisée. Ca peut être utile pour éviter des messages d'erreurs, pour empêcher un script de s'executer si la page a été appelée sans avoir reçu de variable depuis le formulaire, bref tout simplement vérifier que la page a bien reçu telle variable par la methode post (en l'occurence le champs iduser de ton formulaire)...
Donc cette fonction est à mettre en début de script pour vérifier que search_service.php a bien reçu la variable du formulaire.
Si c'est le cas, on continue avec la requête sql...
Par contre ton affichage automatique en Javascript, j'ai pas tout compris :-) Répondre à kilian |
10 1Ce message vous semble utile, votez !- Ce message ne vous semble pas utile, votez !
- Signaler ce message aux modérateurs
|
kilian, le lundi 14 février 2005 à 10:21:54 Une fois que tu auras fait ta requête, tu fais ta redirection vers la page du formulaire avec, dans l'url, les valeurs du service et l'id user:
document.location.replace("http://page_du_formulaire.php?id_user=machin&service=truc")
Puis tu récupères ces variables comme ça dans ta page de formulaire:
$id_user=$_GET['id_user'];
$service=$_GET['service'];
Et puis voilà.
Après, soit tu mets directement dans ton champs:
<input name="service" value="<? echo $service ?>" > Pas très propre mais bon.....
Sinon tu peux récupérer ces valeurs, qui transitent via l'url, en Javascript... Répondre à kilian
11 1Ce message vous semble utile, votez !- Ce message ne vous semble pas utile, votez !
- Signaler ce message aux modérateurs
|
zeal21, le lundi 14 février 2005 à 11:33:28 ben merci bien je vais essayer cela
je m'explique mieux pour le javascript
mon formulaire est comme cela:
- une liste déroulante avec mes nom d'utilisateurs
- en dessous une zone texte qui représente mes services. je voudrais que cette zone se remplisse automatiquement lorsque je sélectionne un utilisateur.
cependant, sur un autre forum on m'a conseillé de faire une fonction en javascript. cette fonction marche car il y a bein un affichage automatique mais de l'id de l'utilisateur et non de son service
voici la fonction :
function set_service() {
document.formulaire.nomserv.value=document.formulaire.iduser.value;
}
après pour l'exécuter je la mets dans onchange(quand je change mon nom d'utilisateur)
cependant, je sais très bien que ca reprend l'id user mais je ne savais pas comment récupérer le nom du service malgré des requêtes....
voila j'espere que tu m'as mieux compris ;-)
merci encore je testerais ta solution cet après midi :-D
peut être a cet après midi
/!\ ZeaL21 /!\ Répondre à zeal21 |
12 1Ce message vous semble utile, votez !- Ce message ne vous semble pas utile, votez !
- Signaler ce message aux modérateurs
|
kilian, le lundi 14 février 2005 à 11:42:47 Ok. Mais alors dans ton script le nom du service est égal à l'id_user, ça n'avance pas à grand chose :-) Répondre à kilian
13 1Ce message vous semble utile, votez !- Ce message ne vous semble pas utile, votez !
- Signaler ce message aux modérateurs
|
zeal21, le lundi 14 février 2005 à 12:05:45 je sais bien et c'est pour cela que je demande de l'aide ;-)
a toute a l'heure
/!\ ZeaL21 /!\ Répondre à zeal21 |
|
|
14 1Ce message vous semble utile, votez !- Ce message ne vous semble pas utile, votez !
- Signaler ce message aux modérateurs
|
zeal21, le lundi 14 février 2005 à 12:36:46 j'aurais aimé une précision:
mon formulaire avec mon nom util et mon nom service sont dans un suel formulaire.
je suis peut-être bête ou je comprends de travers mais tu me dis que l'utilisateur doit être identifié après qu'il aille sur une autre page pour choisir son service.
donc je devrais faire 2pages une pour mon utilisateur et une autre pour le service?non?
ou ce qui m'arrangerait le mieux c'est que ca soit sur un seul formulaire!
merci de la précision...
/!\ ZeaL21 /!\ Répondre à zeal21 |
15 1Ce message vous semble utile, votez !- Ce message ne vous semble pas utile, votez !
- Signaler ce message aux modérateurs
|
zeal21, le lundi 14 février 2005 à 14:10:41 moué ben en fait je vois pas comment comencé...
j'aimerais avoir une réponse par rapport a ce que je t'ai demandé
en fait faire deux pages une juste pour le nom d'utilisateur et quand on choisit une personne cela m'amène vers une autre page je trouve pas ca très pratique.
c'est comme ca que je comprends la solution proposée.
Cependant je peux me tromper....(je le souhaite lol)
sinon fais un schéma ou explique autrement ;-)
merci de ta patience....
/!\ ZeaL21 /!\ Répondre à zeal21 |
16 1Ce message vous semble utile, votez !- Ce message ne vous semble pas utile, votez !
- Signaler ce message aux modérateurs
|
kilian, le lundi 14 février 2005 à 21:23:46 Rassure moi j'ai un doute... Dans un formulaire tu as deux champs:
_ L'id_user
_ Le service auquel il appartient.
Ce que tu veux c'est => lorsqu'on choisit un id_user dans une liste déroulante, son service apparaisse automatiquement dans le champs service du formulaire.
Si c'est bien ça (je lis un peu vite les messages parfois donc j'ai peut être mal compris.....)
La seule manière pour récupérer ce service en fonction de l'id_user c'est d'interroger la base de données. Je ne pense pas que ce soit faisable en Javascript (sauf erreur de ma part). Il faut donc utiliser un langage comme Php ou Asp....afin d'interroger la base de données.
Donc soit recharger la page et faire executer un script qui interroge la base de données uniquement si l'id_user a été envoyé, soit envoyer l'id_user vers une autre page qui retournera le service auquel il appartient...
C'est vrai que c'est un peu lourd comme système mais je ne vois pas d'autre solution personnellement, soit tu appeles une page annexe, soit tu recharges la page en cours...
Répondre à kilian
17 Ce message vous semble utile, votez !- Signaler ce message aux modérateurs
|
zeal21, le mardi 15 février 2005 à 08:44:41 ben voila c'est ca, t'as compris: c'est tout sur le même formulaire: mon champ utilisateur(liste déroulante) et mon champ service(zone texte).
mais en fait ma liste déroulante est basée sur mon iduser je suis obligé de faire cela. Par contre quand on voit la liste déroulante, quand on choisit un nom on clique sur nom+prénom
EXEMPLE: j'ai un thierry ardisson dont son iduser est 45. Dans mon formulaire actuellement, je choisit dans la liste déroulante "ardisson thierry" et dans ma zone texte service s'affichera 45 au lieu du mon nom de service...
tu vois mieux la chose maintenant?
Puis je fais mon site en php/mysql. cependant j'ai créer des requêtes sql mais je n'arrivais pas a récupérer le service(peut-être que je ne les mettais pas au bon endroit... :-/
faut que je réfléchisse...
a bientôt... Répondre à zeal21 |
18 1Ce message vous semble utile, votez !- Ce message ne vous semble pas utile, votez !
- Signaler ce message aux modérateurs
|
kilian, le mardi 15 février 2005 à 22:41:53 Ok,
Donc au bout du compte tu préfèrerais que la requête se fasse en rechargeant la page? Répondre à kilian
19 1Ce message vous semble utile, votez !- Ce message ne vous semble pas utile, votez !
- Signaler ce message aux modérateurs
|
zeal21, le mercredi 16 février 2005 à 08:47:12 je vois pas ce que tu veux dire quand tu ids "la requête se fait en rechargent la page"...
j'aimerais que mon service s'affiche automatiquement dès qu'on choisit un utilisateur, comme actuellement. Sauf qu'au lieu que ca soit l'iduser je voudrais que ca soit le nom du service.
Parce que là j'arrive seulement a afficher l'iduser automatiquement quand je selectionne un utilisateur... :-/
J'ai déjà essayé de faire par plusieurs moyens mais je vois pas comment faire et j'ai dû avancé un peu sur le site...
/!\ ZeaL21 /!\ Répondre à zeal21 |
20 Ce message vous semble utile, votez !- Signaler ce message aux modérateurs
|
kilian, le mercredi 16 février 2005 à 09:20:45 Php s'execute côté serveur. Javascript côté client.
C'est une fois la page chargée côté client que quelqu'un selectionnera un utilisateur. Si tu avais voulu faire une requête en Php juste après, ça ne marcherais pas => Php s'execute côté serveur et la page est déjà chargée, donc le php a déjà été exécuté . Tu es donc obligé de renvoyer tes données quelque part si tu veux faire une requête dans la base de données en fonction de ce que vient de choisir le visiteur de ton site.
Il faut réfléchir à l'ordre d'execution d'une page Php.
Dans l'ordre : requête du visteur vers une page Php, execution du code Php sur le serveur (requêtes Sql et génération de code Html, par exemple), le code a été executé et la page est créée donc il n'ya plus de code Php sur la page, la page générée est envoyée vers le visiteur. Il remplit le formulaire mais s'il veut faire une requête Sql il est obligé de refaire une requête vers le serveur, vers la même page ou vers une autre page.
C'est pour ça que je te dis qu'il faut recharger la page ou en appeler une autre.
Mais tu as d'autres solutions comme appeler un fichier Javascript qui contient tes utilisateurs, les services auxquels ils appartiennent. Avec ça pas besoin de recharger la page ou en appeler une autre. Par contre tes données sur les utilisateurs seront publiques, consultables par tous s'ils connaissent un peu le fonctionnement d'une page Web.
Sans compter que si le visiteur a désactivé le Javascript chez lui, ça ne marchera pas.... Répondre à kilian |
21 1Ce message vous semble utile, votez !- Ce message ne vous semble pas utile, votez !
- Signaler ce message aux modérateurs
|
zeal21, le mercredi 16 février 2005 à 11:22:31 oué ok
pfff je commence a désespérer...
je croyais que c'était facile a réaliser et je me trompe je crois... :(
j'ai fait une requête pour choper le nom du service ca me fait une erreur sql (n°1052) ou sinon dans mon formuliare il me reste ma liste déroulante :(
en plus je ne vois pas où mettre ce que tu m'as conseillé, s'il faut que je le mette en même temps que je remplisse ma liste déroulante ou dans une fonction....
une solution a laquelle j'ai pensé serait que je fasse une liste déroulante pour utilisateur et une pour le service. et je fais le lien: on est obligé de choisir un utilisateur et son service apparait dans la liste déroulante service...
mais c'est un peu daubé ce système car l'utilisateur n'a qu'un seul service...
t'en penses quoi?
/me désesprère...
merci de ta patience et ta généreuse aide ;-)
/!\ ZeaL21 /!\ Répondre à zeal21 |
22 1Ce message vous semble utile, votez !- Ce message ne vous semble pas utile, votez !
- Signaler ce message aux modérateurs
|
zeal21, le jeudi 17 février 2005 à 08:51:12 quelqu'un pourrait m'ader svp?
killian t mouru? 8-)
/!\ ZeaL21 /!\ Répondre à zeal21 |
23 1Ce message vous semble utile, votez !- Ce message ne vous semble pas utile, votez !
- Signaler ce message aux modérateurs
|
kilian, le jeudi 17 février 2005 à 09:23:35 Scuse j'ai pas beaucoup de temps. Je repasse ce soir ou demain :-) Répondre à kilian |
24 1Ce message vous semble utile, votez !- Ce message ne vous semble pas utile, votez !
- Signaler ce message aux modérateurs
|
zeal21, le jeudi 17 février 2005 à 10:17:31 ok
mais j'ai essayé des trucs mais ca marche pas...
voila:
j'ai créer une fonction search_service(recherche du service)
cependant je ne sais pas si elle est juste...je vous la donne et vous pourrez me dire si el vous paraît juste ou fausse...
function search_service($iduser){
$msg_erreur = "Impossible d'afficher le nom du service!";
if (isset($_POST['iduser'])){
if ($_POST['iduser'] == $iduser){
$nomserv = $db->query_Read_Database("SELECT ID_DEST, LIB_DEST FROM destinataires d, users u WHERE u.ID_DEST=s.ID_DEST AND ID_USER='$iduser'");
} //fin SI n°2
}//fin SI n°1
return $msg_erreur;
}//fin fonction
ensuite ce que j'ai fait est faux ou je l'emploi mal.
j'appelle ma fonction lorsque je change une donnée dans ma liste déroulante donc avec un "onchange".
mais j'ai une erreur
Citation :
<select name="iduser" onchange="
Fatal error: Call to undefined function: search_service() in e:\www\fr\Informatique\auth_user.php on line 56
donc je pense c'est parce que le php ne peut pas être interprété c'est ca?
mais pour la méthode que je fait, le mieux serait que je mette cette fonction dans une page a part?ou pas?
/!\ ZeaL21 /!\ Répondre à zeal21
29 1Ce message vous semble utile, votez !- Ce message ne vous semble pas utile, votez !
- Signaler ce message aux modérateurs
|
kilian, le jeudi 17 février 2005 à 22:10:44< |
|
|
|
|
|