Problème PHP

Résolu
Bonjour à tous,

Je coince sur un formulaire qui permet de modifier les données d'une table.
Il n'enregistre pas les modifications et je ne trouve pas la solution...

La fonction supprimer fonctionne quant à elle très bien.

Voici mon code:

<?php

include ("variables.inc.php");
include ("identification.inc.php");

$liendb = mysql_connect ("localhost", "", "");
mysql_select_db ("");

if ($_REQUEST['action']=="modifier")
{

if ($_REQUEST['contrat']!="oui" &&
$_REQUEST['contrat']!="non")
die("ERREUR : Définir le contrat");

$sql = "UPDATE FROM clients SET Societe = '".$_REQUEST['nom']."',".
"Adresse = '".$_REQUEST['adresse']."',".
"codepostal = '".$_REQUEST['cp']."',".
"ville = '".$_REQUEST['ville']."',".
"telephone = '".$_REQUEST['tel']."',".
"fax = '".$_REQUEST['fax']."',".
"tva = '".$_REQUEST['tva']."',".
"responsable = '".$_REQUEST['responsable']."',".
"contrat = '".$_REQUEST['contrat']."',".
"nbremachine = '".$_REQUEST['machine']."',".
"prix = '".$_REQUEST['prix']."',".
"nbrevisite = '".$_REQUEST['visite']."',".
"indice = '".$_REQUEST['indice']."',".
" WHERE id_client = '".$_REQUEST['id']."'";

mysql_query ($sql);
}
elseif ($_REQUEST['action']=="suppr" && $_REQUEST['id']>=1)
{
$sql = "DELETE FROM clients WHERE id_client='".$_REQUEST['id']."'";
mysql_query ($sql);
header("Location: admin.php");
}

include("haut.inc.php");

echo "<p align=left> Fiche client    [".$_REQUEST['id']."]</p>";

$sql = "SELECT * FROM clients WHERE id_client='".$_REQUEST['id']."'";
$resultat = mysql_query ($sql);
$clients = mysql_fetch_array ($resultat)

?>

<form action="clients_edit.php" method="post">
<input type="hidden" name="enregistre" value="oui" />
<input type="hidden" name="id" value="<?php echo $_REQUEST['id']; ?>" />

<table width="600">
<tr>
<td width="200">Socété</td>
<td width="400"><input name="nom" type="text" value="<?php echo $clients['Societe']; ?>" size="20" /></td>
</tr>
<tr>
<td>Adresse</td>
<td><textarea name="adresse" cols="60"><?php echo $clients['Adresse']; ?></textarea></td>
</tr>
<tr>
<td>Code Postal</td>
<td><input type="text" name="cp" value="<?php echo $clients['codepostal']; ?>" /></td>
</tr>
<tr>
<td>Ville</td>
<td><input type="text" name="ville" value="<?php echo $clients['ville']; ?>" /></td>
</tr>
<tr>
<td>Teléphone</td>
<td><input type="text" name="tel" value="<?php echo $clients['telephone']; ?>" /></td>
</tr>
<tr>
<td>Fax</td>
<td><input type="text" name="fax" value="<?php echo $clients['fax']; ?>" /></td>
</tr>
<tr>
<td>TVA</td>
<td><input type="text" name="tva" value="<?php echo $clients['tva']; ?>" /></td>
</tr>
<tr>
<td>Nom du responsable</td>
<td><input type="text" name="responsable" value="<?php echo $clients['responsable']; ?>" /></td>
</tr>
<tr>
<td>contrat</td>
<td>
Oui <input type="radio" name="contrat" value="oui"
<?php if ($clients['contrat'] == "oui") echo "CHECKED"; ?>> -
Non <input type="radio" name="contrat" value="non"
<?php if ($clients['contrat'] == "non") echo "CHECKED"; ?>>
</td>
</tr>
<tr>
<td>Nombre de machines</td>
<td><input type="text" name="machine" value="<?php echo $clients['nbremachine']; ?>" /></td>
</tr>
<tr>
<td>Prix du contrat</td>
<td><input type="text" name="prix" value="<?php echo $clients['prix']; ?>" /></td>
</tr>
<tr>
<td>Nombre de visite annuelle</td>
<td><input type="text" name="visite" value="<?php echo $clients['nbrevisite']; ?>" /></td>
</tr>
<tr>
<td>Indice de départ</td>
<td><input type="text" name="indice" value="<?php echo $clients['indice']; ?>" /></td>
</tr>
</table>

<br/>

<select name="action">
<option value="modifier"> Enregistrer la fiche </option>
<option value="suppr"> Supprimer la fiche </option>
</select>

<input type="submit" value="effectuer">

</form>

</body>
</html>

<?php

mysql_close ($liendb);

?>
Configuration: Windows Vista Internet Explorer 7.0

7 réponses

  1. la syntaxe d'une requête SQL update est

    UPDATE "nom de table"
    SET "colonne 1" = [nouvelle valeur]
    WHERE {condition}

    1
    1. Avec des accents graves `autour des noms de tables et de champs, parce qu'avec les doubles quotes ça ne va pas marcher ;)
      0
  2. Bonjour

    Je n'ai pas regardé plus loin, il y a peut être autre chose :
    "UPDATE FROM clients SET Societe = '".$_REQUEST['nom']."',". ...
    il ne faut as de FROM
    0
    1. Ca dépend du sgbdd
      MySQL le supporte il me semble.
      0
      1. D'après le code, c'est mysql. Et mysql ne le supporte pas, ça c'est sûr. il utilise les simples et doubles quotes pour les valeurs, et les accents graves pour les noms de tables et de champs.
        0
      2. @le pèreexact je viens de tester
        0
      3. @Utilisateur anonymeEt surtout, c'est écrit dans le manuel de référence. Car avec des tests, on fait facilement des conclusions erronées. Il n'y a qu'à voir (par exemple) le nombre de gens dans ce forum qui disent qu'il est interdit de mettre des espaces dans les noms de table ou de champ.
        0
    2. Merci à vous de prendre du temps pour m'aider.

      J'ai ajouter les ' autours des champs comme vous me l'avez dit mais il n'enregistre tjs pas les modifs.....

      J'ai oublié de préciser que je suis un super débutant et que ça fait plusieurs jours que je me bats avec ce truc.
      Encore merci pour votre aide.

      Voici le code modifier :

      <?php

      include ("variables.inc.php");
      include ("identification.inc.php");

      $liendb = mysql_connect ("localhost", "", "");
      mysql_select_db ("");

      if ($_REQUEST['action']=="modifier")
      {

      if ($_REQUEST['contrat']!="oui" &&
      $_REQUEST['contrat']!="non")
      die("ERREUR : Définir le contrat");

      $sql = "UPDATE 'clients' SET 'Societe' = '".$_REQUEST['nom']."',".
      "'Adresse' = '".$_REQUEST['adresse']."',".
      "'codepostal' = '".$_REQUEST['cp']."',".
      "'ville' = '".$_REQUEST['ville']."',".
      "'telephone' = '".$_REQUEST['tel']."',".
      "'fax' = '".$_REQUEST['fax']."',".
      "'tva' = '".$_REQUEST['tva']."',".
      "'responsable' = '".$_REQUEST['responsable']."',".
      "'contrat' = '".$_REQUEST['contrat']."',".
      "'nbremachine' = '".$_REQUEST['machine']."',".
      "'prix' = '".$_REQUEST['prix']."',".
      "'nbrevisite' = '".$_REQUEST['visite']."',".
      "'indice' = '".$_REQUEST['indice']."',".
      " WHERE 'id_client' = '".$_REQUEST['id']."'";

      mysql_query ($sql);
      }
      elseif ($_REQUEST['action']=="suppr" && $_REQUEST['id']>=1)
      {
      $sql = "DELETE FROM clients WHERE id_client='".$_REQUEST['id']."'";
      mysql_query ($sql);
      header("Location: admin.php");
      }

      include("haut.inc.php");

      echo "<p align=left> Fiche    [".$_REQUEST['id']."]</p>";

      $sql = "SELECT * FROM clients WHERE id_client='".$_REQUEST['id']."'";
      $resultat = mysql_query ($sql);
      $clients = mysql_fetch_array ($resultat)

      ?>

      <form action="clients_edit.php" method="post">
      <input type="hidden" name="enregistre" value="oui" />
      <input type="hidden" name="id" value="<?php echo $_REQUEST['id']; ?>" />

      <table width="600">
      <tr>
      <td width="200">Socété</td>
      <td width="400"><input name="nom" type="text" value="<?php echo $clients['Societe']; ?>" size="20" /></td>
      </tr>
      <tr>
      <td>Adresse</td>
      <td><textarea name="adresse" cols="60"><?php echo $clients['Adresse']; ?></textarea></td>
      </tr>
      <tr>
      <td>Code Postal</td>
      <td><input type="text" name="cp" value="<?php echo $clients['codepostal']; ?>" /></td>
      </tr>
      <tr>
      <td>Ville</td>
      <td><input type="text" name="ville" value="<?php echo $clients['ville']; ?>" /></td>
      </tr>
      <tr>
      <td>Teléphone</td>
      <td><input type="text" name="tel" value="<?php echo $clients['telephone']; ?>" /></td>
      </tr>
      <tr>
      <td>Fax</td>
      <td><input type="text" name="fax" value="<?php echo $clients['fax']; ?>" /></td>
      </tr>
      <tr>
      <td>TVA</td>
      <td><input type="text" name="tva" value="<?php echo $clients['tva']; ?>" /></td>
      </tr>
      <tr>
      <td>Nom du responsable</td>
      <td><input type="text" name="responsable" value="<?php echo $clients['responsable']; ?>" /></td>
      </tr>
      <tr>
      <td>contrat</td>
      <td>
      Oui <input type="radio" name="contrat" value="oui"
      <?php if ($clients['contrat'] == "oui") echo "CHECKED"; ?>> -
      Non <input type="radio" name="contrat" value="non"
      <?php if ($clients['contrat'] == "non") echo "CHECKED"; ?>>
      </td>
      </tr>
      <tr>
      <td>Nombre de machines</td>
      <td><input type="text" name="machine" value="<?php echo $clients['nbremachine']; ?>" /></td>
      </tr>
      <tr>
      <td>Prix du contrat</td>
      <td><input type="text" name="prix" value="<?php echo $clients['prix']; ?>" /></td>
      </tr>
      <tr>
      <td>Nombre de visite annuelle</td>
      <td><input type="text" name="visite" value="<?php echo $clients['nbrevisite']; ?>" /></td>
      </tr>
      <tr>
      <td>Indice de départ</td>
      <td><input type="text" name="indice" value="<?php echo $clients['indice']; ?>" /></td>
      </tr>
      </table>

      <br/>

      <select name="action">
      <option value="modifier"> Enregistrer la fiche </option>
      <option value="suppr"> Supprimer la fiche </option>
      </select>

      <input type="submit" value="effectuer">

      </form>

      </body>
      </html>

      <?php

      mysql_close ($liendb);

      ?>
      0
      1. J'ai ajouter les ' autours des champs comme vous me l'avez dit
        SURTOUT PAS ! ce n'est pas ce que nous avons dit, et ce n'est pas ce qu'il faut faire.
        Il faut des accents graves ` autour des noms de champs et de table (ou rien du tout si tu utilises des noms sans espaces et qui ne sont pas des mots réservés de mysql)
        et utilise $_POST plutôt que $REQUEST, si tu sais que tes données viennent par POST

        $sql = "UPDATE clients SET Societe = '".$_POST['nom']."',".
        "Adresse = '".$_POST['adresse']."',".

        etc...
        il faudrait de plus échapper les variables avec mysql_real_escape_string, mais on ne va pas trop te casser les pieds pour commencer ;)
        0
        1. Sorry pour la meprise pour les accents.
          J'ai tout enlever et j'ai utiliser $_POST mais toujours pas d'enregistrement.
          Merci pour ton aide.

          Voici le code actuel:

          <?php

          include ("variables.inc.php");
          include ("identification.inc.php");

          $liendb = mysql_connect ("localhost", "", "");
          mysql_select_db ("");

          if ($_REQUEST['action']=="maj")
          {

          if ($_REQUEST['contrat']!="oui" &&
          $_REQUEST['contrat']!="non")
          die("ERREUR : Définir le contrat");

          $sql = "UPDATE clients SET Societe = '".$_POST['nom']."',".
          "Adresse = '".$_POST['adresse']."',".
          "codepostal = '".$_POST['cp']."',".
          "ville = '".$_POST['ville']."',".
          "telephone = '".$_POST['tel']."',".
          "fax = '".$_POST['fax']."',".
          "tva = '".$_POST['tva']."',".
          "responsable = '".$_POST['responsable']."',".
          "contrat = '".$_POST['contrat']."',".
          "nbremachine = '".$_POST['machine']."',".
          "prix = '".$_POST['prix']."',".
          "nbrevisite = '".$_POST['visite']."',".
          "indice = '".$_POST['indice']."',".
          " WHERE id_client = '".$_POST['id']."'";

          mysql_query ($sql);
          }
          elseif ($_REQUEST['action']=="suppr" && $_REQUEST['id']>=1)
          {
          $sql = "DELETE FROM clients WHERE id_client='".$_REQUEST['id']."'";
          mysql_query ($sql);
          header("Location: admin.php");
          }

          include("haut.inc.php");

          echo "<p align=left> Fiche client    [".$_REQUEST['id']."]</p>";

          $sql = "SELECT * FROM clients WHERE id_client='".$_REQUEST['id']."'";
          $resultat = mysql_query ($sql);
          $clients = mysql_fetch_array ($resultat)

          ?>

          <form action="clients_edit.php" method="post">
          <input type="hidden" name="enregistre" value="oui" />
          <input type="hidden" name="id" value="<?php echo $_REQUEST['id']; ?>" />

          <table width="600">
          <tr>
          <td width="200">Socété</td>
          <td width="400"><input name="nom" type="text" value="<?php echo $clients['Societe']; ?>" size="20" /></td>
          </tr>
          <tr>
          <td>Adresse</td>
          <td><textarea name="adresse" cols="60"><?php echo $clients['Adresse']; ?></textarea></td>
          </tr>
          <tr>
          <td>Code Postal</td>
          <td><input type="text" name="cp" value="<?php echo $clients['codepostal']; ?>" /></td>
          </tr>
          <tr>
          <td>Ville</td>
          <td><input type="text" name="ville" value="<?php echo $clients['ville']; ?>" /></td>
          </tr>
          <tr>
          <td>Teléphone</td>
          <td><input type="text" name="tel" value="<?php echo $clients['telephone']; ?>" /></td>
          </tr>
          <tr>
          <td>Fax</td>
          <td><input type="text" name="fax" value="<?php echo $clients['fax']; ?>" /></td>
          </tr>
          <tr>
          <td>TVA</td>
          <td><input type="text" name="tva" value="<?php echo $clients['tva']; ?>" /></td>
          </tr>
          <tr>
          <td>Nom du responsable</td>
          <td><input type="text" name="responsable" value="<?php echo $clients['responsable']; ?>" /></td>
          </tr>
          <tr>
          <td>contrat</td>
          <td>
          Oui <input type="radio" name="contrat" value="oui"
          <?php if ($clients['contrat'] == "oui") echo "CHECKED"; ?>> -
          Non <input type="radio" name="contrat" value="non"
          <?php if ($clients['contrat'] == "non") echo "CHECKED"; ?>>
          </td>
          </tr>
          <tr>
          <td>Nombre de machines</td>
          <td><input type="text" name="machine" value="<?php echo $clients['nbremachine']; ?>" /></td>
          </tr>
          <tr>
          <td>Prix du contrat</td>
          <td><input type="text" name="prix" value="<?php echo $clients['prix']; ?>" /></td>
          </tr>
          <tr>
          <td>Nombre de visite annuelle</td>
          <td><input type="text" name="visite" value="<?php echo $clients['nbrevisite']; ?>" /></td>
          </tr>
          <tr>
          <td>Indice de départ</td>
          <td><input type="text" name="indice" value="<?php echo $clients['indice']; ?>" /></td>
          </tr>
          </table>

          <br/>

          <select name="action">
          <option value="maj"> Enregistrer la fiche </option>
          <option value="suppr"> Supprimer la fiche </option>
          </select>

          <input type="submit" value="effectuer">

          </form>

          </body>
          </html>

          <?php

          mysql_close ($liendb);

          ?>
          0
      2. mysql_query ($sql) or die (mysql_error()); pour voir une éventuelle erreur.
        Mais j'ai bien l'impression qu'il y a une virgule en trop juste avant le WHERE
        0
        1. UN tout out grand merci à toi, c'etait effectivement au niveau du WHERE que ça clochait....

          Super, merci à toi
          0