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

Résolu/Fermé
Signaler
Messages postés
26
Date d'inscription
mercredi 9 février 2005
Statut
Membre
Dernière intervention
9 mars 2005
-
 darrouch -
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?

11 réponses

Messages postés
8731
Date d'inscription
vendredi 19 septembre 2003
Statut
Modérateur
Dernière intervention
20 août 2016
1 521
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à :-)
1
Messages postés
26
Date d'inscription
mercredi 9 février 2005
Statut
Membre
Dernière intervention
9 mars 2005
1
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
0
Messages postés
8731
Date d'inscription
vendredi 19 septembre 2003
Statut
Modérateur
Dernière intervention
20 août 2016
1 521
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.... :-)
0
>
Messages postés
8731
Date d'inscription
vendredi 19 septembre 2003
Statut
Modérateur
Dernière intervention
20 août 2016

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
0
Messages postés
8731
Date d'inscription
vendredi 19 septembre 2003
Statut
Modérateur
Dernière intervention
20 août 2016
1 521 >
Messages postés
8731
Date d'inscription
vendredi 19 septembre 2003
Statut
Modérateur
Dernière intervention
20 août 2016

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 :-)
0
Messages postés
8731
Date d'inscription
vendredi 19 septembre 2003
Statut
Modérateur
Dernière intervention
20 août 2016
1 521 >
Messages postés
8731
Date d'inscription
vendredi 19 septembre 2003
Statut
Modérateur
Dernière intervention
20 août 2016

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...
0
Messages postés
10
Date d'inscription
lundi 7 février 2005
Statut
Membre
Dernière intervention
11 février 2005
3
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
0
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
0
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?
++
0
Messages postés
10
Date d'inscription
lundi 7 février 2005
Statut
Membre
Dernière intervention
11 février 2005
3 > zeal21
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
0
Yop !

Ce que tu veux faire c'est une usine à gaz ! :)
Il va falloir que ton script php te génere un tableau javascript du style :

service[id_utilisateur]=nom_du_service

Solution valide si 1 utilisateur = 1 service. Et uniquement si le but est de faire de l'affichage... C'est pas une solution très propre si tu dois reposter ton formulaire...

et que tu fasse une fonction javascript capable de récupérer ça...
(c'est en fait pas très compliqué, mais je te dirais pas comment on fait vu que je suis une quiche question js, et donc je fuis ce langage comme la peste)

Y'a deux défauts majeurs...
1) question confidentialité c'est très très (vraiment très très !) limite...
2) c'est acceptable si tu as une quinzaine d'utilisateurs, ça l'est beaucoup moins si tu en as 350...
0
Messages postés
26
Date d'inscription
mercredi 9 février 2005
Statut
Membre
Dernière intervention
9 mars 2005
1
ok
en fait voila c'est pas vraiment une session que je veux faire

je fait un intranet et je modifie des pages pour le service informatique
les utilisateur déclarent par l'intranet leur incident
donc je voudrais une sorte d'authentification mais sans mot de passe l'utilisateur choisit son nom dans une liste déroulante et son service s'affiche dans une zone de texte en dessous de cette liste.
cela me servira plus tard pour que dès qu'il déclare leur incident ils envoient un mail avec service nom....etc

le JS je connait très peu et j'ai plutôt 100 voire200 utilisateurs mais tous n'ont pas d'incidents!!
Puis chaque service comporte plusieurs utilisateurs!
puis j'ai déjà présenté le projet au responsable info et ca ne lui a pas posé de problèmes (comparé a moi.... :( ) donc cette solution lui ocnvient!!


voila pour les explications...

++
0
>
Messages postés
26
Date d'inscription
mercredi 9 février 2005
Statut
Membre
Dernière intervention
9 mars 2005

Heu... juste un truc...

Meme si tous les utilisateurs n'ont pas d'incident, ils doivent tous être dans la liste, en cas de besoin, n'est ce pas ?

Du coup à chaque fois, l'utilisateur devra retourner chercher son nom dans une liste déroulante comptant 200 personnes ?

J'ai mal pour eux ! :)
0
Messages postés
26
Date d'inscription
mercredi 9 février 2005
Statut
Membre
Dernière intervention
9 mars 2005
1 >
Messages postés
26
Date d'inscription
mercredi 9 février 2005
Statut
Membre
Dernière intervention
9 mars 2005

en fait nan

si l'utilisateur ne se trouve pas dans la liste il peut s'enregistrer
ok si tout le monde a des problèmes ca va etre lourd a chercher leur nom mais bon
pi tout le monde n'a pas de problèmes en info et ils ont le téléphone aussi!!

après ils font ce qu'ils veulent soit ils utilisent ma solution ou pas je m'en fout tant que j'ai un projet de stage!! :D

voila
0
Messages postés
26
Date d'inscription
mercredi 9 février 2005
Statut
Membre
Dernière intervention
9 mars 2005
1
bonjour,

ce site est pour une entreprise où je suis en stage
cxe matin la responsable info a vu le travail que j'ai fait, je lui expliqué pour certains problèmes.

et pour ce formulaire, pour cet affichage automatique elle m'a conseillé de mettre une liste déroulante qui était mieux, c'était + homogène par rapport au reste du site....

donc j'abandonne cette solution

En tout cas MERCI BEAUCOUPde votre aide et de votre générosité, de perdre du temps pour un newbie ;-) c'est vachement sympa ;-)

a bientôt...
0
Messages postés
8731
Date d'inscription
vendredi 19 septembre 2003
Statut
Modérateur
Dernière intervention
20 août 2016
1 521
Bonne chance :-)
0
Messages postés
9
Date d'inscription
vendredi 3 novembre 2006
Statut
Membre
Dernière intervention
4 novembre 2006

Bonjour,

Je suis entrain de créer un formulaire "liste déroulante pour des produits lié avec mysql.

Je souhiate faire parraitre sur la meme page le prix et la réference du produit sélectioné :

<?php
//on se connecte à la base de donnée
$SQL = mysql_connect('localhost','root','') or die ("erreur de connexion");print ("Connexion réussie.");

//on selectionne votre base
mysql_select_db('lcompresseurs',$SQL) or die ("erreur de connexion base");

$result=mysql_query("SELECT Ref,Compresseur,Prix,Design FROM dixair");
mysql_close();
?>

<p>Veuillez choisir votre compresseur :</p>

<SELECT NAME="compresseur">
<?
while($val=mysql_fetch_array($result))
{
echo "<OPTION VALUE='".$val["Compresseur"]."'>".$val["Compresseur"]."</option>";
}
?>
</SELECT>
<input type="submit" value="Vérifier le prix" />

Jusque la tout fonctionne ma liste est reprise de mysql mais je n'arrive pas a affiché un résultat quand la personne choisi le produit.

Pouvez vous m'aider ?????

Merci
0
avoir plus info
0
script php gestion de panier SVP
0
salut tous le monde
je veux m'identifier ,et quand j entre mon login et mon mot de passe me repond avec une erreur c'est qu'ils sont faux ,alors qu 'ils sont enregistrées dans une table sur ma base de données mysql,c quoi le probléme
c urgent
mon script est en PHP
et je travail avec easyphp
0
Et moi qui pensais que c'était un problème de récupération de données... Tant pis.
0
Salut
je fait un site il y a une identification la page marche losrque qu'on rentre l'identifient et le code mais ensuite j'ai un formulaire et je voudrai que dans une liste déroulente on mette que les élément appartent a la personne qui c'est identifier
voila et merci de me repondre ou de me dire si c possible ou nn lol
0
vous devez les mettre dans un java script
0