Probleme de modification

Résolu
Bonsoir,

j'ai ce code :

<?php
include_once("connexin_ba.php") ;

if(isset($_POST['enregistrer']) && isset ($_POST['Departement'])&& isset ($_POST['Poste']) && isset ($_POST['Marque']) && isset ($_POST['No_Serie']) && isset ($_POST['Fonction']) ){

$Departement=$_POST['Departement'];
$Poste=$_POST['Poste'];
$Marque= $_POST['Marque'];
$No_Serie= $_POST['No_Serie'];
$Fonction= $_POST['Fonction'];

$sql = 'UPDATE Imp set Departement=nvDepartement, Poste=nvPoste, Marque=nvMarque, No_Serie=nvNo_Serie,Fonction=nvFonction WHERE id_imp=$id_imp';

$params =array('nvDepartement'=>$Departement, 'nvPoste'=> $Poste ,'nvMarque'=>$Marque,'nvNo_Serie'=> $No_Serie,'nvFonction'=> $Fonction );

$stmt= sqlsrv_query( $conn, $sql, $params);

header('Location: affichage_i.php');

sqlsrv_free_stmt($stmt);
?>

apres la modification quand je clic sur enregistrer je retourne sur la page d'affichage comme demandé mais les champs n'ont pas été modifié. je vois pas l'erreur, j'aimerais avoir un peu d'aide svp.

6 réponses

  1. Tu veux dire quoi par les champs n'ont pas été modifiés? Et utilise la balise code pour que ça soit lisible sur le forum.
    1. Bonjour,

      oui c'est le cas.

      <? php
               include_once("connexin_ba.php");
               if(isset($_POST['enregistrer']) && isset ($_POST['Departement']) 
               && isset($_POST['Poste']) && isset ($_POST['Marque'])
               && isset ($_POST['No_Serie']) && isset ($_POST['Fonction']) 
               {
      
      
                    $Departement=$_POST['Departement'];
                    $Poste=$_POST['Poste'];
                    $Marque= $_POST['Marque'];
                    $No_Serie= $_POST['No_Serie'];
                    $Fonction= $_POST['Fonction'];
         
                    $sql='UPDATE Imprimantes set Departement=nvDepartement, 
                            Poste=nvPoste, Marque=nvMarque, No_Serie=nvNo_Serie,
                            Fonction=nvFonction  WHERE id_imp=$id_imp';
         
      
                    $params=array('nvDepartement'=>$Departement,
                                            'nvPoste'=> $Poste ,
                                            'nvMarque'=>$Marque,
                                            'nvNo_Serie'=> $No_Serie,
                                            'nvFonction'=> $Fonction );
        
      
                    $stmt= sqlsrv_query( $conn, $sql, $params);
                  
                    header('Location: affichage_i.php');
            
                    sqlsrv_free_stmt($stmt);
               }
      
      ?>
      1. Et donc quels champs n'ont pas été modifiés?
      2. Oui mais ce que je comprend pas c'est ce que tu dit par "Sont pas modifiés"
    2. pendant l'insertion j'ai mis comme comme # de serie XXXXXX
      et j'aimerais porter une modification YYYYYYY quand je clic j'enregistre c toujours XXXXX qui est dans le champs de # de serie. la modification n'est pas faite. je ne vois pas ou est le probleme dans le code.
      1. si je remplace ce bout de code :

        <?php
                     $sql='UPDATE Imprimantes set Departement=nvDepartement, 
                              Poste=nvPoste, Marque=nvMarque, No_Serie=nvNo_Serie,
                              Fonction=nvFonction  WHERE id_imp=$id_imp';
           
        
                      $params=array('nvDepartement'=>$Departement,
                                              'nvPoste'=> $Poste ,
                                              'nvMarque'=>$Marque,
                                              'nvNo_Serie'=> $No_Serie,
                                              'nvFonction'=> $Fonction );
          
        
                      $stmt= sqlsrv_query( $conn, $sql, $params);
        
        ?>


        par :

        <?php
        
          $sql = sqlsrv_prepare('UPDATE Imprimantes set    Departement=nvDepartement, Poste=nvPoste, Marque=nvMarque, No_Serie=nvNo_Serie,  Fonction=nvFonction  WHERE id_imp=$id_imp');
        
        
            $params =sqlsrv_execute(array('nvDepartement'=>$Departement,        'nvPoste'=> $Poste ,'nvMarque'=> $Marque,'nvNo_Serie'=> $No_Serie,'nvFonction'=> $Fonction ));
        
             $stmt = sqlsrv_query( $conn, $sql, $params);
             if( $stmt === false ) {
             die( print_r( sqlsrv_errors(), true));
        }
        ?>


        g c message d'erreur:

        Array ( [0] => Array ( [0] => IMSSP [SQLSTATE] => IMSSP [1] => -14 [code] => -14 [2] => An invalid parameter was passed to sqlsrv_query. [message] => An invalid parameter was passed to sqlsrv_query. ) )
        1. Je crois que ça viens de ta variable $id_imp elle ne passe pas, il faut utiliser des doubles quote (") et non des simple (')
        2. Donc ça dois être une de tes valeurs qui n'est pas conforme.
      2. Bonjour,

        j'ai fait quelque ptit changement dans le code et enfin ca fonctionne.

        <?php 
             include_once("connexin_ba.php") ;
        
             if(isset($_POST['enregistrer'])) {
        
             $id_imp=$_POST['id_imp'];
             $Departement =$_POST['Departement'];
             $Poste=$_POST['Poste'];
             $Marque=$_POST['Marque'];
             $No_Serie=$_POST['No_Serie'];
                 $Fonction=$_POST['Fonction'];
        
             $req= "UPDATE Imprimantes set Departement='$Departement',                          Poste='$Poste', Marque='$Marque', No_Serie='$No_Serie',   Fonction='$Fonction' WHERE id_imp=$id_imp ";
        
             $params = array($Departement,$Poste,$Marque,$No_Serie, $Fonction);
        
                $stmt = sqlsrv_query( $conn, $req, $params);
                if( $stmt === false ) {
                     die( print_r( sqlsrv_errors(), true));
                }
        
              header("Location: afFichage_i.php");
        
        }
        
        
        
        ?>
        1. Du coup ta variable params ne sert à rien vu que tu met les variables directement dans la requête. et oui tu avait bien un problème de quote au final.