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 :

probleme sur un formulaire d'inscription


Sujet :

PHP & Base de données

  1. #1
    Membre régulier
    Profil pro
    Étudiant
    Inscrit en
    Juillet 2006
    Messages
    147
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2006
    Messages : 147
    Points : 109
    Points
    109
    Par défaut probleme sur un formulaire d'inscription
    Bonjour,
    Je souhaiterai créer une zone membre pour mon site, et donc j'ai créer un formulaire d'inscription form_inscription.htm que voici:


    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
    18
    19
    20
    21
    22
    23
    24
    <form method="post" action="inscription.php">
    <table width="300" border="1" bordercolor="#000000">
    <tr>
            <td colspan="2"><div align="center">Inscription</div></td>
     
    </tr>
    <tr>
            <td>Pseudo</td>
            <td><input type="text" name="login" /></td>
    </tr>
    <tr>
            <td>Mot de passe</td>
            <td><input type="password" name="pass" /> </td>
    </tr>
    <tr>
            <td colspan="2">
            <div align="right">
            <input type="reset" value ="effacer" />
            <input type="submit" value ="envoyer" />
            </div>
            </td>
    </tr>
    </table>
    </form>

    La page de traitement est inscription.php


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <?php
    if ((trim($login="")) && (trim($pass="")))
    {
    $db = mysql_connect('localhost', 'root', 'popopo');
    mysql_select_db('tony', $db);
    $sql = "INSERT INTO membres_tbl(id, login, pass) VALUES ('', '$login', '$pass')";
     
    mysql_query($sql);
    mysql_close();
    }
     
    ?>

    et la base de donnée tony


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    CREATE TABLE `membres_tbl` (
      `id` int(3) NOT NULL AUTO_INCREMENT,
      `Login` varchar(30) collate latin1_general_ci NOT NULL DEFAULT '',
      `Pass` varchar(30) collate latin1_general_ci NOT NULL DEFAULT '',
      PRIMARY KEY  (`id`)
    ) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci AUTO_INCREMENT=1 ;


    Donc en faite, lorsque je lance mon formulaire, j'entre un pseudo au hazard et un mot de passe et lorsque je fait submit, il apparait la page inscription.php tout blanche. Bon je me dis c'est pas trop grave, et je vais vérifié dans phpmyadmin et je vois que les informations n'ont pas été envoyé.

    Pourriez-vous me dire ou est mon erreur, merci beaucoup

  2. #2
    Membre expérimenté
    Avatar de guitou12
    Homme Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 077
    Points : 1 561
    Points
    1 561
    Par défaut
    En Php5 on n'accède plus aux variables de formulaire (post) ni aux variables d'url (get) directement depuis leurs noms (à moins d'avoir activé l'option dans php.ini mais c'est déconseillé)

    Donc pour récupérer ton login et pass tu devrais plutot faire comme ça

    Ex développeur Php / J2EE.
    Actuellement reconverti à SharePoint 2013

    Mon blog SP 2013

  3. #3
    Membre éclairé Avatar de fallais
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Juillet 2006
    Messages
    858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Juillet 2006
    Messages : 858
    Points : 783
    Points
    783
    Par défaut
    Traduction :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <?php
    if ((trim($login="")) && (trim($pass="")))
    {
    $db = mysql_connect('localhost', 'root', 'popopo');
    mysql_select_db('tony', $db);
    $sql = "INSERT INTO membres_tbl(id, login, pass) VALUES ('', '$login', '$pass')";
     
    mysql_query($sql);
    mysql_close();
    }
     
    ?>
    SI $login est egal a rien ET $pass egal a rien ALORS j'insert $login et $pass ... Il n'y aurait pas un probleme ?
    Dire Straits, Bob Dylan, Led Zeppelin, the Who, Pink Floyd, AC/DC, Guns & Roses, the Doors, ...
    Nicolas Jaar, Paul Kalkbrenner, Marek Hermann

  4. #4
    Membre régulier
    Profil pro
    Étudiant
    Inscrit en
    Juillet 2006
    Messages
    147
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2006
    Messages : 147
    Points : 109
    Points
    109
    Par défaut
    Ok, tout d'abord merci à guitou12. J'ai mis $_POST['login'] à la place des $login

    Elwyn, tu as raison c'est pas logique mon code. Donc j'ai utilisé isset pour vérifier

    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
    <?php
    if ((isset($_POST['login'])) && (isset($_POST['pass'])))
    {
    $db = mysql_connect('localhost', 'root', 'popopo');
    mysql_select_db('tony', $db);
     
    $sql = "INSERT INTO membres_tbl(id, login, pass) VALUES ('', '$login', '$pass' )";
    // est-ce que dans la ligne précédente, on est aussi obligé de mettre un $_POST['login'] sachant que le code marche comme ca sans avoir rien modifié dans php.ini ?
     
     
    echo"Enregistrement effectué";
    mysql_query($sql);
    mysql_close();
    }
     
    ?>
    Si j'ai bien compris sur l'utilisation de isset c'est que isset vérifie si la variable login contient au moins un caractère, de même pour $pass, c'est ca ?

    Dans ce cas, de quel manière dois-je appeller la fonction trim et surtout à quel moment de mon code ?







    Sinon question à part, auriez vous un site qui me dit quand est-ce qu'on utilise des apostrophes et quand est-ce qu'on utilise des guillemet, je n'ai toujours pas compris.
    Merci

  5. #5
    Membre éprouvé
    Avatar de ozzmax
    Inscrit en
    Novembre 2005
    Messages
    977
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Novembre 2005
    Messages : 977
    Points : 959
    Points
    959
    Par défaut
    Citation Envoyé par Henry9
    Sinon question à part, auriez vous un site qui me dit quand est-ce qu'on utilise des apostrophes et quand est-ce qu'on utilise des guillemet, je n'ai toujours pas compris.
    Merci
    Oui m'sieur
    va voir ca
    La perfection n'est pas un but, l'amélioration constante devrait l'être!
    La position des Développeurs de developpez avec les explications

  6. #6
    Membre expérimenté

    Homme Profil pro
    Inscrit en
    Janvier 2004
    Messages
    1 249
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2004
    Messages : 1 249
    Points : 1 565
    Points
    1 565
    Par défaut
    Citation Envoyé par Elwyn
    Traduction :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <?php
    if ((trim($login="")) && (trim($pass="")))
    {
    $db = mysql_connect('localhost', 'root', 'popopo');
    mysql_select_db('tony', $db);
    $sql = "INSERT INTO membres_tbl(id, login, pass) VALUES ('', '$login', '$pass')";
     
    mysql_query($sql);
    mysql_close();
    }
     
    ?>
    SI $login est egal a rien ET $pass egal a rien ALORS j'insert $login et $pass ... Il n'y aurait pas un probleme ?
    Je dirais meme mieux :
    attention a =, == et === !

  7. #7
    Membre régulier
    Profil pro
    Étudiant
    Inscrit en
    Juillet 2006
    Messages
    147
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2006
    Messages : 147
    Points : 109
    Points
    109
    Par défaut
    ok merci pour le lien sur les apostrophe et aussi merci pour le = == ==!

    Je continue la développement de mon code. donc voilà:

    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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    <?php
    // ON VERIFIE QUE LE MEC A ENTRER UN PSEUDO
    if ($_POST['login']=="")
    {
    	echo "vous devez entrer un login";
    }
     
    // ON VERIFIE QUE LE MEC A ENTRER UN PASS
    if ($_POST['login']=="")
    {
    	echo "vous devez entrer un mot de passe";
    }
     
    // ON VERIFIE QUE LE PSEUDO NEXISTE PAS ENCORE
    $db = mysql_connect('localhost', 'root', 'popopo') or die(mysql_error());;
    mysql_select_db('tony', $db) or die(mysql_error());;
    $requete = mysql_query("SELECT * FROM tony where $_POST['newlogin'] =  $login, $db");
    $num= mysql_num_rows($requete);
    if ($num != 0)
    {
    echo "Ce pseudo existe déjà, veuillez entrer un autre !";
    }
    else // SINON ON INSERT LE PSEUDO ET LE PASS DANS LA BDD
    {
    $var = trim($login); //J'ENLEVE LES ESPACE DEVANT ET A LA FIN DU PSEUDO
    $sql = "INSERT INTO membres_tbl(id, login, pass) VALUES ('', '$var', '$pass' )";
    echo"Enregistrement effectué";
    mysql_query($sql) or die(mysql_error());;
    mysql_close();
    }
    ?>
    j'ai enlevé la fonction isset parce que j'en vois pas trop l'utilité si ma définition du isset proposé en haut est bonne, à savoir que isset vérifie si une variable contient des données, c'est à dire si l'utilisateur a entré des données dans le formulaire et donc ici à la place j'ai utilisé une condition pour voir si le champ de text vaut =="" //rien

    Donc ici le problème c'est que j'obtiens l'erreur

    Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in C:\apachefriends\xampp\htdocs\www\inscription.php on line 25


    la ligne 25 correspond au moment où je fais la requete:
    $requete = mysql_query("SELECT * FROM membres_tbl where $_POST['newlogin'] = $login, $db");





    Pour info, j'ai changé le nom de mes input text LOGIN par NEWLOGIN
    <input type="text" name="newlogin" />
    <input type="password" name="newpass" />

    La base de donnée n'a pas changé (voir tout en haut).

  8. #8
    Membre expérimenté

    Homme Profil pro
    Inscrit en
    Janvier 2004
    Messages
    1 249
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2004
    Messages : 1 249
    Points : 1 565
    Points
    1 565
    Par défaut
    lis la signature de guitou12 un peu au dessus... elle contient la solution a ton probleme.

    et quand tu obtiendra d'autre parse error par la suite... genre, au hasard, UNDEFINED INDEX, tu changera d'avis sur l'utilité du isset... si on l'utilise c'est pas pour rien... mais bon, s'il te faut voir pour croire, experimente ;o)

  9. #9
    Membre expérimenté
    Avatar de guitou12
    Homme Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 077
    Points : 1 561
    Points
    1 561
    Par défaut
    Je rajouterai même que tu peux employer

    au lieu de
    Ex développeur Php / J2EE.
    Actuellement reconverti à SharePoint 2013

    Mon blog SP 2013

  10. #10
    Membre régulier
    Profil pro
    Étudiant
    Inscrit en
    Juillet 2006
    Messages
    147
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2006
    Messages : 147
    Points : 109
    Points
    109
    Par défaut
    oui effectivement la signature a résolu les erreurs que j'ai rencontré.

    Bon en faite j'ai mis des '. devant des variablesans trop comprendre. En faite, c'est quoi la règle ? Faut t-il mettre des '. à chaque fois que je fais appel à une variable ? même lorsque la variable se touve à l'intérieur d'une fonction ?

    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
    18
    19
    20
    21
    22
    23
     
    // ON VERIFIE QUE LE MEC A ENTRER UN PSEUDO
    if ($_POST['login']=="")
    {
    	echo "vous devez entrer un login";exit;
    }
     
    // ON VERIFIE QUE LE MEC A ENTRER UN PASS
    if ($_POST['pass']=="")
    {
    	echo "vous devez entrer un mot de passe";exit;
    }
     
    // ON VERIFIE QUE LE PSEUDO NEXISTE PAS ENCORE
    $db = mysql_connect('localhost', 'root', 'popopo') or die(mysql_error());;
    mysql_select_db('tony', $db) or die(mysql_error());;
     
    $newlogin = $_POST['newlogin'];
    $requete = mysql_query("SELECT * FROM membres_tbl where '.$newlogin =  '.$login, '.$db");
    // en faite ici je suis pas sure que ca soit correct l'écriture, en faite il faut que comprenne que $newlogin correspond au input du formulaire et $login correspond au champ de ma table dans lequel doit être stocker $newlogin
     
    $num= mysql_num_rows($requete);
    ...

    Et donc j'obtiens cette erreur:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in

  11. #11
    Membre expérimenté
    Avatar de guitou12
    Homme Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 077
    Points : 1 561
    Points
    1 561
    Par défaut
    Le point en php sert à concaténer

    Pour ton erreur elle signifie que ce qui est renvoyé par la requête n'est pas correct, il y a donc de fortes chances que ta requête soit fausse.

    Regarde ici pour t'aider
    Ex développeur Php / J2EE.
    Actuellement reconverti à SharePoint 2013

    Mon blog SP 2013

  12. #12
    Membre expérimenté

    Homme Profil pro
    Inscrit en
    Janvier 2004
    Messages
    1 249
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2004
    Messages : 1 249
    Points : 1 565
    Points
    1 565
    Par défaut
    Citation Envoyé par Henry9
    Bon en faite j'ai mis des '. devant des variablesans trop comprendre. En faite, c'est quoi la règle ? Faut t-il mettre des '. à chaque fois que je fais appel à une variable ? même lorsque la variable se touve à l'intérieur d'une fonction ?
    .................... (silence consterné)

    que dirais tu d'aller faire un tour ici : http://fr2.php.net/manual/fr/langref.php
    histoire de *comprendre* un minimum ce que tu fait ???

    Je te conseille chaudement la lecture des 7 premiers chapitres (10 a 17)

    Ou pour le dire autrement : Regle n°4 de ma signature

  13. #13
    Membre éclairé Avatar de fallais
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Juillet 2006
    Messages
    858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Juillet 2006
    Messages : 858
    Points : 783
    Points
    783
    Par défaut
    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
     
    if ($_POST['login']==""){
    echo "vous devez entrer un login";
    }
    if ($_POST['pass']==""){
    echo "vous devez entrer un mot de passe";
    }
     
    mysql_connect('localhost', 'root', 'popopo');
    mysql_select_db('tony');
     
    $login = $_POST['login'];
     
    $requete = mysql_query("SELECT * FROM membres_tbl where login =  '$login' ");
     
    $num= mysql_num_rows($requete);
    Dire Straits, Bob Dylan, Led Zeppelin, the Who, Pink Floyd, AC/DC, Guns & Roses, the Doors, ...
    Nicolas Jaar, Paul Kalkbrenner, Marek Hermann

Discussions similaires

  1. [MySQL] problem sur les formulaires et mysql
    Par ak4774 dans le forum PHP & Base de données
    Réponses: 15
    Dernier message: 30/09/2009, 13h38
  2. Probleme sur un formulaire de recherche
    Par Flash_Over dans le forum IHM
    Réponses: 7
    Dernier message: 11/07/2008, 18h10
  3. [Conception] un peu d aide suite un probleme sur un formulaire
    Par jojojojo57 dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 29/05/2007, 18h48
  4. probleme sur un formulaire html
    Par hahlex dans le forum Balisage (X)HTML et validation W3C
    Réponses: 8
    Dernier message: 12/04/2007, 15h24
  5. Probleme sur ouverture formulaire
    Par Bass_Room dans le forum Access
    Réponses: 8
    Dernier message: 27/06/2006, 15h21

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