Page 1 sur 1

[RESOLU] Requête "UPDATE" non fonctionnelle.

Posté : 13 oct. 2010, 12:06
par serval92
Bonjour à tous.

Je suis en train de créer un programme PHP-MySQL (excellent choix, n'est-ce pas !).
L'insertion de données fonctionnent (presque-avec bidouilles) parfaitement, mais j'ai un souci avec mes mises à jour (UPDATE).
Je me suis basé sur le livre "PHP 5 Cours et exercices - PHP 5.2 et 5.3" de Jean Engels, aux éditions EYROLLES.
Voici mon programme :
<?php
  if(empty($_POST['code'])){header("Location:majotv.php");}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Mise à jour d'une fiche</title>
<?php include("header.html");?>
</head>

<body>
<div id="page">
<?php include("menu.php");?>
<?php
if($_POST['modif']!='Enregistrer')
{
  //CREATION DU FORMULAIRE
  include('connex.inc.php');
  $code=mysql_escape_string($_POST['code']);
  //Requête SQL
  $idcom=connex('otv','myparam');
  $requete="SELECT * FROM demandes WHERE id='$code' ";
  $result=@mysql_query($requete,$idcom);
  $coord=mysql_fetch_row($result);
  $date1=$coord[4];
  $annee1= substr($date1, 0, 4);
  $mois1 = substr($date1, 5, 2);
  $jour1 = substr($date1, 8, 2);
  $depart1=$jour1. '/' . $mois1 . '/' . $annee1;
  $date2=$coord[5];
  $annee2= substr($date2, 0, 4);
  $mois2 = substr($date2, 5, 2);
  $jour2 = substr($date2, 8, 2);
  $retour1=$jour2. '/' . $mois2 . '/' . $annee2;
  mysql_close($idcom);
  //Création du formulaire
  echo "<form action= \"". $_SERVER['PHP_SELF']."\" method=\"post
  \"enctype=\"application/x-www-form-urlencoded\">";
  echo "<fieldset>";
  echo "<legend><b>Modifiez la fiche</b></legend>";
  echo "<table width=\"300\" border=\"0\">";
  echo "<tr><td>Nom du demandeur : </td><td><input type=\"text\" name=\"nom\"
   value=\"$coord[1]\"/> </td></tr>";
  echo "<tr><td>N° de rue : </td><td><input type=\"text\" name=\"numero
  \" value=\"$coord[2]\"/></td></tr>";
  echo "<tr><td>Adresse : </td><td><input type=\"text\" name=\"adresse\"
   value=\"$coord[3]\"/></td></tr>";
  echo "<tr><td>Date de départ : </td><td><input type=\"text\" name=\"depart\" class=\"datepicker\" value=\"$depart1\"/></td></tr>";
  echo "<tr><td>Date de retour : </td><td><input type=\"text\" name=\"retour\" class=\"datepicker\" value=\"$retour1\"/></td></tr>";
  echo "<tr><td>Téléphone : </td><td><input type=\"text\" name=\"tel\"
  value=\"$coord[6]\"/></td></tr>";
  echo "<tr><td>Alarme : </td><td><input type=\"text\" name=\"alarme\"  value=\"$coord[7]\"/></td></tr>";
  echo "<tr><td>Cambriolage : </td><td><input type=\"text\" name=\"camb\"  value=\"$coord[8]\"/></td></tr>";
  echo "<tr><td><input type=\"reset\" value=\" Effacer \"></td><td><input 
  type=\"submit\" name=\"modif\" value=\"Enregistrer\"></td></tr></table>";
  echo "</fieldset>";
  echo "<input type=\"hidden\" name=\"code\"  value=\"$code\"/>";
  echo "</form>";
}
if(isset($_POST['nom'])&& isset($_POST['numero'])&& isset($_POST['adresse'])&& isset($_POST['depart'])&& isset($_POST['retour'])&& isset($_POST['tel']))
{
  //ENREGISTREMENT
  include('connex.inc.php');
  $nom=mysql_escape_string($_POST['nom']);
  $numero=mysql_escape_string($_POST['numero']);
  $adresse=mysql_escape_string($_POST['adresse']);
  $date3=$_POST['depart'];
  $annee3 = substr($date3, 6, 4);
	$mois3 = substr($date3, 3, 2);
	$jour3 = substr($date3, 0, 2);
	$depart=$annee3. '-' . $mois3 . '-' . $jour3;
  $date4=$_POST['retour'];
	$annee4 = substr($date4, 6, 4);
	$mois4 = substr($date4, 3, 2);
	$jour4 = substr($date4, 0, 2);
	$retour=$annee4. '-' . $mois4 . '-' . $jour4;
  $tel=mysql_escape_string($_POST['tel']);
  $alarme=mysql_escape_string($_POST['alarme']);
  $camb=mysql_escape_string($_POST['camb']);
  $code=mysql_escape_string($_POST['code']);
  //Requête SQL
  $requete="UPDATE demandes SET nom='$nom',numero='$numero',adresse='$adresse',depart='$depart',retour='$retour',tel='$tel',alarme='$alarme',camb='$camb' WHERE id='$code'";
  $idcom=connex('otv','myparam');
  $result=mysql_query($requete,$idcom);
  mysql_close($idcom);
  if(!$result)
  {
    echo "<script type=\"text/javascript\">
    alert('Erreur : ".mysql_error()."')</script>";
  }
  else
  {
    echo "<script type=\"text/javascript\"> alert('Vos modifications sont enregistrées');window.location='index.htm';</script>";
  }
}
else
{
  echo "<h2>Modifiez les informations</h2>";
}
?>
L'appel du formulaire fonctionne, je me retrouve avec mes champs préremplis.
Par contre, dès que je valide, aucune mise à jour sur MySQL ne s'opère. Je n'ai d'ailleurs aucun message d'erreur.

Si vous pouviez jeter un coup d'oeil à mon code...

Je vous remercie de votre attention.

Fabien.

Re: Requête "UPDATE" non fonctionnelle.

Posté : 13 oct. 2010, 13:05
par xTG
Affiches la variable $code et vérifies qu'elle est bonne dans tes deux conditions.

Re: Requête "UPDATE" non fonctionnelle.

Posté : 13 oct. 2010, 17:11
par serval92
Merci de votre intérêt.
Le code s'affiche correctement dans le formulaire, en changeant le champs hidden en text.
Par contre, à la soumission du formulaire, je suis redirigé vers "majotv.php". Un conflit entre les variables en serait peut-être à l'origine !?

Re: Requête "UPDATE" non fonctionnelle.

Posté : 13 oct. 2010, 21:20
par Ryle
Dans la balise de ton formulaire, essaye d'enlever l'espace entre le "=" et la valeur de l'attribut action :
action= \"". $_SERVER['PHP_SELF']."\"

Re: Requête "UPDATE" non fonctionnelle.

Posté : 13 oct. 2010, 21:21
par stealth35
voir rien mettre dans le action PHP_SELF ca pose des soucis

[RESOLU] Requête "UPDATE" non fonctionnelle.

Posté : 14 oct. 2010, 10:29
par serval92
Merci de votre attention.

J'ai trouvé la solution : un espace en trop, mais pas au niveau du PHP_SELF mais ici :
echo "<tr><td>N° de rue : </td><td><input type=\"text\" name=\"numero
  \" value=\"$coord[2]\"/></td></tr>";
Il y avait un espace entre "numero" et "\". Comme quoi, il faut tout mettre sur une même ligne...

Merci encore pour votre aide.