Formulaire ne fonctionne pas et rien dans database
Résolu
Marty
-
Freedomsoul Messages postés 509 Date d'inscription Statut Membre Dernière intervention -
Freedomsoul Messages postés 509 Date d'inscription Statut Membre Dernière intervention -
A voir également:
- Formulaire ne fonctionne pas et rien dans database
- Whatsapp formulaire opposition - Guide
- Formulaire de réclamation facebook - Guide
- Borland database engine - Télécharger - Édition & Programmation
- Formulaire de reclamation instagram - Guide
- Confirmer le nouvel envoi du formulaire err_cache_miss - Forum Google Chrome
6 réponses
Bonjour
Pour commencer :
$reg = mysql_query("SELECT * FROM users WHERE pseudo='$pseudo'");
Mais la variable $pseudo n'existe pas ! C'est $_POST['pseudo'].
Alors sois tu fais d'abord :
Il y a aussi header("register_ok.php");, il manque le "Location:"
Ensuite, il te manque les mysql_real_escape_string pour insérer tes variables dans tes requêtes, tu t'en rendras compte dès que tu mettras une apostrophe dans un champ de ton formulaire.
Pour commencer :
$reg = mysql_query("SELECT * FROM users WHERE pseudo='$pseudo'");
Mais la variable $pseudo n'existe pas ! C'est $_POST['pseudo'].
Alors sois tu fais d'abord :
$pseudo=$_POST['pseudo']soit tu écris ta requête :
$reg = mysql_query("SELECT * FROM users WHERE pseudo='$_POST[pseudo]'");
Il y a aussi header("register_ok.php");, il manque le "Location:"
header("Location; register_ok.php");
Ensuite, il te manque les mysql_real_escape_string pour insérer tes variables dans tes requêtes, tu t'en rendras compte dès que tu mettras une apostrophe dans un champ de ton formulaire.
Bonjour,
Pour commencer merci pour tes réponses. Mais le problème se situe de toute évidence ailleurs car ça ne fonctionne toujours pas. J'ai pourtant fait les réglages que tu m'as cité. En fait, rien ne va comme ça devrait. Si je laisse plusieurs champs vides par exemple, il va se contenter de "réactualiser" la page quand j'appuie sur submit. Pareil quand je rentre une adresse mail non valide... Mais pour chacune de ces erreurs ça devrait pourtant rediriger vers mes pages, je ne comprends pas. Et toujours pas de rentrées dans ma base de données non plus...
EDIT: J'ai bel et bien mes inscriptions qui se font dans ma db lorsque les infos sont rentrées correctement. En revanche, lorsque je rentre ces données, il est censé me rediriger après coup sur ma page register_ok.php, ce qu'il ne fait pas (Il "actualise" toujours la page). Et ce que je dis plus haut est malheureusement toujours d'actualité... :/
Pour commencer merci pour tes réponses. Mais le problème se situe de toute évidence ailleurs car ça ne fonctionne toujours pas. J'ai pourtant fait les réglages que tu m'as cité. En fait, rien ne va comme ça devrait. Si je laisse plusieurs champs vides par exemple, il va se contenter de "réactualiser" la page quand j'appuie sur submit. Pareil quand je rentre une adresse mail non valide... Mais pour chacune de ces erreurs ça devrait pourtant rediriger vers mes pages, je ne comprends pas. Et toujours pas de rentrées dans ma base de données non plus...
EDIT: J'ai bel et bien mes inscriptions qui se font dans ma db lorsque les infos sont rentrées correctement. En revanche, lorsque je rentre ces données, il est censé me rediriger après coup sur ma page register_ok.php, ce qu'il ne fait pas (Il "actualise" toujours la page). Et ce que je dis plus haut est malheureusement toujours d'actualité... :/
1 - As-tu bien corrigé header("Location; register_ok.php");comme je te l'avais indiqué ?
2 - Et ce que je dis plus haut est malheureusement toujours d'actualité.
Mais plus précisément ? Tu dis que ça enregistre bien maintenant, Y a-t-il autre chose que les redirections qui ne marche pas ?
3 - le formulaire et le traitement sont-ils tous les deux dans register.php, ou le formulaire est-il dans un autre fichier ?
4 - ajoute error_reporting(E_ALL); au début de ton PHP, histoire de voir toutes les erreurs
2 - Et ce que je dis plus haut est malheureusement toujours d'actualité.
Mais plus précisément ? Tu dis que ça enregistre bien maintenant, Y a-t-il autre chose que les redirections qui ne marche pas ?
3 - le formulaire et le traitement sont-ils tous les deux dans register.php, ou le formulaire est-il dans un autre fichier ?
4 - ajoute error_reporting(E_ALL); au début de ton PHP, histoire de voir toutes les erreurs
À Freedomsoul : à quoi bon si l'insertion des données marche maintenant ? tant qu'il ne met pas d'apostrophes dans ses données en tous cas
À Marty :
Je m'aperçois d'une faute de frappe dans la redirection : c'est Location: avec deux points et non pas point virgule. J'espère que tu avais corrigé ma correction ;)
À Marty :
Je m'aperçois d'une faute de frappe dans la redirection : c'est Location: avec deux points et non pas point virgule. J'espère que tu avais corrigé ma correction ;)
1) Oui, c'est corrigé.
2) Ca s'enregistre dans ma base de données. Les bugs persistants sont qu'on peut s'inscrire avec un pseudo déjà utilisé (Ce que je ne veux pas, bien entendu), et qu'il n'affiche pas mes redirections (Càd pas celle quand l'inscription a réussi, pas celle qui dit que les deux pass différent, et pas celle qui dit que tous les champs n'ont pas été remplis).
3) Les deux sont dans le même fichier, register.php.
4) Où dois-je exactement rajouter cette commmande ?
2) Ca s'enregistre dans ma base de données. Les bugs persistants sont qu'on peut s'inscrire avec un pseudo déjà utilisé (Ce que je ne veux pas, bien entendu), et qu'il n'affiche pas mes redirections (Càd pas celle quand l'inscription a réussi, pas celle qui dit que les deux pass différent, et pas celle qui dit que tous les champs n'ont pas été remplis).
3) Les deux sont dans le même fichier, register.php.
4) Où dois-je exactement rajouter cette commmande ?
Si on peut s'inscrire avec un pseudo déjà existant, c'est que tu n'as pas tenu compte de ma remarque sur la variable $pseudo inexistante.
Dans le doute :
Dans le doute :
$requete = "SELECT * FROM users WHERE pseudo='$_POST[pseudo]'"; echo $requete; $reg = mysql_query($requete); $num_rows = mysql_num_rows($reg); ...
En revanche, maintenant, certes il inscrit dans la base de données, mais on sait inscrire deux fois le même pseudo dans la db, mais en plus si j'inscris un pseudo qui n'est pas encore dans la db, ca l'inscrit, mais la ca ne me redirige pas vers la page register_ok.php mais ca me rajoute "SELECT * FROM users WHERE pseudo='$_POST[pseudo]'" en haut de la page...
ca me rajoute "SELECT * FROM users WHERE pseudo='$_POST[pseudo]'"
Ça, ça m'étonne beaucoup... Tu as bien copié-collé $requete = "SELECT * FROM users WHERE pseudo='$_POST[pseudo]'"; avec un double-quote avant SELECT et un après pseudo] ? Ou tu as recopié à la main, en adaptant ?
Autre détail : Ajoute un 'exit;' après chaque 'header('Location:..'); car le header n'arrête pas le script, la suite s'exécute sans le exit;
Ça, ça m'étonne beaucoup... Tu as bien copié-collé $requete = "SELECT * FROM users WHERE pseudo='$_POST[pseudo]'"; avec un double-quote avant SELECT et un après pseudo] ? Ou tu as recopié à la main, en adaptant ?
Autre détail : Ajoute un 'exit;' après chaque 'header('Location:..'); car le header n'arrête pas le script, la suite s'exécute sans le exit;
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
voir commentaires et corrections:
<?php require_once('Connections/maconnexion.php'); //on fait appel ici à un petit fichier ou on a mis les données de connexion au serveur sql //est ce que ce fichier contient mysql_connect(....) ? $error=0; if (isset($_POST['s_inscrire'])) { // si on est ici c'est qu'on vient du formulaire (bouton input submit dont le name="s_inscrire" if (($_POST['pseudo']!="") && ($_POST['password']!="") && ($_POST['passwordrepeat']!="") && ($_POST['email']!="")) { $pseudo=mysql_real_escape_string($_POST['pseudo']); mysql_select_db($database_maconnexion, $maconnexion);//on choisit la db sur laquelle on va travailler, il faut le faire AVANT la requette, a moins que ce ne soit déja fait dans le fichier maconnexion.php ? $reg = mysql_query("SELECT * FROM users WHERE pseudo='".$pseudo."'"); $num_rows = mysql_num_rows($reg); if($num_rows == 0 ){ //On verifie si le mot de passe et celui de la verification sont identiques if($_POST['password']==$_POST['passwordrepeat']){ //on fait appel ici à un petit fichier qui contient une fonction réalisée avec une expression régulière pour vérifier qu'un mail est bien un mail valide require_once('testmail.php'); if (isValidEmail($_POST['email'])) { // si on est ici c'est que le login rentré par l'utilisateur n'existait pas encore dans la base de données... on va donc pouvoir l'inscrire ! $insertSQL = sprintf("INSERT INTO users (pseudo, password, email) VALUES ('%s', '%s', '%s')", mysql_real_escape_string($_POST['pseudo']), mysql_real_escape_string$_POST['password']), mysql_real_escape_string($_POST['email'])); //echo ($insertSQL); affichage de la chaine de caractère créée en cas de besoin de débuggage if($Result1 = mysql_query($insertSQL, $maconnexion) or die(mysql_error())){ // on exécute la req d'insertion et on verifie que elle s'est bien passée header("register_ok.php");// petite redirection vers une page qui dit qu'on est bien inscrit }else{ echo "pb requette insertion"; } } else { //mail incorrect header("location: register_erreurmail.php"); } } else { //mots de passes ne sont pas identiques header("location: register_erreurpass.php"); } } else { //pseudo déjà pris header("location: register_erreurpseudo.php"); } } else { // remplir tous les champs obligatoires header("location: register_erreurchamps.php"); } } ?> Et voici mon formulaire : <form action="register.php" method="POST" class="css" name="form1" id="signup"> <h1>C'est parti pour l'inscription !</h1> <fieldset> <legend> Informations de contact </legend> <label for="pseudo"></label> <input type="text" name="pseudo" placeholder="Votre pseudo" /> <br /> <label for="password"></label> <input type="password" name="password" placeholder="Votre mot de passe" /> <br /> <label for="passwordrepeat"></label> <input type="password" name="passwordrepeat" placeholder="Répétez votre mot de passe" /> <br /> <label for="email"></label> <input type="text" name="email" placeholder="Votre e-mail"/> </fieldset> <p class="register button" align="center"> <!--- Ligne ci dessous modifiée --> <input type="submit" name="s_inscrire" value="S'inscrire" />S'inscrire</button> </p> </form>
Merci pour le temps passé pour tenter de trouver une solution à mes problèmes :-) Malheureusement, rien n'est réglé après avoir tenté tes modifications :/
Et tu semblais vouloir savoir ce que contient mon fichier maconnexion.php qui est appelé au début du code, le voici :
Et tu semblais vouloir savoir ce que contient mon fichier maconnexion.php qui est appelé au début du code, le voici :
<?php # FileName="Connection_php_mysql.htm" # Type="MYSQL" # HTTP="true" // cette petite page sera appelée par toutes les pages php de mon site qui ont besoin de se connecter au serveur sql // cette petite page contient les données et la fonction nécessaire pour se connecter au serveur sql (dans chaque page il faudra encore choisir la base de donnée avec laquelle on travaillera et bien entendu envoyer une demande d'exécution de code sql au serveur) $hostname_maconnexion = "127.0.0.1"; $database_maconnexion = "db"; $username_maconnexion = "root"; $password_maconnexion = "root"; $maconnexion = mysql_pconnect($hostname_maconnexion, $username_maconnexion, $password_maconnexion) or trigger_error(mysql_error(),E_USER_ERROR); ?>