mon code "modifier" en php supprime les données au lieu de modifier

mon code "modifier" en php supprime les données au lieu de modifier - PHP - Programmation

Marsh Posté le 08-07-2013 à 12:07:59    

Bonjour,
 
je me plante sur le code "modifier" dans PHP. Au fait, au lieu de modifier les données se trouvant dans ma base de données bizarrement il les supprimer complètement, je ne sais pas si j'ai glissé une erreur quelque part ! Je ne comprends du moins pourquoi ça marche ainsi  :pfff:  
 
Ici, c'est ma table Client
 
 Voici le code en question :
 
<?php
//header("Location: listclient.php" );
$user = "root";
$pass = "";
$db = "hotel";
 
mysql_connect("localhost","root","" )or die("connection failed." .mysql_error());
 
mysql_select_db($db) or die ("select db failed." .mysql_error());
 
     {  
$id =$_REQUEST['IdClient'];
 
$result = mysql_query("SELECT * FROM client WHERE IdClient = '$id'" );
$test = mysql_fetch_array($result);
if (!$result)  
  {
  die("Error: Data not found.." );
  }        
       $nom= $test['nom'] ;      
    $prenom=$test['prenom'] ;
    $etatcivil=$test['etatcivil'] ;
    $nationalite=$test['nationalite'] ;
    $adresse=$test['adresse'] ;
    $telephone=$test['telephone'] ;
    $occupation=$test['occupation'] ;
    $sexe=$test['sexe'] ;
 
if(isset($_POST['save']))
{  
 $nom_save=$_POST['nom'] ;
 $prenom_save=$_POST['prenom'] ;
 $etatcivil_save=$_POST['etatcivil'] ;
 $nationalite_save=$_POST['nationalite'] ;
 $adresse_save=$_POST['adresse'] ;
 $telephone_save=$_POST['telephone'] ;
 $occupation_save=$_POST['occupation'] ;
 $sexe_save=$_POST['sexe'] ;
 
 mysql_query("UPDATE client SET nom ='$nom_save', prenom ='$prenom_save',
   etatcivil='$etatcivil_save', nationalite='$nationalite_save', adresse='$adresse_save', telephone='$telephone_save',occupation='$occupation_save', sexe='$sexe_save' WHERE IdClient = '$id'" )
    or die(mysql_error());  
 echo "Saved!";  
 
 // header("Location: index.php" );    
}
mysql_close();
?>
 
Y a -t-il quelqu'un pour m'aider Svp ?!!
 
Merci d'avance pour votre aide!

Reply

Marsh Posté le 08-07-2013 à 12:07:59   

Reply

Marsh Posté le 08-07-2013 à 12:13:53    

Regarde ce que contient tes variables

Reply

Marsh Posté le 08-07-2013 à 12:19:08    

Citation :

mysql_connect


Pourquoi ?
Nous sommes en 2013, utiliser PDO pourrait être moins moche.
 

Citation :

$nom_save=$_POST['nom'] ;
 $prenom_save=$_POST['prenom'] ;
 $etatcivil_save=$_POST['etatcivil'] ;
 $nationalite_save=$_POST['nationalite'] ;
 $adresse_save=$_POST['adresse'] ;
 $telephone_save=$_POST['telephone'] ;
 $occupation_save=$_POST['occupation'] ;
 $sexe_save=$_POST['sexe'] ;
 
 mysql_query("UPDATE client SET nom ='$nom_save', prenom ='$prenom_save',
   etatcivil='$etatcivil_save', nationalite='$nationalite_save', adresse='$adresse_save', telephone='$telephone_save',occupation='$occupation_save', sexe='$sexe_save' WHERE IdClient = '$id'" )


http://php.net/manual/fr/pdo.prepared-statements.php parce que là, vraiment, il faut arrêter les conneries.
 
Sinon en ce qui concerne la suppression, j'imagine que IdClient est un entier : avez vous essayé avec

Citation :

WHERE IdClient = $id

au lieu de

Citation :

WHERE IdClient = '$id'


---------------
Main/Alt1/Alt2/Alt3
Reply

Marsh Posté le 09-07-2013 à 12:38:16    

Volkhen a écrit :

Citation :

mysql_connect


Pourquoi ?
Nous sommes en 2013, utiliser PDO pourrait être moins moche.


Pourquoi bien faire alors qu'on peut recopier des recettes de grand-mère qui polluent les résultats Google depuis la nuit des temps?  :p
 
Sérieusement, un code pareil, c'est une invitation à l'injection SQL, et good-bye la DB. :fou:


---------------
http://devicenotready.com/ - Informatique et autres bizarreries
Reply

Marsh Posté le 16-07-2013 à 13:37:45    

Bonjour,  
 
Excusez-moi énormément pour ce grand retard de répondre !
Franchement, je suis toujours dans l'impasse suite aux codes (modifier et supprimer) qui me malmènent jusqu'à présent.
Ben, J'ai essayé d'appliquer votre conseil mais aussi j'ai pu changé le design de mon projet mais çane marche pas toujours.
Actuellement, le code modifier ne supprime plus les codes mais mon grand souci à présent est que quand je modifie une donnée dans un formulaire, ce dernier (formulaire) vient sans aucune donnée, donc il apparait complétement vide. Alors, je comprends où serait vraiment l'erreur .
 
Pour être explicite, voici le code de modification dans ce même formulaire CLIENT :
 
<?php include("header.php" )?>
<?php  
//----------------------------connection à la base de données
require_once("connectionMYSQL.inc.php" );
 
//----------------------------- requete pour la modification
if(isset($_POST['bouton4'])){
$requete = "UPDATE client SET nom = '".$_POST['nom']."',prenom = '".$_POST['prenom']."',etatcivil = '".$_POST['etatcivil']."',nationalite= '".$_POST['nationalite']."',adresse = '".$_POST['adresse']."',telephone = '".$_POST['telephone']."',occupation = '".$_POST['occupation']."',sexe = '".$_POST['sexe']."'  WHERE IdClient ='".$_POST['IdClient']."' ";
$resultat = mysql_query($requete);
}
//---------------------requete de recherche
 
$requete2 = "SELECT * FROM client WHERE IdClient='".$_POST['IdClient']."'";
$resultat2 = mysql_query($requete2);
$produit = mysql_fetch_array($resultat2);
 
?>
 
 
Et voici le formulaire :
 
 
 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" >
   <head>
       <title>Modification des clients</title>
       <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
    <link href= "style.css" type = "text/css" rel = "stylesheet"/>
    </head>
    <body>
     
    <h2 align= "center">Modification des Clients</h2>
    <form align= "center" id="monform"  name = "form1" method = "post" action="clientUpdate.php" >
    <table>
    <tr>
    <td>IdClient:</td>
    <td><input type="hidden" name="IdClient" value="<?php echo $client['IdClient']; ?>"></td>
    </tr>
     
     <tr>
    <td>Nom:</td>
    <td><input type="text" name="nom" value="<?php echo $client['nom']; ?>"></td>    
    </tr>
     <tr>
    <td>Prenom:</td>
    <td><input type="text" name="prenom" value="<?php echo $client['prenom']; ?>"></td>    
    </tr>
     <tr>
    <td>Etat Civil:</td>
    <td><input type="text" name="etatcivil" value="<?php echo $client['etatcivil']; ?>"></td>    
    </tr>
     <tr>
    <td>Nationalite:</td>
    <td><input type="text" name="nationalite" value="<?php echo $client['nationalite']; ?>"></td>    
    </tr>
     <tr>
    <td>Adresse:</td>
    <td><input type="text" name="adresse" value="<?php echo $client['adresse']; ?>"></td>    
    </tr>
     <tr>
    <td>Telephone:</td>
    <td><input type="text" name="telephone" value="<?php echo $client['telephone']; ?>"></td>    
    </tr>
     <tr>
    <td>Occupation:</td>
    <td><input type="text" name="occupation" value="<?php echo $client['occupation']; ?>"></td>    
    </tr>
     <tr>
    <td>Sexe:</td>
    <td><input type="text" name="sexe" value="<?php echo $client['sexe']; ?>"></td>    
    </tr>
    <tr>
    <td><input type="submit" name="bouton4" value="Modifier"></td>    
    </tr>
    </table>
    </form>
    <?php include("footer.php" )?>
    </body>
    </html>
 
 
Aurai-je glissé une erreur quelque part ?! Aidez-moi s'il vous plait !
Et en plus, est ce qu'il y a un moyen de recevoir la réponse via mon e-mail parce que si j'ai tardé de répondre c'est parce que je pensais avoir votre réponse par e-mail.
 
Je compte sur votre aide encore une fois.
Merci et bonne journée.
 
 
["Avant de goutter au miel, on doit tout d'abord supporter les piqures de l'abeille"]  - Imani.

Reply

Marsh Posté le 25-07-2013 à 11:50:27    

Bonjour imani,
 
La récupération de tes données par le select retourne ta var $resultat2 que tu met dans le tableau $produit :

Citation :

$produit = mysql_fetch_array($resultat2);


 
Puis dans ton formulaire pas la suite, tu parcours le tableau $client pour l'affichage des données au lieu du tableau $produit.
 

Citation :

value="<?php echo $client['IdClient']; ?>">


 
Ce qui devrait devenir :  
 

Citation :

value="<?php echo $produit['IdClient']; ?>">


 
Tu dois donc changer cela dans tout les champs du formulaire ;)


Message édité par intel-44 le 25-07-2013 à 11:51:24

---------------
Cordialement, Intel
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed