Encore un problème d'Update

Résolu/Fermé
warbeast1000 Messages postés 56 Date d'inscription mardi 9 juin 2015 Statut Membre Dernière intervention 30 juin 2015 - Modifié par warbeast1000 le 27/06/2015 à 16:21
warbeast1000 Messages postés 56 Date d'inscription mardi 9 juin 2015 Statut Membre Dernière intervention 30 juin 2015 - 30 juin 2015 à 10:10
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.
A voir également:

2 réponses

jordane45 Messages postés 38314 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 24 novembre 2024 4 705
27 juin 2015 à 16:56
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
warbeast1000 Messages postés 56 Date d'inscription mardi 9 juin 2015 Statut Membre Dernière intervention 30 juin 2015
Modifié par warbeast1000 le 27/06/2015 à 17:27
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
warbeast1000 Messages postés 56 Date d'inscription mardi 9 juin 2015 Statut Membre Dernière intervention 30 juin 2015
27 juin 2015 à 17:26
PS: en adptant le code, j'ai mon erreur qui s'affiche
0
warbeast1000 Messages postés 56 Date d'inscription mardi 9 juin 2015 Statut Membre Dernière intervention 30 juin 2015
29 juin 2015 à 18:43
UP svp, j'ai vraiment besoin d'aide :/
0
jordane45 Messages postés 38314 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 24 novembre 2024 4 705
29 juin 2015 à 20:20
Bonjour
pour t'aider. .il faudrait qu'on sache quelle est l'erreur. ...
0
warbeast1000 Messages postés 56 Date d'inscription mardi 9 juin 2015 Statut Membre Dernière intervention 30 juin 2015
29 juin 2015 à 20:41
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
jordane45 Messages postés 38314 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 24 novembre 2024 4 705
29 juin 2015 à 20:53
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
warbeast1000 Messages postés 56 Date d'inscription mardi 9 juin 2015 Statut Membre Dernière intervention 30 juin 2015
29 juin 2015 à 21:14
Je test sa demain et je vous tiens au courant.
Cordialement,
Guillaume
0
warbeast1000 Messages postés 56 Date d'inscription mardi 9 juin 2015 Statut Membre Dernière intervention 30 juin 2015
Modifié par warbeast1000 le 30/06/2015 à 09:18
Rebonjour,
Alors voila, il me manquait idC dans requpd.
sa m'affiche bien ma variable $_SESSION mais l'UPDATE ne s'effectue pas.
0
warbeast1000 Messages postés 56 Date d'inscription mardi 9 juin 2015 Statut Membre Dernière intervention 30 juin 2015
Modifié par warbeast1000 le 30/06/2015 à 09:19
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
warbeast1000 Messages postés 56 Date d'inscription mardi 9 juin 2015 Statut Membre Dernière intervention 30 juin 2015
30 juin 2015 à 09:18
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
warbeast1000 Messages postés 56 Date d'inscription mardi 9 juin 2015 Statut Membre Dernière intervention 30 juin 2015
Modifié par warbeast1000 le 30/06/2015 à 09:38
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