problème de requête

problème de requête - PHP - Programmation

Marsh Posté le 03-03-2006 à 10:57:49    

Bonjour,
Diverses informations doivent être envoyées sur une table de données.
 
Un de ces champs se nomme 'id_user'. J'aimerai donc que lorsque l'internaute envoie ce formulaire à partir de sa session, l'id_user soit le même que celui qui se trouve dans une autre table, celle d'inscription de membres.
 
J'ai donc essayé
 
<?php  
$request = mysql_query("SELECT id FROM users WHERE pseudo='". mysql_real_escape_string($_SESSION['MM_Username']) ."'" ) or die(mysql_error());  
$result = mysql_fetch_assoc($request);  
?>  
 
(en sachant qu'une autre requête existe déjà sur la page, raison pour laquelle il y a un champ $req et $request)
 
et plus bas, inséré le champ  
 
<input type="hidden" name="id_user" value="<?php echo $result['id'] ?>" />    
 
 
 
La page de formulaire est normale, mais lorsqu'on l'envoie, ce message apparait.
 
INSERT INTO pari (id_user, id_pari, reponse) VALUES (0, 1, France)Champ 'France' inconnu dans field list
 
id_user = 0 alors que normalement, cela devrait valoir 5 !!!
 
aussi, pouvez vous me dire pourquoi 'France' inconnu dans field list
 
alors que l'internaute n'a que deux possibilités et qu'elles ne doivent pas nécessairement être mentionnées, si ? et où alors ?

Reply

Marsh Posté le 03-03-2006 à 10:57:49   

Reply

Marsh Posté le 03-03-2006 à 11:20:05    

franche est inconnu car il manque des quotes autour!!!
 
Et dans le code html du formulaire généré quelle est la value du champs id_user?

Reply

Marsh Posté le 03-03-2006 à 11:23:26    

0 ...

Reply

Marsh Posté le 03-03-2006 à 11:24:55    

et donc a ton avis?

Reply

Marsh Posté le 03-03-2006 à 11:28:50    

le champ france se situe dans une table de données et des quotes sont bien présentes pourtant

Reply

Marsh Posté le 03-03-2006 à 11:29:38    

à mon avis ? j'ai testé en mettant 5 ou d'autres valeurs et ca affiche tujours 0 sur la page d'après

Reply

Marsh Posté le 03-03-2006 à 11:36:38    

France, faut le mettre entre "

Reply

Marsh Posté le 03-03-2006 à 12:09:53    

en fait dans ma table, j'ai
 
id, titre, reponse
 
1, Quelle équipe remportera ..., France-Slovaquie
 
et avec la ligne $choix = explode("-", $res["reponse1"]); France et Slovaquie apparaissent dans une liste déroulante sur le formulaire.
 
Je ne peux donc mettre des " que dans ma table de données mais cela ne change rien pourtant

Reply

Marsh Posté le 03-03-2006 à 12:15:16    

anapajari > La valeur de id_user dans mon formulaire est <?php echo $result['id'] ?>
 
vu que je veux qu'il récupère l'id de la table "users"...

Reply

Marsh Posté le 03-03-2006 à 12:18:37    

oli1987 a écrit :

en fait dans ma table, j'ai
 
id, titre, reponse
 
1, Quelle équipe remportera ..., France-Slovaquie
 
et avec la ligne $choix = explode("-", $res["reponse1"]); France et Slovaquie apparaissent dans une liste déroulante sur le formulaire.
 
Je ne peux donc mettre des " que dans ma table de données mais cela ne change rien pourtant


 
Ouhla, ouvre un bouquin de SQL parce que là t'as rien compris

Reply

Marsh Posté le 03-03-2006 à 12:18:37   

Reply

Marsh Posté le 03-03-2006 à 12:38:55    

si, tout fonctionne bien jusqu'au moment où il ne veut pas accepter la valeur de la réponse France ou SLovaquie


Message édité par oli1987 le 03-03-2006 à 12:45:05
Reply

Marsh Posté le 03-03-2006 à 13:51:34    

MAIS METS DES QUOTES AUTOUR DES VALEURS QUAND C'EST DES VARCHAR OU DES DATES QUE TU INSERES !!!!!!!!
 
ou alors utilises msqli et bind params -> doc

Reply

Marsh Posté le 03-03-2006 à 13:59:06    

elles y sont !!!

Reply

Marsh Posté le 03-03-2006 à 14:02:04    

Code :
  1. INSERT INTO pari (id_user, id_pari, reponse) VALUES (0, 1, France)


Elles sont ou la?

Reply

Marsh Posté le 03-03-2006 à 14:10:32    

INSERT INTO pari (id_user, id_pari, reponse) VALUES (0, 1, 'France')
 
c'est bon ;), réglé le stresse ...
 
mtnt, j'ai un autre message d'erreur avant la fin. mais c'est en rapport mon id_user !! Ca doit être le même que celui qui s'affiche sur ma première table où les membres s'enregistrent. Et comme la session est toujours en cours, je ne vois pas pourquoi il ne le récupère pas directement, comme avec le pseudo par exemple (qui lui fonctionne très bien)

Reply

Marsh Posté le 03-03-2006 à 14:25:46    

Après 14 messages, t'as compris ce qu'on te disait depuis de début... Tu comprends vite mais faut t'expliquer longtemps... :/

Reply

Marsh Posté le 03-03-2006 à 14:28:35    

franchement, j'étais convaincu que j'avais rien oublié ... enfin soit, merci ;)
 
mai bon, reste l'id_user mtnt.  
 
l'erreur se situe sans doute dans mon code
 
je ne vois pas pq ça serait dans ma table.  
 
Table users :
 
id, pseudo, email
 
Et valeur id_user dans table prono : id (de table users)
 
C'est ce qu'il faut comme résultat.
 
Ca n'a probablement rien a voir avec la session vu que ce n'est pas l'id de la session, mais de l'user.
 
Comment "lier les deux tables" ?

Reply

Marsh Posté le 03-03-2006 à 14:32:29    

... mais c'est pas compliqué de voir le problème !!!

Citation :


page1:  
 - tu récupères les informations du user en fonction de son pseudo
 - tu affiches ces informations dans un formulaire
 - quand tu regardes le formulaire, tu vois que ton id_user = 0
page2:
 - tu récupères les données du formulaire ( données dans lequel on trouve id_user=0)
 - tu t'en sers pour faire un insert


Alors a ton avis, a quel niveau se situe le problème?

Reply

Marsh Posté le 03-03-2006 à 14:37:46    

à la récupération des infos. je m'en doute bien, mais comme il s'agit d'une session, est ce obligatoire de passer par $_SESSION['id_user'] ??


Message édité par oli1987 le 03-03-2006 à 14:38:09
Reply

Marsh Posté le 03-03-2006 à 14:46:42    

[:totoz] j'abandonne ...

Reply

Marsh Posté le 03-03-2006 à 14:49:22    

$_SESSION['id_user'] me donne 0 !!
 
Pour l'user avec lequel j'essaie, cela devrait donner 5 !
 
C'est pas logique quand meêm ...

Reply

Marsh Posté le 03-03-2006 à 15:54:49    

j'abandonne aussi ...


---------------
N'oubliez pas de mettre [RESOLU] dans le titre quand c'est fini - Pour poster vos sources : http://paste.clicksources.com/
Reply

Marsh Posté le 03-03-2006 à 15:59:18    

dans ta requête, tu parles de $_SESSION['MM_Username'] et dans ton dernier post, de $_SESSION['id_user']
 
Par ailleurs, est-ce que tu mets bien session_start(); en début de chaque page pour pouvoir utiliser les variables de session?

Reply

Marsh Posté le 03-03-2006 à 16:15:44    

non je suis quasiment sur qu'il fait pas de  
$_SESSION['id_user'] = $res['id=user'] <-- recup de la base sql


---------------
N'oubliez pas de mettre [RESOLU] dans le titre quand c'est fini - Pour poster vos sources : http://paste.clicksources.com/
Reply

Marsh Posté le 03-03-2006 à 16:56:13    

rufo > MM_Username reprend le pseudo. Lautre, l'id
 
Oui j'ouvre bien la session à chaque page
 
 
newneo2001 > si je le fais bel et bien (enfin je crois bien faire ;))  
 
Je vais ré-encoder :d

Reply

Marsh Posté le 03-03-2006 à 16:58:55    

oli1987 a écrit :

Je vais ré-encoder :d


en mp3 alors :o

Reply

Marsh Posté le 03-03-2006 à 17:05:46    

jaja ;)

Reply

Marsh Posté le 03-03-2006 à 17:41:12    

Code :
  1. <?php
  2. // *** Validate request to login to this site.
  3. if (!isset($_SESSION)) {
  4.   session_start();
  5. }
  6. $loginFormAction = $_SERVER['PHP_SELF'];
  7. if (isset($_GET['accesscheck'])) {
  8.   $_SESSION['PrevUrl'] = $_GET['accesscheck'];
  9. }
  10. if (isset($_POST['ident'])) {
  11.   $loginUsername=$_POST['ident'];
  12.   $password=$_POST['passe'];
  13.   $MM_fldUserAuthorization = "";
  14.   $MM_redirectLoginSuccess = "membre.php";
  15.   $MM_redirectLoginFailed = "index.php";
  16.   $MM_redirecttoReferrer = false;
  17.   mysql_select_db($database_users, $users);
  18.  
  19.   $LoginRS__query=sprintf("SELECT id, pseudo, mdp FROM users WHERE id='%s' AND pseudo='%s' AND mdp='%s'",
  20.     get_magic_quotes_gpc() ? $loginUsername : addslashes($loginUsername), get_magic_quotes_gpc() ? $id_user : addslashes($id_user), get_magic_quotes_gpc() ? $password : addslashes($password));
  21.  
  22.   $LoginRS = mysql_query($LoginRS__query, $users) or die(mysql_error());
  23.   $loginFoundUser = mysql_num_rows($LoginRS);
  24.   if ($loginFoundUser) {
  25.      $loginStrGroup = "";
  26.    
  27.     //declare two session variables and assign them
  28.     $_SESSION['id_user'] = $id_user;
  29.     $_SESSION['MM_Username'] = $loginUsername;
  30.     $_SESSION['MM_UserGroup'] = $loginStrGroup;      
  31.     if (isset($_SESSION['PrevUrl']) && false) {
  32.       $MM_redirectLoginSuccess = $_SESSION['PrevUrl'];
  33.     }
  34.     header("Location: " . $MM_redirectLoginSuccess );
  35.   }
  36.   else {
  37.     header("Location: ". $MM_redirectLoginFailed );
  38.   }
  39. }
  40. ?>


 
Je fais pareil que pour MM_Username, et sur la page d'après, je met
 
echo 'Bonjour'.$_SESSION['MM_Username'];
 
ca, ça fonctionne
 
mais par contre,  
 
echo 'Votre session est'.$_SESSION['id_user'];
 
ne fonctionne pas.
 
Quand cela va, tout va car tout arrive correctement dans ma table de données sur l'id_user qui augmente de 1 à chaque reception de formulaire.

Reply

Marsh Posté le 03-03-2006 à 17:52:16    

je trouve les lignes 3 et 4 louches. Le session_start(), je le ferais dans tous les cas. Tu peux vérifier si tu passes bien dedans, svp?

Reply

Marsh Posté le 03-03-2006 à 18:19:45    

oui, c'est bon.
 
mais ce qui dérange mon navigateur, ce sont les lignes suivantes
 

Code :
  1. get_magic_quotes_gpc() ? $loginUsername : addslashes($loginUsername), get_magic_quotes_gpc() ? $id_user : addslashes($id_user), get_magic_quotes_gpc() ? $password : addslashes($password));


 
et  
 

Code :
  1. header("Location: ". $MM_redirectLoginFailed );

Reply

Marsh Posté le 03-03-2006 à 18:23:48    

#
if (!isset($_SESSION)) {
#
 session_start();
#
}
 
déjà pas besoin du test tu fais ton session_start() sur chaque page
 
ensuite tu sais même pas faire une requete SQL simple pourquoi tu utilises un sprintf déjà ???
 
#
$LoginRS__query=sprintf("SELECT id, pseudo, mdp FROM users WHERE id='%s' AND pseudo='%s' AND mdp='%s'",
#
   get_magic_quotes_gpc() ? $loginUsername : addslashes($loginUsername), get_magic_quotes_gpc() ? $id_user : addslashes($id_user), get_magic_quotes_gpc() ? $password : addslashes($password));
#    
 
 
 
la preuve que tu fais n'importe quoi c'est que ton pseudo n'est pas retiré de ta db mais depuis cette ligne :
 
 $loginUsername=$_POST['ident'];
 
Franchement c'est du complétement n'importe quoi. tu ferrais mieux de tt supprimer ce code bien daubé et de refaire un truc normal.


---------------
N'oubliez pas de mettre [RESOLU] dans le titre quand c'est fini - Pour poster vos sources : http://paste.clicksources.com/
Reply

Marsh Posté le 03-03-2006 à 18:26:05    

c'est la page d'identification. normal donc que le pseudo n'apparaise pas. c'est l'internaute qui tape son pseudo et mot de passe

Reply

Marsh Posté le 03-03-2006 à 18:29:18    

mais ta requete déjà elle est pourrie.
 
recup tes variables avant au lieu de faire tes test dans ta req
 
$pseudo = isset($_POST['pseudo') ? html_entities($_POST['pseudo']) : null;
 
ensuite tu fais ta requete tt simpelment
 
SELECT * FROM users WHERE pseudo = mysql_real_escaped_string('$pseudo') etc...


---------------
N'oubliez pas de mettre [RESOLU] dans le titre quand c'est fini - Pour poster vos sources : http://paste.clicksources.com/
Reply

Marsh Posté le 03-03-2006 à 18:32:58    

je ne vous suis plus.
Dans la page d'identification où l'internaute tape son pseudo et mot de passe, je veux récupéréer son pseudo donc ainsi que son id, présente dans la table qui regroupe tous les membres.
 
Une fois que je sais les récupérer, je fais mes tests en echo dans la page suivante, et une fois là, c'est terminé.

Reply

Marsh Posté le 03-03-2006 à 18:36:05    

mais tu pourras rien faire ac ta page, ton code est (désolé de te le dire) mais vraiment nul à ch....
 
au lieu de recup du code compliqué que tu comprends pas, code toi un truc propre et repart de rien. Ce que tu veux faire là ca se fait en 10 min. Mais vu que tu comprend pas le code que tu as récup tu galères.


---------------
N'oubliez pas de mettre [RESOLU] dans le titre quand c'est fini - Pour poster vos sources : http://paste.clicksources.com/
Reply

Marsh Posté le 03-03-2006 à 18:39:06    

je vais essayer mais je promet rien de tte façon. et alors, vu que c'est la page d'identification, tu laisses ça
 
if (!isset($_SESSION))  
{
session_start();
}
 
ou bien je remplace ça par  
 
session_start()  
 
??

Reply

Marsh Posté le 03-03-2006 à 18:41:34    

mais où tu as vu qu'on mettais le session_start() dans un test ?????
 
tu le mets en début de chaque page. point c tout


---------------
N'oubliez pas de mettre [RESOLU] dans le titre quand c'est fini - Pour poster vos sources : http://paste.clicksources.com/
Reply

Marsh Posté le 03-03-2006 à 18:56:02    

c'est normal que mon code soit nul à chier. J'utilise dreamweaver vu que je suis débutant. ca aurait été impossible pour moi d'utiliser autre chose

Reply

Marsh Posté le 03-03-2006 à 19:07:28    

alors là tu dis encore plus n'importe quoi
 
Dreamweaver n'a jamais écrit des requêtes SQL.
 
Le code que tu utilises tu l'as récupéré sur quel site ?


---------------
N'oubliez pas de mettre [RESOLU] dans le titre quand c'est fini - Pour poster vos sources : http://paste.clicksources.com/
Reply

Marsh Posté le 03-03-2006 à 19:13:15    

ha ça je te jure ! je n'ai été sur aucun site. j'ai suivi un tutoriel sur asp-php.net pour créer une base de données qui est en rapport avec un formulaire. et tout ce que tu as lu, c'est dreamweaver qui l'a créé. je te jure !

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed