Update mon profil
Résolu/Fermé
Natha-2001
Messages postés
12
Date d'inscription
jeudi 14 novembre 2019
Statut
Membre
Dernière intervention
15 septembre 2021
-
31 août 2021 à 13:10
jordane45 Messages postés 38428 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 18 février 2025 - 1 sept. 2021 à 18:46
jordane45 Messages postés 38428 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 18 février 2025 - 1 sept. 2021 à 18:46
A voir également:
- Update mon profil
- Qui regarde mon profil facebook - Guide
- Qui regarde mon profil instagram - Guide
- Windows update 0x80070643 - Accueil - Windows
- Windows update bloqué - Guide
- Photo de profil - Guide
8 réponses
jordane45
Messages postés
38428
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
18 février 2025
4 735
31 août 2021 à 14:33
31 août 2021 à 14:33
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');
Natha-2001
Messages postés
12
Date d'inscription
jeudi 14 novembre 2019
Statut
Membre
Dernière intervention
15 septembre 2021
1 sept. 2021 à 12:11
1 sept. 2021 à 12:11
bonjour,
j'ai essayer et sa ne foncyionne toujours pas.
j'ai essayer et sa ne foncyionne toujours pas.
Pitet
Messages postés
2826
Date d'inscription
lundi 11 février 2013
Statut
Membre
Dernière intervention
21 juillet 2022
525
1 sept. 2021 à 12:34
1 sept. 2021 à 12:34
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.
Natha-2001
Messages postés
12
Date d'inscription
jeudi 14 novembre 2019
Statut
Membre
Dernière intervention
15 septembre 2021
1 sept. 2021 à 12:47
1 sept. 2021 à 12:47
j'ai essayer mais rien
Pitet
Messages postés
2826
Date d'inscription
lundi 11 février 2013
Statut
Membre
Dernière intervention
21 juillet 2022
525
1 sept. 2021 à 12:54
1 sept. 2021 à 12:54
Pas très précis comme réponse.
Tu as essayés quoi ?
Qu'est-ce qui s'affiche sur la page ?
As tu modifié la requête avec des marqueurs ? Si oui, montre nous ton code modifié.
Tu as essayés quoi ?
Qu'est-ce qui s'affiche sur la page ?
As tu modifié la requête avec des marqueurs ? Si oui, montre nous ton code modifié.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Natha-2001
Messages postés
12
Date d'inscription
jeudi 14 novembre 2019
Statut
Membre
Dernière intervention
15 septembre 2021
1 sept. 2021 à 13:34
1 sept. 2021 à 13:34
ahh desolee ta repose a mit du temps a arriver chez moi
je vais donc tester ta methode merci
je vais donc tester ta methode merci
jordane45
Messages postés
38428
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
18 février 2025
4 735
Modifié le 1 sept. 2021 à 13:41
Modifié le 1 sept. 2021 à 13:41
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(); }
Natha-2001
Messages postés
12
Date d'inscription
jeudi 14 novembre 2019
Statut
Membre
Dernière intervention
15 septembre 2021
1 sept. 2021 à 14:09
1 sept. 2021 à 14:09
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
jordane45
Messages postés
38428
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
18 février 2025
4 735
1 sept. 2021 à 14:20
1 sept. 2021 à 14:20
ça ne vient pas de mon code ... mais de la configuration de ta bdd et du format des données que tu essaies d'y insérer
Natha-2001
Messages postés
12
Date d'inscription
jeudi 14 novembre 2019
Statut
Membre
Dernière intervention
15 septembre 2021
1 sept. 2021 à 14:37
1 sept. 2021 à 14:37
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(); } } ?>
jordane45
Messages postés
38428
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
18 février 2025
4 735
1 sept. 2021 à 14:49
1 sept. 2021 à 14:49
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...
Pitet
Messages postés
2826
Date d'inscription
lundi 11 février 2013
Statut
Membre
Dernière intervention
21 juillet 2022
525
>
jordane45
Messages postés
38428
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
18 février 2025
1 sept. 2021 à 15:43
1 sept. 2021 à 15:43
Attention aussi au nommage des variables (revoir l'exemple correct de jordane45) : $sql doit contenir la requête, $datas doit contenir le tableau des données, etc..
Natha-2001
Messages postés
12
Date d'inscription
jeudi 14 novembre 2019
Statut
Membre
Dernière intervention
15 septembre 2021
>
Pitet
Messages postés
2826
Date d'inscription
lundi 11 février 2013
Statut
Membre
Dernière intervention
21 juillet 2022
1 sept. 2021 à 18:17
1 sept. 2021 à 18:17
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" }
Pitet
Messages postés
2826
Date d'inscription
lundi 11 février 2013
Statut
Membre
Dernière intervention
21 juillet 2022
525
>
Natha-2001
Messages postés
12
Date d'inscription
jeudi 14 novembre 2019
Statut
Membre
Dernière intervention
15 septembre 2021
1 sept. 2021 à 18:42
1 sept. 2021 à 18:42
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).
jordane45
Messages postés
38428
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
18 février 2025
4 735
>
Natha-2001
Messages postés
12
Date d'inscription
jeudi 14 novembre 2019
Statut
Membre
Dernière intervention
15 septembre 2021
1 sept. 2021 à 18:46
1 sept. 2021 à 18:46
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...