Page 1 sur 1

comment faire marcher mon Insert Into

Posté : 04 juin 2021, 14:19
par Karl_R
Bonjour,
j'avais un formulaire d'inscription qui fonctionnais, en voulant nettoyer un peu de code et faire propre et plus compréhensible il semblerais que j'ai casser mon Insert d'une manière ou d'une autre. J'ai fait des vérifications comme le var dump pour voire si les différentes variables sont bonnes, vérif de la BDD, et j'ai aussi tester une requête Insert tout simple avec une seul variable (last_name) mais cela ne marche pas non plus. si vous avez des idées je suis preneur, même si c'est me diriger je serais content.

Code : Tout sélectionner

<?php if ($_SERVER['REQUEST_METHOD'] == 'POST') { $lastName = $_POST['lastname']; $firstName = $_POST['firstname']; $userName = $_POST['username']; $password = $_POST['password']; $secretQuestion = $_POST['secret_question']; $answer = $_POST['answer']; if (strlen($lastName) < 2 || strlen($lastName) > 10) { echo "Nom non valide"; } if (strlen($firstName) < 2 || strlen($firstName) > 10) { echo "Prénom non valide"; } if (strlen($userName) < 2 || strlen($userName) > 10) { echo "Username non valide"; } if (strlen($password) < 3 || strlen($password) > 10 ) { echo "Mot de passe non valide"; } switch($secretQuestion) { case 1: $secretQuestion = "Quelle est votre couleur préférée?"; if (!isset($answer) || strlen($answer) < 3) { echo "Réponse non valide"; } break; case 2: $secretQuestion = "Quel est le nom de votre mère?"; if (!isset($answer) || strlen($answer) < 3) { echo "Réponse non valide"; } break; case 3: $secretQuestion = "Où se trouve votre ville natale?"; if (!isset($answer) || strlen($answer) < 3) { echo "Réponse non valide"; } } $sql = $connection-> prepare("SELECT * FROM accounts WHERE username = ?"); $sql-> execute([$_POST['username']]); if ($sql->rowCount() > 0) { echo "Ce nom d'utilisateur existe."; } $insertinfo = $connection->prepare("INSERT INTO accounts (last_name, first_name, username, password, secret_question, answer) VALUES ?, ?, ?, ?, ?, ?"); $insertinfo-> execute([$lastName, $firstName, $userName, sha1($password), $secretQuestion, $answer] ); //test variables var_dump($lastName, $firstName, $userName, sha1($password), $secretQuestion, $answer); } ?>
Test Insert Simple, qui ne fonctionne pas non plus

Code : Tout sélectionner

$insertinfo = $connection->prepare("INSERT INTO accounts (last_name) VALUES ?"); $insertinfo-> execute([$lastName] );

Re: comment faire marcher mon Insert Into

Posté : 04 juin 2021, 14:29
par Shadowwera
Bonjour,

Pourrait tu être plus clair quand tu dit "ça ne marche pas" ? Tu as un message d'erreur ?

Quand tu essaye de print tes variables $lastName , $firstname etc s'affiche t'elle correctement ?

Ensuite pourquoi mettre $sql-> execute([$_POST['username']]) plutot que d'utiliser ta variable $username : $sql-> execute([$username]) ?

Puis il te manquait les parenthèse ici :
$insertinfo = $connection->prepare("INSERT INTO accounts (last_name, first_name, username, password, secret_question, answer) VALUES (?, ?, ?, ?, ?, ?)");
EDIT : vu que tes données sont stocké dans des variables, tu peux passer les paramètres de cette façon :
$password = sha1($password);
$insertinfo = $connection->prepare("INSERT INTO accounts (last_name, first_name, username, password, secret_question, answer) 
         VALUES ('$lastName', '$firstName', '$userName', '$password', '$secretQuestion', '$answer')");
$insertinfo-> execute();

Re: comment faire marcher mon Insert Into

Posté : 04 juin 2021, 14:48
par Karl_R
Bonjour,
Navree j'aurais dus etre plus precis.
Il ne marche pas dans le sens ou il y a pas d'insertion de donnees dans la BDD.
J'ais fait un Vardump(); pour afficher les variables du $_POST et oui elles sont correct

Concernant [$_POST['username'], oui totalement j'ai du survoler ce détail.

Ah je n'étais pas au courant qu'on pouvais mettre directement les variables dans la clause VALUES.
Du coup maintenant l'insert fonctionne je te remercie Shadowwera, du coup effectivement c'étais belle est biens une parenthèse oublier.
Je trouve ca dommage qu'il y est pas un surligneur plus prononcer pour marquer les paires de (),[],{} sur Sublime Text.

Re: [RESOLU] comment faire marcher mon Insert Into

Posté : 04 juin 2021, 14:51
par Shadowwera
Oublie Sublime Text, en version gratuit je te recommande Visual Studio Code, en version payante je recommande de très loin PHPStorm ( Tu peux avoir 2 ans de licence gratuite si tu est en étude )

Re: [RESOLU] comment faire marcher mon Insert Into

Posté : 04 juin 2021, 15:08
par Karl_R
Ah merci c'est gentil je vais y jeter un oeil, je t'avoue que avec la formation ils on conseiller Sublime Text du coup j'ai pas chercher plus loin en tant que novice.

Je te remerci beaucoup :D

Re: [RESOLU] comment faire marcher mon Insert Into

Posté : 04 juin 2021, 15:32
par Shadowwera
Beaucoup le conseil pour sa simplicité, mais qui dit simplicité dit moins de fonctionnalités ...

Visual Studio Code se veux très simple à la base, mais permet d'installer énormément d'addons qui vont rajouter des fonctionnalités comme par exemple Beautify qui te permet de réindenté ton code en fonction de tes préférences :)

Si tu est en formation, fait une demande pour avoir la licence gratuite de la suite JETBrains ( la société derrière le logiciel PHPStorm / WebStorm etc ) ! C'est plus qu'un éditeur de code, c'est un IDE. Ultra puissant, ultra pratique, paramétrable à l'infinie et tu peux même administrer tes bases de données directement depuis l'IDE :love1: :love1: