IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

Base de donnée qui n'affiche rien


Sujet :

PHP & Base de données

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 9
    Points : 7
    Points
    7
    Par défaut Base de donnée qui n'affiche rien
    je veux creer une nouvelle entrée dans ma base de donnée, mais rien ne s'affiche sous wamp lorsque je lance le code...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    <?php
     
    mysql_connect("localhost", "root", "");
     
    mysql_select_db("site");
     
    mysql_query("INSERT INTO utilisateur VALUES('', 'eeeee', aaer', '22', '33')");
     
    mysql_close();
     
    ?>
    voyez, c'est tout simple pourtant...
    Pour info, une deuxième requete comme celle ci se trouve dans le meme fichier en .php et marche très bien (mais pour une autre table...)
    ma base s'appelle bien "site" et ma table "utilisateur"
    ID est en auto-increment INT
    login:TEXT
    MDP:TEXT
    PO:MEDIUM-INT
    PA: MEDIUM INT

    voilà, je vois vraiment pas ce qui peut clocher, je compte sur vous pour me le dire

    bonne soirée !!

    edit: un autre prob vient s'ajouter à celuis que j'ai déjà: ou plutôt une question: comment peut on faire pour charger une seule entrée d'une base de donnée sans avoir besoin de tout charger ??

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2005
    Messages
    514
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 514
    Points : 631
    Points
    631
    Par défaut
    Bonsoir,
    votre code n'est pas assez "parlant".

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
      $con = @mysql_connect($ip, $user, $pass);
     
      if (!$con || !mysql_select_db($db)) exit('Erreur : '.mysql_error());
     
      if (!mysql_query("INSERT INTO `utilisateur` VALUES ('', 'eeeee', 'aaer', 22, 33)"))
       exit('Erreur : '.mysql_error());
    Je pense qu'avec un code comme celui-ci, vous auriez su que votre requête contenait une ou plusieurs erreurs. Par exemple, il vous manque un simple guillemet devant aaer' et tout plein d'autre chose, comme des caractères d'échappements, Etc.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "INSERT INTO `utilisateur` VALUES ('', 'eeeee', 'aaer', 22, 33)"
    Cordialement,
    DaRiaN.

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 9
    Points : 7
    Points
    7
    Par défaut
    AAAAAARRRRRRGGGGGGG

    2heures sur une conn... de ce genre ^^

    En tout cas, merci beaucoup pour ton aide, ça m'a été précieux !!
    Je penserai à l'avenir à la méthode que tu m'as conseillé.

    Merci, et très bonne soirée !!!

    (sinon t'as pas une idée pour charger une seule entrée sans tout avoir besoin de charger ??)

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2005
    Messages
    514
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 514
    Points : 631
    Points
    631
    Par défaut
    J'ai éludé cette question, car je ne l'ai pas comprise. Si vous m'en disiez plus, je pourrais peut-être vous être utile.

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 9
    Points : 7
    Points
    7
    Par défaut
    ah désolé...
    j'ai une table qui regroupe tous les utilisateurs avec des infos sous forme de login, mot de passe, points ect...
    je voudrais, qu'à partir d'un login et d'un mot de passe de charger QUE le profil correspondant et non toute la table d'utilisateurs.

    En fait, ce serait pour la connection: j'ai pensé à charger toute la table, puis a tester chaque utilisateur un par un pour voir si c'est le bon puis, ne garder que les données de cet utilisateur et ne pas s'occuper du reste...
    Mais ce n'est pas, je pense la méthode la plus intélligente...

    il me faudrait une requète qui me permette de charger seulement une entrée: genre, le login entré est David, ça charge l'entrée David et pas toute la table.

    Merci d'avance !!

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2005
    Messages
    514
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 514
    Points : 631
    Points
    631
    Par défaut
    Plusieurs possibilités :

    Code avec une vérification du pseudo : Sélectionner tout - Visualiser dans une fenêtre à part
    $req = "SELECT * FROM `membres` WHERE `pseudo` = '$pseudo'";

    Code avec une vérification de l'e-mail : Sélectionner tout - Visualiser dans une fenêtre à part
    $req = "SELECT * FROM `membres` WHERE `email` = '$email'";

    Après, vous vérifiez combien de lignes sont renvoyées, en théorie et si vous n'avez pas de doublon de pseudo ou d'email (c'est pour ça que l'e-mail est un mauvais choix), mysql_num_rows() retourne 0 ou 1. Donc si c'est 1, le membre existe et si c'est 0, le membre n'existe pas.

    Au final, un duo list() et mysql_fetch_row() et vous récupérez la totalité des informations.

  7. #7
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 9
    Points : 7
    Points
    7
    Par défaut
    c'est bon !!!
    Merci bien !!!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    <?PHP 
     
    mysql_connect("localhost", "root", "");
    mysql_select_db("site");
     
    $login=$_POST['login'];
     
    $reponse = mysql_query("SELECT Login, MDP, Validation, PO FROM utilisateur WHERE Login = $login");
    $donnees = mysql_fetch_array($reponse);
     
    $mdp_base=$donnees['MDP'];
    $validation=$donnees['Validation'];
     
    ?>
    ce code m'affiche cependant un warning lorsque le login entré n'existe pas dans la bdd.
    Quand mon site sera en ligne, cela l'affichera également ??
    Sinon: comment l'enlever ?

  8. #8
    Membre averti Avatar de makmaoui
    Profil pro
    Développeur Web
    Inscrit en
    Mai 2007
    Messages
    283
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2007
    Messages : 283
    Points : 368
    Points
    368
    Par défaut
    Cela dépend de ta configuration serveur si display_errors est à on il les affichera mais par défaut ton hébergeur devrait la desactiver étant donné que sur le serveur l'application est destinée à être en production. Néanmoins si tu ne veux plus voir ce message tu dois tester si ta requête a bien été executée et si elle renvoie un résultat avant d'utiliser les données :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    <?PHP 
     
    mysql_connect("localhost", "root", "");
    mysql_select_db("site");
     
    $login=$_POST['login'];
     
    $reponse = mysql_query("SELECT Login, MDP, Validation, PO FROM utilisateur WHERE Login = $login");
     
    if($reponse && mysql_num_rows($reponse) > 0) {
     
     $donnees = mysql_fetch_array($reponse);
     
     $mdp_base=$donnees['MDP'];
     $validation=$donnees['Validation'];
    }
    ?>

  9. #9
    Membre expert
    Avatar de s.n.a.f.u
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2006
    Messages
    2 760
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Août 2006
    Messages : 2 760
    Points : 3 545
    Points
    3 545
    Par défaut
    Citation Envoyé par Prince Mch Voir le message
    c'est bon !!!
    Merci bien !!!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    <?PHP 
     
    mysql_connect("localhost", "root", "");
    mysql_select_db("site");
     
    $login=$_POST['login'];
     
    $reponse = mysql_query("SELECT Login, MDP, Validation, PO FROM utilisateur WHERE Login = $login");
    $donnees = mysql_fetch_array($reponse);
     
    $mdp_base=$donnees['MDP'];
    $validation=$donnees['Validation'];
     
    ?>
    ce code m'affiche cependant un warning lorsque le login entré n'existe pas dans la bdd.
    Quand mon site sera en ligne, cela l'affichera également ??
    Sinon: comment l'enlever ?
    Alerte, injection SQL en vue !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $login=$_POST['login'];
     
    $reponse = mysql_query("SELECT Login, MDP, Validation, PO FROM utilisateur WHERE Login = $login");
    Que se passe-t-il si dans le formulaire source j'entre un truc du genre :
    Réponse : la requête devient
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT Login, MDP, Validation, PO FROM utilisateur WHERE Login = 2 AND TRUE
    C'est pas un peu dangeureux ça ?

    Cette pratique n'a lieu d'être que dans le cas où tu récupères le login d'une zone select en lecture seule. Et encore, c'est pas plus mal de mettre quand même des sécurités...
    • Avant de poser une question, n'hésitez pas à chercher dans la FAQ et les forums
    • Merci d'utiliser les balises de code (# dans l'éditeur)
    • N'oubliez pas de vous servir des boutons , et

    S.N.A.F.U

Discussions similaires

  1. Réponses: 8
    Dernier message: 23/07/2015, 10h39
  2. Base de données qui ne sauvegarde rien
    Par Telemak dans le forum JDBC
    Réponses: 3
    Dernier message: 19/12/2011, 19h22
  3. Programme qui n'affiche rien
    Par Premium dans le forum OpenGL
    Réponses: 2
    Dernier message: 03/12/2006, 21h43
  4. SplashScreen qui n'affiche rien ?
    Par Baptiste Wicht dans le forum Interfaces Graphiques en Java
    Réponses: 14
    Dernier message: 26/06/2006, 14h15
  5. [LG]Programme qui n'affiche rien
    Par ousunas dans le forum Langage
    Réponses: 4
    Dernier message: 17/02/2004, 19h38

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo