MySQL + PHP problème d'insertion, renvoi page
Résolu
Hip
-
Hip -
Hip -
Bonjour,
Je suis en train de faire une validation de formulaire, cependant, je ne comprends pas les erreurs que j'ai put faire...
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
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
A voir également:
- MySQL + PHP problème d'insertion, renvoi page
- Supprimer page word - Guide
- Insertion sommaire word - Guide
- Insertion filigrane word - Guide
- Insertion liste déroulante excel - Guide
- Imprimer tableau excel sur une page - Guide
3 réponses
Hello,
As tu regardé les logs de ton serveur ?
As tu fait un
As tu regardé la console et les erreurs qu'elle retourne ? (FireBug pour Firefox)
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)
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
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
D'accord !
Déjà tu dev sur quel environnement ? Un xamp ?
Si c'est un wamp tu auras les erreurs du serveur ici : C:\wamp\logs\apache_error.log
Pour le var_dump c'est très simple, ça affiche qq chose en brut (texte, variable, tableau, etc..). Ca te permet surtout de savoir où l'interprétation passe.
Dans ton code déjà je mettrai
Si tu n'as rien je dirais que ça passe dans ton else puis dans le 2eme else (que tu n'as pas défini).
Ca donnerait quelque chose comme ça :
Déjà tu dev sur quel environnement ? Un xamp ?
Si c'est un wamp tu auras les erreurs du serveur ici : C:\wamp\logs\apache_error.log
Pour le var_dump c'est très simple, ça affiche qq chose en brut (texte, variable, tableau, etc..). Ca te permet surtout de savoir où l'interprétation passe.
Dans ton code déjà je mettrai
un var_dump('du texte');après chaque if et else. Comme ça on saura si ça passe dans ton 1er if ou dans ton else; puis si ça passe dans le second.
Si tu n'as rien je dirais que ça passe dans ton else puis dans le 2eme else (que tu n'as pas défini).
Ca donnerait quelque chose comme ça :
if($pseudoc=='ok' && $mailc=='ok' && $mailvc=='ok' && $mdpvc=='ok' && $date_naissance=='ok'){
var_dump('Passage dans 1er if');
$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{
var_dump('Passage dans 1er else');
if($pseudoc=='exists'){
var_dump('Passage dans 2eme if');
$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>";
}
var_dump('Passage dans 2eme else');
}
Yeah! Merci j'ai trouvé mon erreur grâce à ca!, j'avais en fait une variable date_naissance et une variable date_naissancec, il fallait que j'utilise la premiere et j'utilisais la seconde.. d'où l'erreur..
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?
Merci!!
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?
Merci!!
Super.
"Passer une requête SQL dans la fonction" ? Je ne comprends pas vraiment..
Pour ta méthode checkPseudo($pseudo) tu y fais simplement une requête
Si le résultat, avec https://www.php.net/manual/fr/mysqli-result.fetch-assoc.php n'est pas un tableau vide alors il y a déjà un pseudo qui existe. Donc checkPseudo renverra false.
Un
EDIT :
Tu peux même faire plus simple un
Et pas de fetch assoc par contre
(Désolée, je suis passée au Framework et aux ORM, le PHP pur est loin)
"Passer une requête SQL dans la fonction" ? Je ne comprends pas vraiment..
Pour ta méthode checkPseudo($pseudo) tu y fais simplement une requête
SELECT pseudo FROM users WHERE pseudo LIKE '$pseudo'(à adapter correctement avec la concaténation).
Si le résultat, avec https://www.php.net/manual/fr/mysqli-result.fetch-assoc.php n'est pas un tableau vide alors il y a déjà un pseudo qui existe. Donc checkPseudo renverra false.
Un
count($result)suffira.
EDIT :
Tu peux même faire plus simple un
SELECT count(*)...!
Et pas de fetch assoc par contre
(Désolée, je suis passée au Framework et aux ORM, le PHP pur est loin)
Un petit tour sur la doc et :
/* Requête "Select" retourne un jeu de résultats */
Ici on a "s'il y a un résultat dans $result alors tu comptes les lignes" donc fais attention au if.
En gros tu aurais :
Et tu arranges pour retourner true ou false en fonction de
/* Requête "Select" retourne un jeu de résultats */
if ($result = mysqli_query($link, "SELECT Name FROM City LIMIT 10")) { printf("Select a retourné %d lignes.\n", mysqli_num_rows($result)); /* Libération du jeu de résultats */ mysqli_free_result($result); }
Ici on a "s'il y a un résultat dans $result alors tu comptes les lignes" donc fais attention au if.
En gros tu aurais :
if ($result = mysqli_query($link, "SELECT pseudo FROM Users WHERE pseudo LIKE '".$pseudo."'")) { mysqli_free_result($result); return false; else{ return true; // Pas de correspondance : verif OK }
Et tu arranges pour retourner true ou false en fonction de
mysqli_num_rows($result)
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 ...
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
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?
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?
Pareil, les logs serveur, je peux les trouver où (j'utilise WampServer sour Windows)
Merci