Re-Bonjour à toutes les personnes qui verrons mon message , j'ai un autre problème , dont je n'arrive pas a comprendre l'erreur ou plutot l'inaction de ma requete UPDATE , qui ne modifie pas les informations depuis mon formulaire, je previens le probleme ne viens pas du fait que je ne suis pas relié et connecté a ma BD parce que je suis connecté, j'ai utiliser la methode "POST" car mes infos proviennent d'un formulaire
PS : le "update" correspond au "name" de mon bouton .

<?php require_once "link-BD.php";?>
<?php
        if (isset($_POST['update'])) {
            $id = $_POST['id'];
            $nom =  $_POST['Nom'];
            $prenom = $_POST['Prenom'];
            $email = $_POST['Email'];
            $Ville = $_POST['Ville'];
            $phone = $_POST['Telephone'];
            $Date =  $_POST['Date_de_Naissance'];
            $query= mysqli_query($link, "UPDATE `clients` SET `Nom`='$nom',`Prenom`='$prenom',`Email`='$email]',`Ville`='$Ville',`Telephone`='$phone',`Date_de_Naissance`='$Date' WHERE id=$id");
            header('location: liste2.php');
        }
?>

Ce que je veux
Modifier les infos de ma table depuis un formulaire avec "UPDATE"

Ce que j'obtiens

aucun changement

13 réponses


Kevin9
Auteur
Réponse acceptée

Merci d'avance de prendre mon message en considération :)

Carouge10
Réponse acceptée

Bonjour,

  • Ta requête est ouverte aux injections sql car elle n'est pas préparer
  • Je pense que si tu mets ta redirection en commentaire, tu devrais voir un message d'erreur (a condition qu'elles soient activés)
  • $email] .....
  • je suis curieux de voir le plantage de la requête si tu as une ' ou une " dans une de tes variables
Kevin9
Auteur
Réponse acceptée

Bonjour ,
Tout dabord merci de ton aide, alors "Ta requête est ouverte aux injections sql car elle n'est pas préparer" c'est à dire ?
et oui effectivement voici les erreurs affichées: ```Warning: Undefined array key "Nom" in /Applications/MAMP/Répertoire www/Le Carnet de l'Apothicaire/save.php on line 5

Warning: Undefined array key "Prenom" in /Applications/MAMP/Répertoire www/Le Carnet de l'Apothicaire/save.php on line 6

Warning: Undefined array key "Email" in /Applications/MAMP/Répertoire www/Le Carnet de l'Apothicaire/save.php on line 7

Warning: Undefined array key "Telephone" in /Applications/MAMP/Répertoire www/Le Carnet de l'Apothicaire/save.php on line 9

Warning: Undefined array key "Date_de_Naissance" in /Applications/MAMP/Répertoire www/Le Carnet de l'Apothicaire/save.php on line 10````
Concernant le $email, petite erreur ... :)
et pour finir le fait qu'il ait des "'" ou "" est normal ce n'est pas un probleme g copier la structure directement depuis mon PhpMyAdmin. Voila voila , n'hesite pas a me dire selon toi d'ou viens le probleme s'il te plait

Carouge10
Réponse acceptée

injections sql = piratage de la BDD (fait une recherche)

Je parlais des ' et des " qu'un utilisateur pourrait rentrer dans les champs input

avant de faire des affectations, il faut vérifier que la variable existe (et mieux, qu'elle n'est pas vide)

Qu'elle est le html du formulaire ?

Kevin9
Auteur
Réponse acceptée

Ok ok merci , et oui mes variables ne sont pas vides, voici le html du formulaire : ```<form class="formulaire" action="save.php" method="post">
<h1>Modifier les informations du client</h1>
<div class="barre-form"></div>
<div class="formulaire-contents">
<!--cacher l'id -->
<input type="hidden" name="id" value="<?php echo $id; ?>">
<!-- NOM -->
<div class="nom-form">
<label for="last-name"> Nom : </label>
<input type="text" name="name" value="<?php echo $nom; ?>">
</div>
<!-- PRENOM -->
<div class="prenom-form">
<label for="first-name"> Prenom : </label>
<input type="text" name="prenom" value="<?php echo $prenom; ?>">
</div>
<!-- EMAIL -->
<div class="mail-form">
<label for="email">Adresse mail : </label>
<input type="text" name="email" value="<?php echo $email; ?>">
</div>
<!-- ADRESSE/VILLE -->
<div class="adresse-form">
<label for="adresse">Ville : </label>
<input type="text" name="Ville" value="<?php echo $Ville; ?>">
</div>
<!-- N°TEL -->
<div class="phone-form">
<label for="phone">N° de teléphone </label>
<input type="text" name="phone" value="<?php echo $phone; ?>">
</div>
<!-- DATE DE NAISSANCE -->
<div class="BirthDate-form">
<label for="Birth-date"> Date de naissance</label>
<input type="text" name="Date-de-naissance" value="<?php echo $Date; ?>">
</div>
<!-- SUBMIT -->
<div class="submit-btn">
<input type="submit" value="Enregistrer les modifications" name="update">
</div>
</div>
</form>

Kevin9
Auteur
Réponse acceptée

désolé pour la mise en page , sais-tu comment je pourrais mettre en page mon code sur le forum ?

Carouge10
Réponse acceptée

pour la mise en page, il faut utiliser les balises du markdown
3 ` ton code et 3 ` pour finir (backstick de mémoire - alt gr + 7)

que donne un var_dump($_POST); juste avant le $id =

Kevin9
Auteur
Réponse acceptée

D'accord merci , voyons voir :array(8) { ["id"]=> string(2) "44" ["name"]=> string(3) "Joe" ["prenom"]=> string(4) "John" ["email"]=> string(13) "JJ@icloud.com" ["Ville"]=> string(9) "Las Vegas" ["phone"]=> string(15) "07 33 45 67 82 " ["Date-de-naissance"]=> string(10) "1993-06-21" ["update"]=> string(29) "Enregistrer les modifications" } , voici ce que cela m'affiche

Carouge10
Réponse acceptée

relis tes index de $_POST et les name de tes input

ils sont

Kevin9
Auteur
Réponse acceptée

Bonsoir, merci encore une fois de m'aider, J'ai fait ce que tu m'a dit sauf que mes inputs ne sont pas vides , tout les champs sont bel et bien renseigner. A moins de ne pas avoir compris ce que tu voulais me dire ..? je ne sais pas

Carouge10
Réponse acceptée

relis tes index de $_POST et les name de tes input

ils sont différents,
tu n'as pas d'index "Telephone", mais "phone"

une petite relecture du cours sur la transmistion des données par la méthode POST

Kevin9
Auteur
Réponse acceptée

Bonjour merci de ton aide , j'avais effectivement mis le nom des colonnes de ma BDD au lieu de ce de mes attributs name de mes inputs , souci regler , je te remercie :)

Carouge10
Réponse acceptée

avec plaisir.
n'oublie pas de passer en résolu