Bonjour à tous.

Voila je rencontre un petit problème avec mon code.

Ce que je fais

<html>
<?php

if(isset($_POST['submit']))
{
$username =htmlentities(trim($_POST['username']));
$password =htmlentities(trim($_POST['password']));
$repeatpassword =htmlentities(trim($_POST['repeatpassword']));
if($username&&$password&&$repeatpassword)
{
if($password==$repeatpassword)
{
$password = md5($password);
$connect= mysql_connect('localhost', 'root',"")or die('Error');
mysql_select_db('phplogin');
$reg = mysql_query("SELECT * FROM users WHERE username='$username'");
$rows = mysql_num_rows($reg) or die (mysql_error());

    if($rows==0)
    {
    $query = mysql_query ("INSERT INTO users VALUES('.$username' '.$password')")

    or die("Inscription terminée <ahref=login.php connectez</a>vous");
    }else echo"Ce pseduo n'est pas disponible";
    }else echo "Les deux passwords doivent être identiques";

}else echo"Veuillez saisir tous les champs";

}
?>

<form method="POST" action="register.php">
<p>Votre pseudo:</p>
<input type="text" name="username"
<br>
</br>
<p>Votre password:</p>
<input type="text" name="password"
<br>
</br>
<p>Repetez votre password:</p>
<input type="text" name="repeatpassword"><br/><br/>
<input type="submit" value="S'inscrire" name="submit">
</form>
</html>

Ce que je veux

M'enegistrer et enregistrer les données sur la BDD.

Ce que j'obtiens

Warning: mysql_num_rows() expects parameter 1 to be resource, boolean given in C:\Program Files\EasyPHP-DevServer-14.1VC9\data\localweb\Johann\register.php on line 17
Unknown column 'username' in 'where clause'

17 réponses


Salut,

Juste au cas ou, les mysql_connect & cie ne sont plus valide en PHP (obsolète en 5.5 et supprimé dans la version 7) donc si tu veux pas que tout ton site ne marche plus d'ici que ton hébergeur ce mette à jour, change vite de méthode ;)

Pour ton soucis, c'est explicite est-ce que tu as un input "username" ?

lecjoh
Auteur

Salut, merci du conseil donc il faut que j'utilise le PDO ?
Je suis débutant en PHP c'est pour ça.

Et oui j'ai un input pour username : <input type="text" name="username"

Oui il faut que tu utilise soit PDO soit mysqli.

Autant pour moi j'ai lu un poil vite le message d'erreur, tu as bien un champs username dans ta table users ?

lecjoh
Auteur

Merci pour ces conseils, l'erreur était dans la base où j'avais mis usename au lieu de username. Mais maintenant qu'il n'y a plusd'erreur il enregistre rien dans la BDD. Comment ça se fait ?

Merci d'avance

Essaie ça :

$query = mysql_query("INSERT INTO `users` VALUES (NULL,'$username', '$password')");
lecjoh
Auteur

J'ai mis ton code et rien ne se passe.

est ce que tu as une erreur qui s'affiche? si non mets ceci au début de ton script php

error_reporting(E_ALL);
lecjoh
Auteur

Salut, aucune erreur s'affiche, la page passe sur une page blanche.
Merci pour la fonction. Etant aussi débutant en MySQL, on doit voir les résultat dans Afficher ou Structure ?

Merci d'avance

J'ai pas testé mon code mais logiquement il fonctionne, le resultat est visible dans "Afficher" sous PHPMyAdmin (j'en déduit que c'est là que tu parles) structure étant principalement comme son nom l'indique la structure de ta table.

Ensuite montre nous ta table en entier, mais par pitié, avant qu'on t'aide à résoudre ton soucis passe toute ta page sous PDO et redonne nous le code :P

lecjoh
Auteur

Re, voici mon code avec PDO, après je suis pas trop sûr :

<html>
<?php

error_reporting(E_ALL);

if(isset($_POST['submit']))
{
$username =htmlentities(trim($_POST['username']));  
$password =htmlentities(trim($_POST['password']));      
$repeatpassword =htmlentities(trim($_POST['repeatpassword']));      
    if($username&&$password&&$repeatpassword)
    {
        if($password==$repeatpassword)
        {
        $password = md5($password); 
        $bdd = new PDO('mysql:host=localhost;dbname=phplogin;charset=utf8', 'root', '');
        try
        {
            $bdd = new PDO('mysql:host=localhost;dbname=phplogin;charset=utf8', 'root', '');
        }
        catch (Exception $e)
        {
        die('Erreur : ' . $e->getMessage());
        }       
        mysql_select_db('phplogin');
        $reg = mysql_query("SELECT * FROM users WHERE username='$username'");
        $rows = mysql_num_rows($reg) or die (mysql_error());

        if($rows==0)
        {
        $query = mysql_query ("INSERT INTO users VALUES('".$username."', '".$password."')");

        die("Inscription terminée <ahref=login.php connectez</a>vous");
        }else echo"Ce pseudo n'est pas disponible";
        }else echo "Les deux passwords doivent être identiques";

    }else echo"Veuillez saisir tous les champs";

}
?>

<form method="POST" action="register.php">
<p>Votre pseudo:</p>
<input type="text" name="username"
<br>
</br>
<p>Votre password:</p>
<input type="text" name="password"
<br>
</br>
<p>Repetez votre password:</p>
<input type="text" name="repeatpassword"><br/><br/>
<input type="submit" value="S'inscrire" name="submit">
</form>
</html>

C'est bien ! mais tu as fais des mélanges mysql_query & cie c'est pas de la PDO :P

Exemple pour l'insert :

$req = $bdd->prepare("INSERT INTO users (username, password) VALUES (:username, :password)");
$req->execute(array(
  "username" => $username, 
  "password" => $password
));
lecjoh
Auteur

Ah okok je débute seulement mdr !
Merci du conseil

lecjoh
Auteur

Excusez encore mais la connexion fonction mais maintenant j'ai crée la table inscription avec nom, prénom etc, le formulaire fonctionne mais rien ne s'enregistre...encore le même problème pourtant j'ai mis PDO etc. Voici le code :

<html>
    <?php

    error_reporting(E_ALL);

    if(isset($_POST['submit']))
    {
    $nom =htmlentities(trim($_POST['nom']));        

    $bdd = new PDO('mysql:host=localhost;dbname=phplogin;charset=utf8', 'root', '');
        try
        {
            $bdd = new PDO('mysql:host=localhost;dbname=phplogin;charset=utf8', 'root', '');
        }
        catch (Exception $e)
        {
        die('Erreur : ' . $e->getMessage());
        }       
        mysql_select_db('phplogin');
        $reg = mysql_query("SELECT * FROM inscription WHERE nom='$nom'");

        $req = $bdd->prepare("INSERT INTO inscription (nom) VALUES (:nom)");
        $req->execute(array("nom" => $nom, "nom" => $prenom));  

        die("Inscription terminée <ahref=inscriptionlogin.php connectez</a>vous");
    };

    ?>

    <head>
        <meta charset="utf-8" />
    </head>
    <body>

    <form method="post" action="traitement.php">
    <p>
       <label for="nom">Nom :</label>
       <input type="text" name="nom" id="nom" />

       <br></br>

       <label for="pass">Prenom :</label>
       <input type="prenom" name="prenom" id="prenom" />

       <br></br>

       <label for="adresse">Adresse :</label>
       <input type="adresse" name="adresse" id="adresse" />

       <br></br>

       <label for="ville">Ville :</label>
       <input type="ville" name="ville" id="ville" />

       <br></br>

       <label for="nombredenfant">Nombre d'enfant :</label>
        <SELECT name="nom" size="1">
        <OPTION>1
        <OPTION>2
        <OPTION>3
        <OPTION>4
        <OPTION>5
        <OPTION>6
        <OPTION>7
        </SELECT>

        <br></br>

       <label for="nomdelenfant">Nom de l'enfant :</label>
       <input type="nomdelenfant" name="nomdelenfant" id="nomdelenfant" />

       <br></br>

       <label for="nomdelenfant">Nom de l'enfant :</label>
       <input type="nomdelenfant" name="nomdelenfant" id="nomdelenfant" />

       <br></br>

       <label for="nomdelenfant">Nom de l'enfant :</label>
       <input type="nomdelenfant" name="nomdelenfant" id="nomdelenfant" />

       <br></br>

       <label for="nomdelenfant">Nom de l'enfant :</label>
       <input type="nomdelenfant" name="nomdelenfant" id="nomdelenfant" />

       <br></br>

       <label for="nomdelenfant">Nom de l'enfant :</label>
       <input type="nomdelenfant" name="nomdelenfant" id="nomdelenfant" />

       <br></br>

       <label for="nomdelenfant">Nom de l'enfant :</label>
       <input type="nomdelenfant" name="nomdelenfant" id="nomdelenfant" />

       <br></br>

       <label for="nomdelenfant">Nom de l'enfant :</label>
       <input type="nomdelenfant" name="nomdelenfant" id="nomdelenfant" />

       <br></br>
       <br></br>

       <FORM>
        <INPUT TYPE="submit" NAME="nom" VALUE=" Envoyer ">
        </FORM>

    </p>
    </form>

    </body>
</html>

Merci d'avance

Salut,

Relis toi un minimum, même si tu es débutant, comme dans tout travail (et surtout en développement) il faut savoir se corriger.

Ton code :

    mysql_select_db('phplogin');
        $reg = mysql_query("SELECT * FROM inscription WHERE nom='$nom'");

        $req = $bdd->prepare("INSERT INTO inscription (nom) VALUES (:nom)");
        $req->execute(array("nom" => $nom, "nom" => $prenom));  

1- mysql_select_db c'est pas de la pdo
2- mysql_query non plus

Donc ces 2 lignes à supprimer.

3- tu fais un insert mais dans ton array tu déclares 2 fois "nom"
4- tu déclares $prenom mais il est défini nul part.

lecjoh
Auteur

J'ai supprimer ces 2 lignes mais rien n'y fait. Pourtant sur mon code de connexion j'ai laisser les 2 lignes de $req.
Je suis perdu mdr.

ça parait logique....

       <FORM>
        <INPUT TYPE="submit" NAME="nom" VALUE=" Envoyer ">
        </FORM>

    </p>
    </form>

Y'a au moins assez de balise form ?

$_POST['submit'] ah ouai et ton submit s'appel "submit" ?

lecjoh
Auteur

J'ai changer el submit, maintenant ça roule, merci pour ce conseil.