Problème PHP

Résolu/Fermé
killersources Messages postés 23 Date d'inscription lundi 15 juin 2009 Statut Membre Dernière intervention 18 janvier 2014 - 15 juin 2009 à 22:57
killersources Messages postés 23 Date d'inscription lundi 15 juin 2009 Statut Membre Dernière intervention 18 janvier 2014 - 16 juin 2009 à 17:14
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);

?>
A voir également:

7 réponses

Utilisateur anonyme
16 juin 2009 à 11:33
la syntaxe d'une requête SQL update est

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

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
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
Utilisateur anonyme
16 juin 2009 à 14:22
Ca dépend du sgbdd
MySQL le supporte il me semble.
0
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
Utilisateur anonyme > le père
16 juin 2009 à 14:35
exact je viens de tester
0
le père > Utilisateur anonyme
16 juin 2009 à 14:49
Et 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
killersources Messages postés 23 Date d'inscription lundi 15 juin 2009 Statut Membre Dernière intervention 18 janvier 2014
16 juin 2009 à 15:39
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

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
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
killersources Messages postés 23 Date d'inscription lundi 15 juin 2009 Statut Membre Dernière intervention 18 janvier 2014
16 juin 2009 à 16:29
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
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
killersources Messages postés 23 Date d'inscription lundi 15 juin 2009 Statut Membre Dernière intervention 18 janvier 2014
16 juin 2009 à 17:14
UN tout out grand merci à toi, c'etait effectivement au niveau du WHERE que ça clochait....

Super, merci à toi
0