Update mon profil
Résolu
Natha-2001
Messages postés
12
Date d'inscription
Statut
Membre
Dernière intervention
-
jordane45 Messages postés 38486 Date d'inscription Statut Modérateur Dernière intervention -
jordane45 Messages postés 38486 Date d'inscription Statut Modérateur Dernière intervention -
Bonjour,
j'ai un probleme pour modifier le profil dun utilisateur dans mon site web et je ne sais pas comment faire j'ai eesaye differentes methodes que j'ai vu sur le net ou a l;aide de d'un tutoriel mais rien ne fonctionne,pdans mon site il ya la page profil ou tous les infos de l'utilisateur son et au cas ou il voudreait modifier il ya un boutton (editer profil) et lorsque il clique dessus un formulaire modal apparait ou il remplit les element qu'ilsouhaite modifier,
voici mon code php pour modifier
et voici mon code html
j'ai un probleme pour modifier le profil dun utilisateur dans mon site web et je ne sais pas comment faire j'ai eesaye differentes methodes que j'ai vu sur le net ou a l;aide de d'un tutoriel mais rien ne fonctionne,pdans mon site il ya la page profil ou tous les infos de l'utilisateur son et au cas ou il voudreait modifier il ya un boutton (editer profil) et lorsque il clique dessus un formulaire modal apparait ou il remplit les element qu'ilsouhaite modifier,
voici mon code php pour modifier
<?php //---------------------------------// // Affichage des erreurs PHP //---------------------------------// error_reporting(E_ALL); ini_set('display_errors', TRUE); ini_set('display_startup_errors', TRUE); session_start(); if(isset($_SESSION['id_utilisateur'])) $id_utilisateur =$_SESSION['id_utilisateur']; if(!empty($id_utilisateur)) { //---------------------------------// //connexion à la base avec activation des erreurs PDO //---------------------------------// try { $bdd = new PDO('mysql:host=localhost;dbname=afrijob', 'root', 'manuella2001'); // Activation des erreurs PDO $bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); // mode de fetch par défaut : FETCH_ASSOC / FETCH_OBJ / FETCH_BOTH $bdd->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC); } catch (PDOException $e) { die('Erreur : ' . $e->getMessage()); } $a = getPost('a');//pseudo// $b = getPost('b');//domaine// $c = getPost('c');//ville// $h = getPost('h');//email// $i = getPost('i');//site internet// $j = getPost('j');//numero de telephone// $l = getPost('l');//adresse// $req="(UPDATE `utilisateurs` SET site_web_pro='$i',pseudo='$a', telephone='$j',email='$h', domaine_pro= '$b',ville='$c',adresse_pro='$l id_utilisateur = '$id_utilisateur')"; $req = $bdd->prepare($req); // $req = $bdd->execute($req); header('location:profil.php'); }else{ header('location:page de connexion/login.php'); } ?>
et voici mon code html
<form action="profil_traitement.php" method="POST" enctype="multipart/form-data"> <div class="container my-4" style=" text-align: center; "> <div class="modal fade" id="modalSubscriptionForm" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true"> <div class="modal-dialog" role="document"> <div class="modal-content" style="overflow-y:scroll;"> <div class="modal-header text-center"> <h4 class="modal-title w-100 font-weight-bold">Editer votre profil</h4> <button type="button" class="close" data-dismiss="modal" aria-label="Close"> <span aria-hidden="true">×</span> </button> </div> <div class="modal-body mx-3"> <div class="md-form mb-5"> <label for="text">pseudo</label> <input name="a" style=" border: 2px solid blue;" type="text" id="form3" class="form-control validate" placeholder="<?php echo stripslashes($row["pseudo"]) ?>"> </div> <div class="md-form mb-5"> <label for="text">domaine</label> <input style=" border: 2px solid blue;" name="b" type="text" id="form3" class="form-control validate" placeholder="<?php echo stripslashes($row["domaine_pro"]) ?>"> </div> <div class="md-form mb-5"> <label for="text">ville</label> <input name="c" style=" border: 2px solid blue;" type="text" id="form3" class="form-control validate" placeholder="<?php echo stripslashes($row["ville"]) ?>"> </div> <div class="md-form mb-5"> <label for="text">ADRESSE</label> <input name="l" style=" border: 2px solid blue;" type="text" id="form3" class="form-control validate" placeholder="<?php echo stripslashes($row["adresse_pro"]) ?>"> </div> <div class="md-form mb-5"> <label for="text">comment me contacter</label><br><br> <label for="text">email</label> <input name="h" style=" border: 2px solid blue;" type="email" id="form2" class="form-control validate" placeholder="<?php echo stripslashes($row["email"]) ?>"> <label for="text">site internet</label> <input name="i" style=" border: 2px solid blue;" type="url" id="form2" class="form-control validate" placeholder="<?php echo stripslashes($row["site_web_pro"])?>"> <label for="text">numerode telephone</label> <input name="j" style=" border: 2px solid blue;" type="tel" id="form2" class="form-control validate" placeholder="<?php echo stripslashes($row["telephone"]) ?>"> </div> </div> <div class="modal-footer d-flex justify-content-center"> <input type="submit" name="submit" value="enregistrer"style=" background-color:blue; border-radius: 10px; width: 200px; height: 50px; "> </div> </div> </div> </div> <div class="text-center"> <a href="" class="btn btn-default btn-rounded mb-4" data-toggle="modal" data-target="#modalSubscriptionForm" style=" background-color: blue; border:black; color:white; border-radius: 15px;">Editer Profil</a> </div> </div> </form>
Configuration: Linux / Chrome 94.0.4606.20
A voir également:
- Update mon profil
- Voir qui regarde mon profil facebook - Guide
- Qui regarde mon profil instagram - Guide
- Windows update bloqué - Guide
- Winget update - Guide
- Asus live update - Télécharger - Utilitaires
8 réponses
Bonjour,
Tu n'as pas mis en commentaire la bonne ligne ......
Tu as
Alors que tu devrais avoir
Tu n'as pas mis en commentaire la bonne ligne ......
Tu as
// $req = $bdd->execute($req); header('location:profil.php');
Alors que tu devrais avoir
$req = $bdd->execute($req); //header('location:profil.php');
Bonjour,
Suite aux modifications proposés par jordane45, quel est le message d'erreur qui s'affiche sur la page ?
Le problème vient surement de la requête sql utilisée dans la méthode prepare().
Il ne faut pas injecter directement les variables php $i, $a, $b, etc... dans la requête sql car celle-ci pourra planter si les variables php contiennent des caractères réservés en sql. C'est également une grosse faille de sécurité qui pourrait être exploitée pour consulter ou supprimer toutes les données de la base.
La bonne manière est d'utiliser des marqueurs dans la requête sql puis de substituer ces marqueurs par les valeurs des variables php via la méthode bindParam().
Un exemple sur la doc : https://www.php.net/manual/fr/pdo.prepared-statements.php
Tu pourras aussi trouver pleins de tuto à ce sujet sur le net en complément.
Suite aux modifications proposés par jordane45, quel est le message d'erreur qui s'affiche sur la page ?
Le problème vient surement de la requête sql utilisée dans la méthode prepare().
Il ne faut pas injecter directement les variables php $i, $a, $b, etc... dans la requête sql car celle-ci pourra planter si les variables php contiennent des caractères réservés en sql. C'est également une grosse faille de sécurité qui pourrait être exploitée pour consulter ou supprimer toutes les données de la base.
La bonne manière est d'utiliser des marqueurs dans la requête sql puis de substituer ces marqueurs par les valeurs des variables php via la méthode bindParam().
Un exemple sur la doc : https://www.php.net/manual/fr/pdo.prepared-statements.php
Tu pourras aussi trouver pleins de tuto à ce sujet sur le net en complément.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Tu devrais avoir un message d'erreur.... lié à ta requête et à son execute...
ça devrait ressembler à un truc du genre :
ça devrait ressembler à un truc du genre :
$datas = [$i,$a,$j,$h,$b,$c,$l,$id_utilisateur]; $sql =" UPDATE `utilisateurs` SET site_web_pro=? ,pseudo=? , telephone=? ,email= ? , domaine_pro= ? ,ville= ? ,adresse_pro=? WHERE id_utilisateur = ? "; //Tu avais oublié un WHERE au passage ... try{ $prep = $bdd->prepare($sql); $req = $prep->execute($datas); }catch(Exception $e){ echo " Erreur : " . $e->getMessage(); }
j'ai essaye ton code et j'ai comme erreur
Erreur : SQLSTATE[22007]: Invalid datetime format: 1366 Incorrect integer value: '' for column `afrijob`.`utilisateurs`.`telephone` at row 1
Erreur : SQLSTATE[22007]: Invalid datetime format: 1366 Incorrect integer value: '' for column `afrijob`.`utilisateurs`.`telephone` at row 1
avec ca je na'ai aucune erreur mais pas de modification dans la base de donnee
<?php //---------------------------------// // Affichage des erreurs PHP //---------------------------------// error_reporting(E_ALL); ini_set('display_errors', TRUE); ini_set('display_startup_errors', TRUE); if(isset($_POST['submit'])) { //---------------------------------// //connexion à la base avec activation des erreurs PDO //---------------------------------// try { $bdd = new PDO('mysql:host=localhost;dbname=afrijob', 'root', 'manuella2001'); // Activation des erreurs PDO $bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); // mode de fetch par défaut : FETCH_ASSOC / FETCH_OBJ / FETCH_BOTH $bdd->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC); } catch (PDOException $e) { die('Erreur : ' . $e->getMessage()); } $id_utilisateur=$_SESSION['id_utilisateur']; $a = $_POST['a'];//pseudo// $b = $_POST['b'];//domaine// $c = $_POST['c'];//ville// $h = $_POST['h'];//email// $i = $_POST['i'];//site internet// $j = $_POST['j'];//numero de telephone// $l = $_POST['l'];//adresse// $re = [$i,$a,$j,$h,$b,$c,$l,$id_utilisateur]; $datas = " UPDATE `utilisateurs` SET site_web_pro = ? ,pseudo = ? , telephone = ? ,email = ? , domaine_pro = ? ,ville = ? ,adresse_pro = ? WHERE id_utilisateur = ? "; //Tu avais oublié un WHERE au passage ... try{ $prep = $bdd->prepare($sql); $req = $prep->execute(array($datas)); }catch(Exception $e){ echo " Erreur : " . $e->getMessage(); } } ?>
Etrange que tu n'aies pas d'erreur...... tu sembles faire appel à une variable en session ... sans avoir l'instruction session_start au début de ton script...
Une fois cet oubli corrigé ... Fais donc un var_dump de $datas pour t'assurer que les variables à l'intérieur ( y compris l'id_utilisateur) sont bons...
Une fois cet oubli corrigé ... Fais donc un var_dump de $datas pour t'assurer que les variables à l'intérieur ( y compris l'id_utilisateur) sont bons...
j'ai fais et j'ai fait un echo pour voir les variables
voici le resultat
echo var_dump($datas) . "<br>";
voici le resultat
array(8) { [0]=> string(29) "https:///wwwpetersolution.com" [1]=> string(8) "daniella" [2]=> string(10) "0650214200" [3]=> string(15) "peter@gmail.com" [4]=> string(11) "agriculteur" [5]=> string(7) "foumbot" [6]=> string(7) "logpong" [7]=> string(1) "3" }
A priori la colonne `telephone` en bdd est de type integer ("Incorrect integer value for column `utilisateurs`.`telephone`).
Mais le numéro de téléphone est enregistré dans une chaine de caractères (string(10) "0612345200"), d'où le message d'erreur.
Si tu enregistres le numéro de téléphone dans une colonne integer, tu vas en plus perdre le premier 0 non significatif pour un entier (le numéro 0612345200 sera enregistré sous la forme 612345200 si c'est un entier).
Tu pourras aussi avoir besoin d'enregistrer les numéros avec un indicatif plus tard (par exemple "+33612345200").
Le mieux serait donc changer le type de la colonne telephone en bdd pour utiliser un type de chaine de caractère (VARCHAR avec mysql par exemple).
Mais le numéro de téléphone est enregistré dans une chaine de caractères (string(10) "0612345200"), d'où le message d'erreur.
Si tu enregistres le numéro de téléphone dans une colonne integer, tu vas en plus perdre le premier 0 non significatif pour un entier (le numéro 0612345200 sera enregistré sous la forme 612345200 si c'est un entier).
Tu pourras aussi avoir besoin d'enregistrer les numéros avec un indicatif plus tard (par exemple "+33612345200").
Le mieux serait donc changer le type de la colonne telephone en bdd pour utiliser un type de chaine de caractère (VARCHAR avec mysql par exemple).
Ca devrait être bon
Ajoutes ca après le execute
Et dis nous ce que ça te met.
Ps:ton id user est le 3 ... En bdd les valeurs ne changent pas ??
Au cas où, arrête et relance ton serveur php et mysql... Si tu bosses en local il y a parfois un "cache" qui fou le bordel...
Ajoutes ca après le execute
var_dump(['nbrows'=>$req->rowCount()]);
Et dis nous ce que ça te met.
Ps:ton id user est le 3 ... En bdd les valeurs ne changent pas ??
Au cas où, arrête et relance ton serveur php et mysql... Si tu bosses en local il y a parfois un "cache" qui fou le bordel...