Encore un problème d'Update

Résolu
warbeast1000 Messages postés 56 Statut Membre -  
warbeast1000 Messages postés 56 Statut Membre -
Bonjour,

Je reviens (encore et toujours) vers vous pour un problème que j'avais récemment exposé et résolu, mais qui je n'ai pas réussi à adapter.
J'ai une requête d'Update de mes clients, qui ne marche PLUS alors qu'elle marchait parfaitement avant que mon employeur me demande de rajouter 3 champs dans le formulaire.
Rien ne change dans le formulaire, et aucun erreur ne s'affiche, je ne comprend pas.

Voila le code du clientpanel.php

<?php
           
           include('inc/cnx.inc.php');
 try{
  
 $reqs = "SELECT idC,loginC,nomC,prenomC,mailC,telC,adresseC,villeC,CPC FROM client WHERE loginC='".$_SESSION['loginC']."'";
        $rereqs = $connexion->query($reqs);
        $clie = $rereqs->fetch();
           
  echo "<form id='clientpan' action='inc/connectedmodif.inc.php' method='POST'>";
                        echo "<input type='hidden' name='idC' value=".$clie["idC"]."/>";
                        echo "<fieldset><label>Pseudo : </label><input type='text' name='loginC' value=".$clie["loginC"]." required autofocus /><br /><br /></fieldset>";      
                        echo "<fieldset><label>Nom : </label><input type='text' name='nomC'  value=".$clie["nomC"]." required /><br /></fieldset>";
                        echo "<fieldset><label>Prénom : </label><input type='text' name='prenomC' value=".$clie["prenomC"]." required /><br /><br /></fieldset>";                                         
                        echo "<fieldset><label>Adresse E-mail : </label><input type='email' name='mailC' value=".$clie["mailC"]." required /><br/><br /></fieldset>";
                        echo "<fieldset><label>Tel : </label><input type='tel' name='telC' value=".$clie["telC"]." /><br/><br /><br /></fieldset>";?>
                        <fieldset><label>Adresse : </label><input type='text' name='adresseC' value="<?php echo htmlspecialchars($clie["adresseC"],ENT_QUOTES, 'UTF-8');?>" required /><br/><br /><br /></fieldset>
                        <fieldset><label>Ville : </label><input type='text' name='villeC' value="<?php echo htmlspecialchars($clie["villeC"],ENT_QUOTES, 'UTF-8');?>" required /><br/><br /><br /></fieldset><?php
                         echo "<fieldset><label>Code Postal : </label><input type='text' name='CPC' value=".$clie["CPC"]." required /><br/><br /><br /></fieldset>";
                         echo "<button type='submit' id='clientpan' name='modifier' value='Modifier'>Valider Modifications</button><br /><br />";
         echo "</form>";

        }
        catch (Exceptions $e){
          die($dsn."erreur : ". $e->getMessage());
        } 
?>



et voila m'a requête UPDATE :


<?php

include('cnx.inc.php');
$connexion = new PDO($DSN,$USER,$PWD);
 
 if(isset($_SESSION['loginC'])){
  $requpd = 'UPDATE client SET loginC = "'.$_SESSION['loginC'].'",
                                            nomC = "'.$_SESSION['nomC'].'",
                                            prenomC = "'.$_SESSION['prenomC'].'",
                                            mailC = "'.$_SESSION['mailC'].'",
                                            telC = "'.$_SESSION['telC'].'",
                                            adresseC = "'.$_SESSION['adresseC'].'",
                                            villeC = "'.$_SESSION['villeC'].'",
                                            CPC = "'.$_SESSION['CPC'].'"
                                    WHERE idC = '.$_SESSION['idC'].'';
  $req = $connexion->prepare($requpd);
  $req->execute();

  header('location:../clientpanel.php');
 }
 else{
  header('location:../clientpanel.php');
 }

?>



Voila j'espère que vous pourrez m'aider au plus vite, je dois rendre le site aujourd'hui, et sa m'embêterai d'être en retard..
Merci !

warbeast1000/Guillaume



echo est plus rapide que print.

2 réponses

  1. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830
     
    Bonjour,

    Commence par désactiver les Redirections dans ton code d'update...
    puis ajoute un ECHO de ta variable $requpd pour voir si les variables sont bonnes...
    Une fois le echo effectué... prend le resultat..puis testes le directement dans ta BDD ( directement dans phpmyadmin par exemple)

    Si la requête fonctionne... c'est que ton souci vient d'ailleurs.... mais c'est déjà le minimum à vérifier !

    Ensuite... vu que tu utilises la PDO ... enlèves toutes tes variables de ta requête.... et places les dans un ARRAY que tu passeras à ton execute !

    Et enfin... changes les "include" de ton fichier de connexion ... par des REQUIRE_ONCE.

    PS : Pourquoi fais tu un new pdo dans ton script d'update... alors que tu ne le fais pas dans ton code pour afficher ??

    PS2 : Que contient ton fichier de connexion ?
    0
    1. warbeast1000 Messages postés 56 Statut Membre
       
      Alors pour le echo (et/ou var_dump();) j'ai déjà essayé, mais rien ne s'affiche à l'écran, la page reste blanche...

      j'ai essayer d'adapter mon code selon vos recommandations :

      
      <?php
      
      require_once('cnx.inc.php');
       
       $loginC = isset($_SESSION['loginC'])?$_SESSION['loginC']:'';
       $nomC = isset($_SESSION['nomC'])?$_SESSION['nomC']:'';
       $prenomC = isset($_SESSION['prenomC'])?$_SESSION['prenomC']:'';
       $mailC = isset($_SESSION['mailC'])?$_SESSION['mailC']:'';
       $telC = isset($_SESSION['telC'])?$_SESSION['telC']:'';
       $adresseC = isset($_SESSION['adresseC'])?$_SESSION['adresseC']:'';
       $villeC = isset($_SESSION['villeC'])?$_SESSION['villeC']:'';
       $CPC = isset($_SESSION['CPC'])?$_SESSION['CPC']:'';
       $idC = isset($_SESSION['idC'])?$_SESSION['idC']:NULL;
       if (isset($_SESSION['loginC'])){
        $requpd = "UPDATE client SET loginC = :loginC,
                 nomC = :nomC,
                 prenomC = :prenomC,
                 mailC = :mailC,
                 telC = :telC,
                 adresseC = adresseC,
                 villeC = :villeC,
                 CPC = :CPC
            WHERE idC = :idC ";
                  
         $params = array( ":loginC"=>$loginC
            ,":nomC"=>$nomC
            ,":prenomC"=>$prenomC
            ,":mailC"=>$mailC
            ,":telC"=>$telC
            ,":adresseC"=>$adresseC
            ,":villeC"=>$villeC
            ,":CPC"=>$CPC
         );
         
        try{
         $req = $connexion->prepare ($requpd);
         $req->execute($params);
         header('Location:../modifprod.php');
        }
        catch (PDOException $e){
         die("Source : ".$DSN." Erreur : ".$e->getMessage());
        }
       }
       else{
        echo "<br> Erreur : Aucune Session Active  ! ";
       }
      ?>
      
      


      Mon fichier de connexion :
      
      <?php
      
      //création de la connexion a la BDD
      
      $DSN ="mysql:host=localhost;dbname=i48website;charset=UTF8";
      $USER="root";
      $PWD="";
      
      //par soucis de simplicité on instancie l'objet de connexion PDO ici
      
      $connexion = new PDO($DSN,$USER,$PWD);
      
      ?>
      
      
      0
    2. warbeast1000 Messages postés 56 Statut Membre
       
      PS: en adptant le code, j'ai mon erreur qui s'affiche
      0
    3. warbeast1000 Messages postés 56 Statut Membre
       
      UP svp, j'ai vraiment besoin d'aide :/
      0
    4. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830
       
      Bonjour
      pour t'aider. .il faudrait qu'on sache quelle est l'erreur. ...
      0
    5. warbeast1000 Messages postés 56 Statut Membre
       
      Le problème c'est qu'aucunes erreurs ne s'affichent à l'ecran, comme écrit plus haut, la page reste blanche.
      Et si je met le header rien ne change dans mon formulaire. L'UPDATE est comme ''mort''.
      0
  2. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830
     
    Testes ça :
    <?php
    // Reporte toutes les erreurs PHP 
    ini_set('display_errors', '1');
    error_reporting(E_ALL);
    
    //Démarrage des sessions si non démarrées
    if(session_id() == '') {
      session_start();
    }
    
    // connexion à la BDD
    require_once('cnx.inc.php');
    
    //------------------------------------------//
    // Le temps des tests :
    echo "<br> Variables de session : <br>";
    print_r($_SESSION);
    //------------------------------------------//
     
     // récupération des variables
     $loginC = isset($_SESSION['loginC'])?$_SESSION['loginC']:'';
     $nomC = isset($_SESSION['nomC'])?$_SESSION['nomC']:'';
     $prenomC = isset($_SESSION['prenomC'])?$_SESSION['prenomC']:'';
     $mailC = isset($_SESSION['mailC'])?$_SESSION['mailC']:'';
     $telC = isset($_SESSION['telC'])?$_SESSION['telC']:'';
     $adresseC = isset($_SESSION['adresseC'])?$_SESSION['adresseC']:'';
     $villeC = isset($_SESSION['villeC'])?$_SESSION['villeC']:'';
     $CPC = isset($_SESSION['CPC'])?$_SESSION['CPC']:'';
     $idC = isset($_SESSION['idC'])?$_SESSION['idC']:NULL;
     
     if (isset($_SESSION['loginC'])){
      $requpd = "UPDATE client 
              SET loginC = :loginC
                 ,nomC = :nomC
                 ,prenomC = :prenomC
                 ,mailC = :mailC
                 ,telC = :telC
                 ,adresseC = adresseC
                 ,villeC = :villeC
                 ,CPC = :CPC
          WHERE idC = :idC ";
                
       $params = array( ":loginC"=>$loginC
          ,":nomC"=>$nomC
          ,":prenomC"=>$prenomC
          ,":mailC"=>$mailC
          ,":telC"=>$telC
          ,":adresseC"=>$adresseC
          ,":villeC"=>$villeC
          ,":CPC"=>$CPC
    	  ,":idC"=>$idC
       );
       
      try{
       $req = $connexion->prepare($requpd);
       $req->execute($params);
       //header('Location:../modifprod.php');
      } catch (PDOException $e){
       // en cas de soucis dans la requete :
       echo "<br>ERREUR ! ".$e->getMessage()."<br>";
       echo "<br>params : <br>";
       print_r($params);
     }
    
     }else{
      echo "<br> Erreur : Aucune Session Active  ! ";
     }
    ?>
    

    0
    1. warbeast1000 Messages postés 56 Statut Membre
       
      Je test sa demain et je vous tiens au courant.
      Cordialement,
      Guillaume
      0
    2. warbeast1000 Messages postés 56 Statut Membre
       
      Rebonjour,
      Alors voila, il me manquait idC dans requpd.
      sa m'affiche bien ma variable $_SESSION mais l'UPDATE ne s'effectue pas.
      0
    3. warbeast1000 Messages postés 56 Statut Membre
       
      Rebonjour,
      en gros voila l'erreur.
      http://img11.hostingpics.net/pics/502133911.png

      ps: j'ai tester d'afficher les paramètres, mais a part $_SESSION(loginC) on dirai qu'il ne prend rien
      Je pense qu'il n'arrive pas à récupérer les données autres que celle de la session loginC (juste le pseudo quoi)
      0
    4. warbeast1000 Messages postés 56 Statut Membre
       
      en changeant tout les $_SESSION (hormis loginC) par des $_POST (c'est un formulaire qui est utilisé donc logique), j'arrive a récupérer mes infos, mais la requête ne fonctionne toujours pas.
      http://img11.hostingpics.net/pics/506470142.png
      0
    5. warbeast1000 Messages postés 56 Statut Membre
       
      Y a du nouveau, certains champs arrivent de nouveau à ce mettre à jour (loginC, prenomC, nomC...) mais cela ne marche pas pour un des 2 champs utilisant htmlspecialchars (adresseC).
      Comment faire ?
      0