Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1782 connectés 

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  PB REQUETE SQL POUR SE LOGGER SUR MON SITE

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

PB REQUETE SQL POUR SE LOGGER SUR MON SITE

n°1603281
axelandre
Posté le 23-08-2007 à 21:54:13  profilanswer
 

Bonsoir à tous,
 
Bon ben voila j'ai une erreur sql lorsque je me logue sur mon site, la voici :
Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource
 
Et voici mon code :
 
<?php
$db = mysql_connect('localhost', 'root', '');
mysql_select_db('pkr',$db);  
// On démarre la session
session_start();
$loginOK = false;  // cf Astuce
 
// On n'effectue les traitement qu'à la condition que  
// les informations aient été effectivement postées
if ( isset($_POST) && (!empty($_POST['Pseudo'])) && (!empty($_POST['MotDePasse'])) ) {
 
  extract($_POST);  // je vous renvoie à la doc de cette fonction
 
  // On va chercher le mot de passe afférent à ce login
  $sql = "SELECT Pseudo, MotDePasse, Prenom, Age, LieuHabitation, Pays, FROM joueurs WHERE MotDePasse = '".addslashes($MotDePasse)."'";
  $req = mysql_query($sql);
   
  // On vérifie que l'utilisateur existe bien
  if (mysql_num_rows($req) > 0) {
     $data = mysql_fetch_assoc($req);
     
    // On vérifie que son mot de passe est correct
    if ($MotDePasse == $data['MotDePasse']) {
      $loginOK = true;
    }
  }
}
 
// Si le login a été validé on met les données en sessions
if ($loginOK) {
  $_SESSION['Pseudo'] = $data['Pseudo'];
  $_SESSION['Prenom'] = $data['Prenom'];
  $_SESSION['Age'] = $data['Age'];
  $_SESSION['LieuHabitation'] = $data['LieuHabitation'];
  $_SESSION['Pays'] = $data['Pays'];
}
else {
  echo 'Une erreur est survenue, veuillez réessayer !';  
}
?>
 
Merci d'avance pour votre aide qui va m'être très précieuse.

mood
Publicité
Posté le 23-08-2007 à 21:54:13  profilanswer
 

n°1603288
MagicBuzz
Posté le 23-08-2007 à 22:24:09  profilanswer
 

1/ on se fout de ton code PHP
2/ affiche ce que donne :
echo $req;
3/ affiche le message d'erreur sql (donc fait tourner le résultat de la ligne ci-dessus dans phpmyadmin)

n°1603289
axelandre
Posté le 23-08-2007 à 22:28:44  profilanswer
 

pardon si vous vous foutez de mon code mais je n'en savais rien.
 
Alors si je lui demande de m'afficher l'erreur sql il me donne :
Erreur SQL :  
SELECT Pseudo, MotDePasse, Prenom, Age, LieuHabitation, Pays, FROM joueurs WHERE MotDePasse = '1234'
 
Voila.
 
merci

n°1603290
MagicBuzz
Posté le 23-08-2007 à 22:30:02  profilanswer
 

voilà.
 
donc après "pays", t'as une virgule en trop que tu peux enlever :)
 
(c'est pas que je me "fout" de ton code. c'est surtout que tout ce qui est PHP est totalement indépendant du problème de requête. donc quand t'as une erreur SQL, le premier truc à faire, c'est faire un echo de cette dernière, et la tester dans phpmyadmin ou autre requêteur. si ça passen le bug est ailleurs, et si ça passe pas, on sait que c'est ça qui merde, ça évite de passer la nuit à comprendre comment marche le php autour)


Message édité par MagicBuzz le 23-08-2007 à 22:32:04
n°1603291
axelandre
Posté le 23-08-2007 à 22:31:38  profilanswer
 

HOLALA!
 
Génial, mais en fait c'était tout con lol!
 
Vieille erreur de saisie.
 
merci beaucoup MagicBuzz.
 
passe une bonne soirée.

n°1603292
MagicBuzz
Posté le 23-08-2007 à 22:33:55  profilanswer
 

ps : juste un truc comme ça...
 
ajoute "and pseudo = ..." dans ta requête. parceque si deux personnes utilisent le même mot de passe tu vas avoir des surprises ;)
tout comme si un petit malin tapes "toto" ou "1234", valeurs typiques de mots de passe : il va se retrouver connecté avec le compte d'une autre personne.


Message édité par MagicBuzz le 23-08-2007 à 22:34:44
n°1603294
axelandre
Posté le 23-08-2007 à 22:41:32  profilanswer
 

Je l'ai fait mais le truc c'est qu'il m'affiche le echo tout à la fin qui dit : "Une erreur est survenue..."
 
J'ai donc rajouté à la condition de validation If ($MotDePasse == $data['MotDePasse']), un && $Pseudo == $data['Pseudo']);
 
Mais il m'affiche toujours le même message!
 
Et la je vois pas!
 
Merci encore

n°1603297
axelandre
Posté le 23-08-2007 à 22:56:29  profilanswer
 

Crois tu que tu pourrais m'aider sur un problème que j'ai avec un formulaire??

n°1603298
dwogsi
Défaillance cérébrale...
Posté le 23-08-2007 à 22:57:48  profilanswer
 

En passant il existe aussi la fonction mysql_error() qui donne de bonnes explications sur un problème de requête. Idéale donc dans ce genre de situations.


---------------
-- Debian -- Le système d'exploitation universel | Le gras c'est la vie! | /(bb|[^b]{2})/
n°1603299
axelandre
Posté le 23-08-2007 à 23:01:08  profilanswer
 

ok merci.
 
Et toi tu pourrais peut-être m'aider pour un autre problème que j'ai avec un formulaire?
 
J'ai un souci avec les bouton radio!
 
Je ne vois aps comment faire pour dire que si le bouton 1 est sélectionné, alors tu prend sa value et tu lui donne la variable $correct=true, et le bouton 2 dans ce cas tu lui donne la variable $incorrect=false.
 
Merci

mood
Publicité
Posté le 23-08-2007 à 23:01:08  profilanswer
 

n°1603309
dwogsi
Défaillance cérébrale...
Posté le 23-08-2007 à 23:37:04  profilanswer
 

A oui en passant les titres tout en majuscules sont moyennement appréciés ici.
 
Ensuite je veux bien t'aider, mais je t'avouerais que je trouve ta question un peu floue. Si tu pouvais clarifier, donner un exemple ça aiderait pas mal pour te répondre!


---------------
-- Debian -- Le système d'exploitation universel | Le gras c'est la vie! | /(bb|[^b]{2})/
n°1603315
axelandre
Posté le 23-08-2007 à 23:48:35  profilanswer
 

En fait mon formulaire de saisie(nouvelle_entree.php) demande au visiteur de sélectionner par des boutons radio le type de jeux :
 
Cette ligne pour le jeu Sit And Go :
 
<td><input class="radio" type="radio" name="NomTournois" value="IdSAG"> Sit And Go</td>
 
Et cette ligne pour le MTT :
 
<td><input class="radio" type="radio" name="NomTournois" value="IdMTT"> MTT</td>
 
Et en fait, lors de la vérification de la saisie(verif_nouvelle_entree.php), je souhaiterai pouvoir sélectionner la valeur du bouton sélectionné par le visiteur et lui donner la valeur vrai. Et du coup donner la valeur false à l'autre bouton qui n'a pas été sélectionné.
 
Mon but, pouvoir ensuite, par requete sql, insérer uniquement la valeur du bouton sélectionné dans ma base.
 
le souci c'est que si le visiteur a bien tout rempli, et bien ma base ne s'alimente pas!
 
Donc il doit y avoir un problème dans ma requete et je ne vois pas ce que c'est. Et donc du coup je ne sais pas si ce que je t'ai expliqué avant fonctionne(et je ne pense pas que cela fonctionne!).
 
j'espère avoir été assez claire.
 
merci

n°1603324
dwogsi
Défaillance cérébrale...
Posté le 24-08-2007 à 00:09:30  profilanswer
 

Fais voir ton code (les parties intéressantes) et on verra.


---------------
-- Debian -- Le système d'exploitation universel | Le gras c'est la vie! | /(bb|[^b]{2})/
n°1603329
axelandre
Posté le 24-08-2007 à 00:43:36  profilanswer
 

Ok
 
Alors pour ce qui est du formulaire de saisie, tu a les infos dans mon dernier post.
 
La page verif c'est ici :
 
  <tr>
   <td class="explication">Indique sur quel type de jeu tu étais :</td>
    <br/>
   <td><input class="radio" type="radio" name="NomTournois" IdSAG"> Sit And Go
    <?  
    $NomTournois = $_POST['NomTournois'];
    ?>
   </td>
    <br/>
   <td><input class="radio" type="radio" name="NomTournois" value="IdMTT"> MTT
 
   </td>
  </tr>
 
Donc la tu la compris c'est la vérification des fameux bouton de sélection du type de jeu.
 
Et maintenant tu trouveras les conditions d'envoi des infos sur ma base de données :
 
 <?
$Insert="INSERT INTO sag(NumTournois, NomTournois, Pseudo, Date, NbJoueurs, PrixEntree, Classement, Gain) VALUES('', '$NomTournois', '$Pseudo', '$Date', '$NbJoueurs', '$PrixEntree', '$Classement', '$Gain')";
   
  If ($NomTournois==$incorrect || $Date==$incorrect || $NbJoueurs==$incorrect || $PrixEntree==$incorrect || $Classement==$incorrect || $Gain==$incorrect)
  {
   echo 'Désolé mais je ne peux pas prendre ton enregistrement en compte car certaines informations sont incorrectes! Allez on y retourne!';
  }
  else
  {
   $Insert;
   echo 'Tes informations ont bien été enregistrées.';
  }
 ?>
 
La variable $NomTournois est utilisée pour vérifier la valeur du bouton radio avec la value="IdSAG". Les autres vaiables ne nous intéresse pas pour le problème en question (sauf si tu y vois un intérêt particulier).
 
Et donc au final, cette requete ne donne rien (malgrès qu'il n'y a pas d'erreur et que le echo 'Tes informations ont bien été enregistrées.'; s'affiche lui aussi.
 
J'espère que tu vas pas t'y perdre.
N'hésite pas à me demander des précisions si tu en as besoin.
 
merci

n°1603332
esox_ch
Posté le 24-08-2007 à 00:54:50  profilanswer
 

Heu :heink: C'est où que tu executes la requete?

n°1603333
dwogsi
Défaillance cérébrale...
Posté le 24-08-2007 à 00:56:24  profilanswer
 

Ouai déjà ou est l'exécution de ta requête?
Et puis qu'est ce que ça :
$NomTournois = $_POST['NomTournois'];  
fout au milieu du code html...?


---------------
-- Debian -- Le système d'exploitation universel | Le gras c'est la vie! | /(bb|[^b]{2})/
n°1603365
axelandre
Posté le 24-08-2007 à 09:17:36  profilanswer
 

dwogsi a écrit :

Ouai déjà ou est l'exécution de ta requête?
Et puis qu'est ce que ça :
$NomTournois = $_POST['NomTournois'];  
fout au milieu du code html...?


 
Alors en fait, <? $NomTournois = $_POST['NomTournois'];?>  c'est pour prendre la valeur sélectionnée du bouton qui a pour name="NomTournois".
Mais mon problème est que je ne vois pas comment interpréter la saisie et la non saisie sur deux boouton n'ayant pas la même value mais ayant le même name. Car en fait je veux prendre uniquement en compte la valeur du bouton sélectionner pour le rentrer dans la base et ne pas tnir compte de celui qui n'a pas été sélectionné.
 
Et l'exécution de ma requête est la suivant :
 
 <?
 
$req = mysql_query("INSERT INTO sag(NumTournois, NomTournois, Pseudo, Date, NbJoueurs, PrixEntree, Classement, Gain) VALUES('', '$NomTournois', '$Pseudo', '$Date', '$NbJoueurs', '$PrixEntree', '$Classement', '$Gain')" );
$res = mysql_num_rows($req);  
  If ($NomTournois==$incorrect || $Date==$incorrect || $NbJoueurs==$incorrect || $PrixEntree==$incorrect || $Classement==$incorrect || $Gain==$incorrect)
  {
   echo 'Désolé mais je ne peux pas prendre ton enregistrement en compte car certaines informations sont incorrectes! Allez on y retourne!';
  }
  else
  {
   $donnees = mysql_fetch_assoc($res);
   echo 'Tes informations ont bien été enregistrées.';
  }
 ?>
 
Voilou.
 
Par contre pour les modifications que vous m'aaporterai je vous donnerai les résultats ce soir (vers 18h30) car la je suis au boulot et donc pas de easyPHP possible car pas les droits administrateurs!
 
Merci beaucoup pour votre aide.
 
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  PB REQUETE SQL POUR SE LOGGER SUR MON SITE

 

Sujets relatifs
[SQL] Probleme avec ORDER BYpb de requète
Site d'e-commerce : Quel langage choisir ??Import fichier dans SQL Server avec .bat
[HTML] Création de mon site: les problèmes.Recupere une base SQL avec *.mdf sans *.ldf ?
requete sql compliquéeSite E-commerce, choix entre OsCommerce, PhpOpenStore, Zend, Peel
[ Conseil] Coder un site en PHPURGANT(recherche un Codeur de site web le principale)(qui et fan de st
Plus de sujets relatifs à : PB REQUETE SQL POUR SE LOGGER SUR MON SITE


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR