Flux rss
Collection CommentCaMarche.net
Rechercher : dans
Par : Pertinence Date Nom d'utilisateur
Statut : Résolu

[PHP/MYSQL]recupération de données...

zeal21, le mercredi 9 février 2005 à 11:01:19
bonjour,
je fais un site en php/mysql
j'ai créé un formulaire où j'ai une liste déroulante comportant mes utilisateurs et une zone texte correspondant au service auquel appartient c utilisateurs.
lorsque je choisis un utilisateur, THÉORIQUEMENT ,le nom du service s'affiche automatiquement.
cependant, c'est l'ID de l'utilisateur qui s'affiche.
je sais qu'il faut que je fasse une requête pour récupérer cette valeur mais je ne sais pas où le mettre.

ICI
function set_service() { 
 document.formulaire.nomserv.value=document.formulaire.iduser­.value;
  } 


ou dans la value de ma zone texte?
Répondre à zeal21  Signaler ce message aux modérateurs Aller au dernier message

1


  • 1
    Ce message vous semble utile, votez !
  • Ce message ne vous semble pas utile, votez !
  • Signaler ce message aux modérateurs
M0rpheus, le vendredi 11 février 2005 à 03:01:42
Bonjour

entre vos deux proposition pour son emplacement, les deux sont identiques, car la donction utilisé sert a définir l'id alors la definir par fonction ou dirrectement cela reviens au même mais il est evident que ce soit l'ID de vos utilisateur qui s'affiche car si je lis votre code je vois ceci :
document.formulaire.nomserv.value=document.formulaire.iduser­.value;

d'apres une certaine logique il est evident que la valeur de iduser soit l'id de l'utilisateur. Si iduseur necorrespond pas à l'id alors je ne comprend pas votre script, il me faudrait voir ce fragment html qui affiche la liste et la zone de texte pour vous répondre.

Bonne continuation pour votre site.

Cordialement : Maxime Si vous cherchez le bonheur venez chez moi
Répondre à M0rpheus

2


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
zeal21, le vendredi 11 février 2005 à 08:55:29
oué d'accord
je m'explique mieux:
ma liste déroulante est créer a partir de mon iduser pour récupérer le nom et le prénom de l'utilisateur.
mais je suis obligé de passer par cet iduser pour récupérer le service: dans ma table USERS j'ai une clé étrangère ID_DEST qui renvoie a la table de mes services.
j'ai essayé des requêtes SQl, d'autres moyens je ne sais plus trop lesquels et cela ne fonctionnait pas...
donc j'aimerais avoir l'explication ou un morceau de code si quelqu'un l'a fait pour récupérer une valeur à partir d'un ID mais dans mon cas (liste déroulante et affichage automatique)

Vous voyez ce que je vopudrais?

merci en tout cas de votre...

a bientot
Répondre à zeal21

3


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
zeal21, le vendredi 11 février 2005 à 08:58:14
LOL
je viens d'aller sur ton profil et je vois que tu es de dijon!!
ben moi je suis de beaune!lol
tu es dans quel lycée?
++
Répondre à zeal21

4


  • 1
    Ce message vous semble utile, votez !
  • Ce message ne vous semble pas utile, votez !
  • Signaler ce message aux modérateurs
M0rpheus, le vendredi 11 février 2005 à 17:29:55
Bonjour
Effectivement, expliqué de la sorte, je ne saurais vous aider, désolé de n'avoir pas compris dés la premiere fosi ce ue vous vouliez dire.

Pour ce qui est du lycée je me trouve a Eiffel a Dijon sinon j'habite a 80Km de Dijon

Encore dsl de ne savoir vous répondre Si vous cherchez le bonheur venez chez moi
Répondre à M0rpheus

5


  • 1
    Ce 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


  • 1
    Ce 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


  • 1
    Ce 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


  • 1
    Ce 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


  • 1
    Ce 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


  • 1
    Ce 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


  • 1
    Ce 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


  • 1
    Ce 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


  • 1
    Ce 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


  • 1
    Ce 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


  • 1
    Ce 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


  • 1
    Ce 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


  • 1
    Ce 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


  • 1
    Ce 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


  • 1
    Ce 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


  • 1
    Ce 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


  • 1
    Ce 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


  • 1
    Ce 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<