MySQL + PHP problème d'insertion, renvoi page [Résolu/Fermé]

Signaler
-
 Hip -
Bonjour,

Je suis en train de faire une validation de formulaire, cependant, je ne comprends pas les erreurs que j'ai put faire...

 
if($pseudoc=='ok' && $mailc=='ok' && $mailvc=='ok' && $mdpvc=='ok' && $date_naissance=='ok'){
  $insertion = "INSERT INTO membres VALUES(NULL,  '".$pseudo."',
             '".$prenom."',
             '".$nom."',
             '".$mail."',
             '".md5($mdp)."',
             '".$date_naissance."',
             ".time().",". 0 .")";
             
             
  mysqli_query ($base,$insertion) or die ('Erreur SQL !'.$insertion.'<br />'.mysql_error());          
  mysql_close();           
  header('Location: ../index.php');
  exit();
 }
 
 else{
  if($pseudoc=='exists'){
   $message = "Ce pseudo est déjà utilisé, merci d'en choisir un autre <a href=\"./inscription.php\">Retour</a>";
   echo "<script type='text/javascript'>alert('$message');</script>";
  }
 }



Donc la, si les termes du formulaire sont vérifiés, ont devrait les ajouter à la BD, puis renvoyer sur la page index.php.
Et si ce n'est pas le cas, (j'ai fais que pour le pseudo pour le moment), on affiche une alert avec un lien pour retourner sur la page d'inscription.

Cependant, quand je rentre des informations VALIDE sur le formulaire, rien ne se passe...
Et quand j'entre un pseudo déjà dans la base de données, rien ne se passe non plus...

Avant, j'avais tourné mon code d'une autre façon, et l'ajout dans la BDD fonctionnait. Désormais plus rien ne marche alors que ça devrait!

Je commence à désespéré, merci de votre future aide précieuse !

Cordialement

Greg

EDIT : Ajout du langage dans les balises de code.
Explications disponibles ici :
https://codes-sources.commentcamarche.net/faq/10686-le-nouveau-codes-sources-comment-ca-marche#balises-code

3 réponses

Messages postés
352
Date d'inscription
mercredi 4 août 2010
Statut
Membre
Dernière intervention
5 juin 2019
65
Hello,

As tu regardé les logs de ton serveur ?

As tu fait un
var_dump('QQ chose');
dans chacune des étapes ? (débuggage rapide et sale mais pour ton cas je ne vais pas te faire installer xdebug..)

As tu regardé la console et les erreurs qu'elle retourne ? (FireBug pour Firefox)
var_dump va me retourner les types et contenu des variables.. Comment puis-je l'utiliser pour résoudre mon problème?

Pareil, les logs serveur, je peux les trouver où (j'utilise WampServer sour Windows)

Merci
Merci d'avoir répondu,

Et bien je n'ai pas fait de logs non ni de var_dump (je ne sais pas ce que c'est). La console du navigateur ne retourne rien, d'où mon interrogation..

Peux tu m'aider pour la procédure pour les logs serveur et/ou var_dump?

Merci
Je suis parti la dessus du coup:

function checkpseudo($pseudo)
{
$res = 'ok';
$result = "SELECT count(*) FROM membres WHERE membre_pseudo LIKE .$pseudo.;"
if($result>0) $res='exists';
return $res;
}


Pense tu que ca peux fonctionner?
Ca me parait un peu simple...
Messages postés
352
Date d'inscription
mercredi 4 août 2010
Statut
Membre
Dernière intervention
5 juin 2019
65 > Hip
Je pense que ça ne marchera pas, tu n'exécutes pas la requête ;p

Reprends mon code juste au dessus, teste le au moins car je n'ai pas d'environnement pour le faire moi-même.

ps : tu devrais plutôt renvoyer un booléen.. true / false et non une string 'exists' 'notexist'.
function checkpseudo($pseudo)
{
$base = mysqli_connect ('localhost', 'root', '');
$res = 'ok';
if ($result = mysqli_query($base, "SELECT membre_pseudo FROM membres WHERE membre_pseudo LIKE '".$pseudo."'")) {
mysqli_free_result($result);
$res='exists';
return $res;
}
else{
return $res;
}
}


Voila ce que j'obtient... cela ne fonctionne pas, j'obtient une erreur sql du au fait que le pseudo existe deja -__-

Erreur SQL !INSERT INTO membres VALUES(NULL, 'pseu', 'jean', 'tete', '***@***', 'dbc4d84bfcfe2284ba11beffb853a8c4', '14/05/1990', 1429610378,0)

(Ici c'est "pseu" qui est déja dans ma base de données)
Messages postés
352
Date d'inscription
mercredi 4 août 2010
Statut
Membre
Dernière intervention
5 juin 2019
65
Ah ! Je crois que je vois.

je devine disons..

Ton premier champ c'est l'ID, tu l'as bien mis en auto increment ?

Fais plutôt ceci :

INSERT INTO membres (pseudo, prenom, nom, email, motdepasse, datenaissance, champinconnu)
 VALUES('pseu', 'jean', 'tete', '***@***', 'dbc4d84bfcfe2284ba11beffb853a8c4', '14/05/1990', 1429610378,0) 


Cependant, jordane45 a raison, ouvre un autre sujet si mon explication ne corrige pas ton souci.

PS : pense à mettre BD/code en anglais, c'est standard.
PS1 : pense à retourner des booléens et non des string, comme je t'ai dit !
je comprends pas trop ce que tu entend plus haut..
J'ouvre un nouveau sujet.
//EDIT :
Mon ID est bien en auto-incrément, l'ajout dans la BD est fonctionnel si le formulaire est correct, mais c'est quand le pseudo est deja dans la BDD que ca coince...

PS:BD/code en anglais?
PS1: c'est prévu ;)
Messages postés
32369
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
9 mai 2021
3 468
Bonjour,

Premier PB ... tu utilises mysql_close(); .... alors que tu sembles utiliser l'extension mysqli_*

Ensuite... Fais donc un ECHO de ta requête d'insertion et testes la directement dans la BDD pour voir si elle fonctionne.

NB : Il est conseillé de nommer les champs qu'on insert ...
INSERT INTO table ( champ1,champ2,...) VALUES ('valeur1','valeur2')


Par contre tu nous dis : Rien ne se passe... j'en déduis donc qu'aucun message n'apparait .... Le souci se trouve donc peut être ailleurs que dans le code montré....
Dans le formulaire peut être ... ou dans tes codes de vérification...
L'idéal serait de nous montrer l'ensemble de ton code !


PS: Penses à mettre le langage dans les balises de code. ça rend sa lecture plus facile.
Explications disponibles ici :
https://codes-sources.commentcamarche.net/faq/10686-le-nouveau-codes-sources-comment-ca-marche#balises-code
Merci d('avoir répondu, le problème 'insertion est resolu, il etait du a une erreur de frappe dans une variable -__-.

J'aurais une autre question.

J'ai une fonction checkpseudo($pseudo) et checkmail($mail)
et je voudrais qu'elle verifie que le mail ou le pseudo n'existe pas deja dans la BDD.

Comment vais-je passer une requete SQL dans la fonction?
Messages postés
32369
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
9 mai 2021
3 468 > Hip
Même remarque que précédemment... sans voir le code... impossible de t'aider

Par contre.... nouvelle question = NOUVELLE DISCUSSION !
Cela permet à d'autres de trouver leur réponses dans le cas où ils auraient le même souci.
Donc .. mets cette question en résolu .. et ouvre en une autre.