Problème PHP - Crée un espace membre
- Accueil
- Forum
- Programmation
- PHP
- Problème PHP - Crée un espace membre
MeDrioX Le 12 avril 2017 à 09:49 (Édité le 25 janvier 2019 à 17:53)
J'ai voulu crée un espace membre mais je tombe sur des erreurs php.
Erreur
Fatal error: Uncaught Error: Call to undefined method mysqli_stmt::rowCount() in
/inscription.php:42
Stack trace:
#0 {main}
thrown in /inscription.php on line 42
Ligne de code:
if(isset($_POST['form']))
{
if(!empty($_POST['pseudo']) AND !empty($_POST['mail']) AND !empty($_POST['mail2']) AND !empty($_POST['mdp']) AND !empty($_POST['mdp2']))
{
$pseudo = htmlspecialchars($_POST['pseudo']);
$mail = htmlspecialchars($_POST['mail']);
$mail2 = htmlspecialchars($_POST['mail2']);
$mdp = sha1($_POST['mdp']);
$mdp2 = sha1($_POST['mdp2']);
$pseudolenght = strlen($pseudo);
if($pseudolenght <= 255)
{
if($mail == $mail2)
{
if(filter_var($mail, FILTER_VALIDATE_EMAIL))
{
$reqmail = $bdd->prepare("SELECT * FROM membres WHERE mail = ?");
$reqmail->execute(array($mail));
#$mailexist = $reqmail->mysqli_num_rows();
$reqpseudo = $bdd->prepare("SELECT * FROM membres WHERE pseudo = ?");
$reqpseudo->execute($pseudo);
$pseudoexist = $reqpseudo->rowCount();
if($mailexist == 0)
{
if($pseudoexist == 0)
{
if($mdp == $mdp2)
{
$insertmbr = $bdd->prepare("INSERT INTO membres(pseudo, mail, motdepasse) VALUES(?, ?, ?");
$insertmbr->execute(array('pseudo' => $pseudo, 'mail' =>$mail, 'mdp' => $mdp));
$erreur = "Inscription terminé !";
}else{
$erreur = "Vos mot de passe correspondent pas !";
}
}else{
$erreur = "Ce pseudo est déjà utilisé !";
}
}else{
$erreur = "Cette adresse email est déjà utilisé !";
}
}else{
$erreur = "Vos adresse email ne correspondent pas !";
}
}else{
$erreur = "Votre adresse email n'est pas valide !";
}
}else{
$erreur = "Votre pseudo ne doit pas dépasser 255 caractères !";
}
}else{
$erreur = "Tous les champs doivent être complétés !";
}
}
?>
Merci à ceux qui vont m'aider 😀
TBMaster59 Le 12 avril 2017 à 10:39 (Édité le 1 janvier 1970 à 01:00)
Je crois avoir trouvé ton erreur
$insertmbr->execute(array('pseudo' => $pseudo, 'mail' =>$mail, 'mdp' => $mdp));
Je crois qu'il ne faut pas mettre 'pseudo' =>. Voici le code corigé
$insertmbr->execute(array($pseudo, $mail, $mdp));
MeDrioX Le 12 avril 2017 à 10:46 (Édité le 1 janvier 1970 à 01:00)
J'ai une nouvelle erreur :
Fatal error: Uncaught Error: Call to undefined method mysqli_stmt::rowCount() in
/inscription.php:41
Stack trace:
#0 {main}
thrown in /inscription.php on line 41
TBMaster59 Le 12 avril 2017 à 10:52 (Édité le 1 janvier 1970 à 01:00)
#$mailexist = $reqmail->mysqli_num_rows();
Voici la ligne Corrigé
$mailexist = $reqmail->rowCount();
MeDrioX Le 12 avril 2017 à 10:54 (Édité le 1 janvier 1970 à 01:00)
$pseudoexist = $reqpseudo->rowCount();
TBMaster59 Le 12 avril 2017 à 11:08 (Édité le 1 janvier 1970 à 01:00)
$reqpseudo->execute($pseudo);
C'est
$reqpseudo->execute(array($pseudo));
MeDrioX Le 12 avril 2017 à 11:14 (Édité le 1 janvier 1970 à 01:00)
Fatal error: Uncaught Error: Call to undefined method mysqli_stmt::rowCount() in
/inscription.php:37
Stack trace:
#0 {main}
thrown in /inscription.php on line 37
TBMaster59 Le 12 avril 2017 à 11:18 (Édité le 1 janvier 1970 à 01:00)
#$mailexist = $reqmail->mysqli_num_rows();
Voici la ligne Corrigé
$mailexist = $reqmail->rowCount();
MeDrioX Le 12 avril 2017 à 11:24 (Édité le 1 janvier 1970 à 01:00)
MeDrioX Le 12 avril 2017 à 12:58 (Édité le 1 janvier 1970 à 01:00)
Fatal error: Uncaught PDOException: SQLSTATE[HY000] [2002] No such file or directory in
/inscription.php:15
Stack trace: #0
/inscription.php(15):
PDO->__construct('mysql:hosts=db6...', 'BDD', 'password') #1 {main}
thrown in
/inscription.php
on line 15
arthurlautard Le 12 avril 2017 à 13:42 (Édité le 1 janvier 1970 à 01:00)
````
if(isset($_POST['form']))
{
if(!empty($_POST['pseudo']) AND !empty($_POST['mail']) AND !empty($_POST['mail2']) AND !empty($_POST['mdp']) AND !empty($_POST['mdp2']))
{
$pseudo = htmlspecialchars($_POST['pseudo']);
$mail = htmlspecialchars($_POST['mail']);
$mail2 = htmlspecialchars($_POST['mail2']);
$mdp = sha1($_POST['mdp']);
$mdp2 = sha1($_POST['mdp2']);
$pseudolenght = strlen($pseudo);
if($pseudolenght <= 255)
{
if($mail == $mail2)
{
$reqmail = $bdd->prepare("SELECT * FROM membres WHERE mail = ?");
$reqmail->execute(array($mail));
$mailexist = $reqmail->rowCount();
if($mailexist == 0)
{
if($mdp == $mdp2)
{
$insertmbr = $bdd->prepare("INSERT INTO membres(pseudo, mail, mdp) VALUES(?, ?, ?)");
$insertmbr->execute(array($pseudo, $mail, $mdp));
$erreur = "Votre compte à bienété créer!";
header('Location: connexion.php');
}else
{
$erreur = "Vos mot de passe ne corresponent pas!";
}
}else
{
$erreur = "Adresse mail déjà utilisée!";
}
}else
{
$erreur = "Vos mails ne correspondent pas!";
}
}else
{
$erreur = "Votre pseudo ne dois pas éxeder les 255 caractères!";
}
}else
{
$erreur = 'Tous les chants doivent êtres remplis!!!';
}
}
?>
```
Balatharas Le 12 avril 2017 à 14:36 (Édité le 12 avril 2017 à 21:35)
J'ai une erreur iciSelon cette erreur, tu appelles un fichier à ta ligne 15, mais le serveur n'arrive pas à le trouver: "No such file or directory"
Fatal error: Uncaught PDOException: SQLSTATE[HY000] [2002] No such file or directory in
/inscription.php:15
Stack trace: #0
/inscription.php(15):
PDO->__construct('mysql:hosts=db6...', 'BDD', 'password') #1 {main}
thrown in
/inscription.php
on line 15
Faut lire tes erreurs un peu...
Zbuu Le 12 avril 2017 à 15:24 (Édité le 1 janvier 1970 à 01:00)
'mysql:hosts=db6...', 'BDD', 'password'
C'est host sans S MeDrioX Le 12 avril 2017 à 21:18 (Édité le 1 janvier 1970 à 01:00)
MeDrioX Le 12 avril 2017 à 21:29 (Édité le 1 janvier 1970 à 01:00)
Zbuu Le 12 avril 2017 à 23:07 (Édité le 12 avril 2017 à 23:08)
Ton code est toujours le même que ton premier post ? Si c'est le cas c'est normal car tu passes des marqueurs dans ta requête mais tu l’exécute mal. (en plus il te manque une parenthèse fermante)
Avec marqueur ton code devrait être plutôt comme ça :
$insertmbr = $bdd->prepare("INSERT INTO membres(pseudo, mail, motdepasse) VALUES(?, ?, ?)");
$insertmbr->execute(array($pseudo, $mail, $mdp));
Ou alors si tu veux passer des valeurs nommés alors c'est :
$insertmbr = $bdd->prepare("INSERT INTO membres(pseudo, mail, motdepasse) VALUES(:pseudo, :mail, :motdepasse)");
$insertmbr->execute(array('pseudo' => $pseudo, 'mail' => $mail, 'motdepasse' => $mdp));