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 pdo ne se fait pas [MySQL]


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    412
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 412
    Par défaut update pdo ne se fait pas
    bonjour,

    je n'arrive pas à updater une table

    voila mon formulaire

    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <form id="form4" action="update_bdd.php"   method="post"  >
    <input  id="titre" name="titre" type="text"  value='<?php echo html_entity_decode(stripslashes($titre)) ;  ?>'  />
    <input  id="phone" name="phone" type="text"  value='<?php echo html_entity_decode(stripslashes($phone)) ;  ?>'  />
     <input type="hidden" name "datepost" id="datepost" value="<?php echo date("F j, Y"); ?>" />
     <input type="hidden" id="id_commune" value="<?php echo $id_commune ; ?>" />
      <input type="hidden" id="id_membre" value="<?php echo $id_membreses ; ?>" />
     <input type="hidden" id="id_membre" value="<?php echo $id_membre ; ?>" />
     <input type="button" name='bouton'  value="Entrez" />  </form>


    la partie javascript

    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    var titre,id_commune,phone,id_membre,date,id_membreses;
     
    titre =document.getElementById('titre').value;alert(titre);
    id_commune =document.getElementById('id_commune').value;alert(id_commune);
    phone =document.getElementById('phone').value;alert(phone);
    id_membre =document.getElementById('id_membre').value;alert(id_membre);
     datepost =document.getElementById('datepost').value;alert(datepost);
     
    var sendAjax = $.ajax({
    type: "POST",
     url: 'update_bdd.php',
    data: 'titre_annonce='+titre_annonce+'&id_commune='+id_commune+'&phone='+phone+'&id_membre='+id_membre+'&datepost='+datepost+'&id_membreses='+id_membreses,success: handleResponse
    	     });
       }
       function handleResponse(){
        $('#answer').get(0).innerHTML = sendAjax.responseText;
       }
      });
     }

    et dans le fichier php qui update les donnée

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
     $id_membreses = $_SESSION['uid'];
    if(isset($_POST['id_membre']) && isset($_POST['titre'])){
     
      $id_commune = addslashes($_POST['id_commune']);
      $titre = htmlentities(addslashes($_POST['titre']));
      $description = htmlentities(addslashes($_POST['description']));
      $phone = htmlentities(addslashes($_POST['phone']));
      $id_membre = addslashes($_POST['id_membre']);
      $datepost = ($_POST['datepost']);
     
      $insert = $connection->prepare("UPDATE table SET titre=:titre,  id_commune=:id_commune,phone=:phone, id_membre=:id_membre, datepost=:date_post where id_membre = '".$id_membreses."' ");
    try {
     
      $insert->bindParam(':titre', $titre, PDO::PARAM_STR, 150);
       $insert->bindParam(':id_commune', $id_commune, PDO::PARAM_INT);
      $insert->bindParam(':phone', $phone, PDO::PARAM_STR,20);
      $insert->bindParam(':id_membre', $id_membre, PDO::PARAM_INT);
      $insert->bindParam(':datepost', date('Y-m-d'));
     
     
     $success=  $insert->execute();
     
      if( $success ) {
        echo "Enregistrement réussi";
      } 
    } catch( Exception $e ){
      echo 'Erreur de requète : ', $e->getMessage();
    }}
    dans mes alerte javascript j'ai bien les données qui sont correctement passées , et la page me renvoie bien que l'enregistrement est réussi

    mais il n'y aucun changement dans la table

    dans la page qui update les données j'ai cette erreur , mais je ne pense pas que ça soit ça qui cloche

    " Only variables should be passed by reference in" qui correspond à la ligne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     $insert->bindParam(':datepost', date('Y-m-d'));
    merci de l'aide que vous pouvez apporter

  2. #2
    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
    Par défaut
    Tu as mis
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    412
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 412
    Par défaut
    bonjour sabotage ,

    c'est juste une erreur quant j'ai copié mon code pour soumettre mon problème

    voila le formulaire

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <form id="form4" action="update_bdd.php"   method="post"  >
    <input  id="titre" name="titre" type="text"  value='<?php echo html_entity_decode(stripslashes($titre)) ;  ?>' required />
    <input  id="phone" name="phone" type="text"  value='<?php echo html_entity_decode(stripslashes($phone)) ;  ?>' required />
     <input type="hidden" name "datepost" id="datepost" value="<?php echo date("F j, Y"); ?>" />
     <input type="hidden" id="id_commune" value="<?php echo $id_commune ; ?>" />
     <input type="hidden" id="id_membre" value="<?php echo $id_membre ; ?>" />
      <input type="hidden" id="id_membreses " value="<?php echo $id_membreses ; ?>" />
     <input type="button" name='bouton'  value="Entrez" />  </form>
    ce que je comprend pas c'est que les données semblent bien être envoyées au fichier qui traite l'update, je reçois une réponse javascript comme quoi l'enregistrement à bien été fait mais en fait rien ne se passe, aucune mise à jour dans la table

  4. #4
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Par défaut
    A priori, c'est bien ce code : $insert->bindParam(':datepost', date('Y-m-d')); qui pose problème.

    Citation Envoyé par php.net
    Lie une variable PHP à un marquer nommé ou interrogatif correspondant dans une requête SQL utilisée pour préparer la requête. Contrairement à PDOStatement::bindValue(), la variable est liée en tant que référence et ne sera évaluée qu'au moment de l'appel à la fonction PDOStatement::execute().
    Or, tu ne peux pas lier un appel à une fonction comme référence.

    bindParam est plutôt utilisé pour des requêtes en boucle. Dans ton cas, j'utiliserai plutot bindValue
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    412
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 412
    Par défaut
    merci Celira

    pour voir, j'ai supprimé la partie concernant la date , aussi bien dans le formulaire , dans le javascript et la page de l'update..

    je n'ai plus l'affichage de l'erreur , tout indique que les valeurs sont envoyés, le javascript renvoie que l'enregistrement est réussie, mais dans la table rien ne bouge

    ce n'est donc pas cette erreur qui pose problème

    pourtant ailleurs sur d'autres page du site je fait un update équivalent à celui ci avec quasiment le même code ( avec également binParam ) est ça marche.

    je vais regarder en quoi ça diffère peut être que la solution est là.

  6. #6
    Expert confirmé

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 418
    Par défaut
    Sinon si tu tiens à utiliser bindParam tu peux faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $date = date('Y-m-d');
    $insert->bindParam(':datepost', $date);
    A part cela je vois que tu utilises htmlentities pour faire ton update or les fonctions htmlentities et htmlpsecialchars ne sont à utiliser qu'à l'affichage et non pas lors de l'insertion en bdd. En faisant ainsi tu encombre ta base de caractères inutiles et en cas de besoin il te serait impossible de faire une recherche insensible aux caractères accentués.

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

Discussions similaires

  1. [PDO] UPDATE qui ne se fait pas
    Par laurentSc dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 06/02/2015, 23h57
  2. [Ajax.NET]UpdataPanel.Update() qui ne se fait pas
    Par rad_hass dans le forum ASP.NET
    Réponses: 4
    Dernier message: 12/03/2009, 09h27
  3. [MySQL] UPDATE qui ne se fait pas
    Par VoteForMe dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 17/09/2008, 13h42
  4. [MySQL] MySQL Update qui ne se fait pas
    Par philippef dans le forum PHP & Base de données
    Réponses: 13
    Dernier message: 10/07/2008, 17h30
  5. update qui fait pas son boulot !
    Par mami900 dans le forum SQL
    Réponses: 5
    Dernier message: 19/04/2007, 20h20

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