IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

Update : valeur de la variable perdue [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    64
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Novembre 2009
    Messages : 64
    Points : 41
    Points
    41
    Par défaut Update : valeur de la variable perdue
    Bonjour,

    Voila maintenant 2 heures que je bloque sur un problème d'update!

    Voila je recupère un champs depuis une page php:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $civilite = $_POST['civilite'];
    ensuite je l'affiche pour voir que c'est bien ce que je veux:
    (Par chance il s'affiche parfaitement!)

    Ensuite je fais mon update!
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $req="UPDATE formulaire SET civilite='$civilite' where id='$id_dev' ";
    $sql=mysql_query($req) or die ("Prout!!!!! $req");
    Voilà, donc malheureusement il fait bien l'update, sauf qu'il me supprime ma valeur pour laisser un espace vide au lieu de mettre la valeur de ma variable...

    Quand j'execute la même requete avec phpMyAdmin et bien par magie ca fonctionne... Sauf que c'est pas le but

    Ah oui aussi, quand je fais $civilite="Blabla"; et ensuite je fais mon update ben la ca marche :'(

    Je ne comprends donc pas pourquoi il ne veut pas insérer une variable recuperer par $_POST[' '] ...

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    64
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Novembre 2009
    Messages : 64
    Points : 41
    Points
    41
    Par défaut
    Pour vous donner un petit aperçu

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    $id_dev = $_GET['id'];
    $civilite = $_POST['civilite'];
    echo"$civilite";  //la ca m'affiche bien Monsieur
     
    $req= "UPDATE formulaire SET civilite='$civilite' where id_devis='$id_dev' ";
    $sql=mysql_query($req) or die ("Erreur update: $req");
     
     
    echo"Update réussie";  //la ca m'affiche bien Update réussie
    echo"$req";  //et le pire ca m'affiche bien: UPDATE formulaire SET civilite='Monsieur' where id_devis='12067'
    Voilà, sauf que dans la base de données ca me met un espace a la place de Monsieur.

    Merci de me renseigner parce que je vais m'arracher les cheveux dans pas longtemps!

  3. #3
    Membre émérite

    Profil pro
    Inscrit en
    Mai 2008
    Messages
    1 576
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 1 576
    Points : 2 440
    Points
    2 440
    Par défaut
    salut,

    essaie ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $change = "civilite = '$civilite'";
    $req= "UPDATE formulaire SET $change where id_devis='$id_dev' ";

  4. #4
    Membre régulier
    Inscrit en
    Juillet 2007
    Messages
    123
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 123
    Points : 71
    Points
    71
    Par défaut
    Salut,
    vérifie la taille du champ dans ta table au cas ou( varchar 10 ou >)
    puisque ta requête me semble parfaite.

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    64
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Novembre 2009
    Messages : 64
    Points : 41
    Points
    41
    Par défaut
    Citation Envoyé par Tsilefy Voir le message
    salut,

    essaie ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $change = "civilite = '$civilite'";
    $req= "UPDATE formulaire SET $change where id_devis='$id_dev' ";
    J'ai essayé, ca ne marche pas

    Et pas de problème d'espace dans ma base de données j'ai testé en varchar(255) et toujours pas.

  6. #6
    Membre expert
    Avatar de ThomasR
    Homme Profil pro
    Directeur technique
    Inscrit en
    Décembre 2007
    Messages
    2 230
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2007
    Messages : 2 230
    Points : 3 972
    Points
    3 972
    Par défaut
    Bonsoir,

    Normal que ca ne fonctionne toujours pas le code que l'on t'as donné fait exactement la même chose que ce que tu as fait, mais de manière triviale..

    Une possibilité est que tu n'affectes pas le changement au bon enregistrement. Vérifie donc la valeur de $id_dev. De plus, si id_devis est un entier, alors il n'est pas nécessaire de l'encapsuler dans des guillemets. Une autre est que ton identifiant n'est pas présent dans l'URL.

    Aussi, tu as la possibilité de voir si ton update a affecté des enregistrements, tu peux essayer le code suivant.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    $id_dev = $_GET['id'];
    $civilite = $_POST['civilite'];
    echo 'Identifiant du devis : '.$id_dev.'<br/>';
     
    $sql=mysql_query('UPDATE `formulaire` SET civilite="'.mysql_real_escape_string($civilite).'" where id_devis='.intval($id_dev)) or die ("Erreur update: ".mysql_error());
     
    echo 'Nombre de lignes affectées : '.mysql_affected_rows().'<br/>';
    Au passage, penses à toujours protéger tes requêtes des injections SQL, là ca aurait été du gâteau.

    À bientôt,

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    64
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Novembre 2009
    Messages : 64
    Points : 41
    Points
    41
    Par défaut
    Citation Envoyé par ThomasR Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    $id_dev = $_GET['id'];
    $civilite = $_POST['civilite'];
    echo 'Identifiant du devis : '.$id_dev.'<br/>';
     
    $sql=mysql_query('UPDATE `formulaire` SET civilite="'.mysql_real_escape_string($civilite).'" where id_devis='.intval($id_dev)) or die ("Erreur update: ".mysql_error());
     
    echo 'Nombre de lignes affectées : '.mysql_affected_rows().'<br/>';
    Merci de ta réponse, j'ai essayé donc ca me mets bien que ca ajoute quelque chose (ce qui est normal) sauf que ce qu'il m'ajoute c'est toujours un espace
    :s

    Je viens de voir que quand je transmet mes valeurs avec $_GET ca fonctionne, donc l'erreur vient du $_POST :s

    Au cas je mets la facon dont je transmet mes valeurs:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo"Civilite: <input type=\"text\" name=\"civilite\" value=\"$civilite\" size=\"25\"/>";
    Ps: Oui pour la sécurité j'ai simplement retiré tout le code inutile au fonctionnement pour les tests sinon j'ai bien tout le tuticuenti de sécurité

  8. #8
    Membre expert
    Avatar de ThomasR
    Homme Profil pro
    Directeur technique
    Inscrit en
    Décembre 2007
    Messages
    2 230
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2007
    Messages : 2 230
    Points : 3 972
    Points
    3 972
    Par défaut
    Bonsoir,

    as-tu bien mis method="post" sur ta balise <form /> ?

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    64
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Novembre 2009
    Messages : 64
    Points : 41
    Points
    41
    Par défaut
    Oh mon dieu!!!

    De 15h a 1h du matin a m'arracher les cheveux, retourner mon code dans tous les sens pour au final me rendre compte que tout marche normalement sauf:

    MOZZILA FIREFOX!!!!


    Sur internet explorer ca marche mais pas sur firefox! Jamais j'aurais cru dire ca de firefox oh putain je le haie d'un coup!

    (Sinon l'erreur est qu'il fait deux fois l'insertion ou l'update selon l'operation sauf que la deuxieme operation il met les champs a vide...)

    Personne n'aurait une idée d'où peut venir ce bug de FF svp?

    Merci

    Edit: oui j'ai bien mon method=post dans le form

  10. #10
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Sur d'ancienne version de firefox, un CSS mal écrit provoque un appel de la page et donc une deuxieme execution de la requete.
    Ca se produit quand des réferences vides sont declarées par exemple link="" ou url=""
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  11. #11
    Nouveau membre du Club
    Inscrit en
    Juin 2008
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 29
    Points : 27
    Points
    27
    Par défaut
    sinon ça c'est normal
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $id_dev = $_GET['id'];
    $civilite = $_POST['civilite'];
    le formulaire il est en method post ou get, pas les deux

  12. #12
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    64
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Novembre 2009
    Messages : 64
    Points : 41
    Points
    41
    Par défaut
    Citation Envoyé par lapin7 Voir le message
    sinon ça c'est normal
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $id_dev = $_GET['id'];
    $civilite = $_POST['civilite'];
    le formulaire il est en method post ou get, pas les deux
    Si j'ai mon id dans l'url (donc je recupere avc GET) et le formulaire est en POST donc je recupere en POST, c'est pas correct ca? ^o)

    Et pour le css je n'ai pas de style css sur ma page j'ai tout supprimer pour ne laisser que le code minimal :s
    Je vais le mettre sur un ftp pour que vous vous rendiez compte du probleme en entier ^^

    Merci.

  13. #13
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    64
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Novembre 2009
    Messages : 64
    Points : 41
    Points
    41
    Par défaut
    ... Finalement pas besoin de faire de page de test j'ai trouvé l'erreur!

    En fait j'ai bien mis le liens vers le CSS dans mon header sauf que je l'ai lier a rien:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <LINK rel=StyleSheet href="" title="defaut" type="text/css">
    En supprimant cette ligne ca marche!

    J'espere que ca aidera quelqu'un dans le futur

    Personnellement je suis exempter de coiffeur pour un petit moment

    Merci a tous et bonne journée

  14. #14
    Membre expert Avatar de Fench
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Mai 2002
    Messages
    2 353
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Groenland

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 353
    Points : 3 390
    Points
    3 390
    Par défaut
    Bonjour,

    Avec le code complet, ce sera tjs mieux

    Parcontre une remarque: beaucoup de fois, des requêtes tournent sur PhpMyAdmin mais pas dans un script car ya souvent un problème d'espace en trop (c sûr c pas fin de la part de php).
    Donc ton code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $req="UPDATE formulaire SET civilite='$civilite' where id='$id_dev' ";
    peut très bien marcher sur phpMyAdmin mais pas avec Mysql_query car un espace en trop (ici en fin de ta chaîne)
    Meuuh en AI à l'INRA
    Domaines: {java, php, js, jquery}{hibernate, doctrine}{MyLib, symfony, Zend}
    fait gagner du temps à ceux qui aident , donc un message avec la balise résolu laisse plus de temps pour résoudre d'autres problèmes (balise à cliquer en bas de l'écran)

  15. #15
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    64
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Novembre 2009
    Messages : 64
    Points : 41
    Points
    41
    Par défaut
    Merci French mais probleme résolu Pas de problème d'espace ^^

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XSL] Comment modifier la valeur d'une variable?
    Par sorcer1 dans le forum XSL/XSLT/XPATH
    Réponses: 8
    Dernier message: 17/02/2010, 13h26
  2. récupération d'une valeur dans une variable
    Par jh0483 dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 17/08/2005, 09h49
  3. Réponses: 2
    Dernier message: 16/08/2005, 09h43
  4. afficher dans une boite de dialogue la valeur d'une variable
    Par micknic dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 10/07/2005, 09h25
  5. Intercepter le changement de valeur d'une variable
    Par Captain_JS dans le forum C++Builder
    Réponses: 5
    Dernier message: 07/01/2005, 08h04

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo