Problème mise à jour enregistrement

Fermé
tortue60 Messages postés 250 Date d'inscription jeudi 21 mars 2013 Statut Membre Dernière intervention 1 septembre 2013 - 1 juin 2013 à 22:06
tortue60 Messages postés 250 Date d'inscription jeudi 21 mars 2013 Statut Membre Dernière intervention 1 septembre 2013 - 2 juin 2013 à 23:13
bonjour,

Je suis entrain de réaliser un site et dedans j'ai un formulaire pour mettre des données à jours. Le problème c'est que la requête ne veut pas s'éxécuter pour mettre à jours l'enregistrement.

voici l'erreur: Notice: Undefined variable: sejour in C:\wamp\www\site\sejourModCtlUpdate.php on line 66

script modif:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<?php
session_start();
if (isset($_SESSION["pseudo"]) == false)
{
header("Location:index.php");
}
?>
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<meta http-equiv="Content-Language" content="fr" />
<link rel="stylesheet" href="css/stylesMiseEnPage.css" type="text/css" />
<title>Formulaire de Modification de séjour</title>
<script></script>
</head>
<?php
include("includes/accesBDD.php");
include("includes/utilitaires.php");
?>
<body>
<?php
// début de page et bandeau
include("includes/debutPageEtBandeau.php");
// ajout menu
include("includes/menuAdmin.php");
// ajout actualités
include("includes/actualite.php");
?>

<div id="corps">
<h1 class="titrecentre">Modification des caractéristiques des séjours</h1>
<?php
if(count($_POST)>0)
{
// récupération du pays sélectionné
$pays = $_POST["pays"];
}
else
{
// cas de l'appel du script à partir du menu
$pays="";
}
?>

<form id="sejourajout" action="" method="POST">
<table class="centre">
<tr>
<td>Sélectionnez le pays pour lequel vous souhaitez visualiser les séjours : </td>
<td>
<select name="pays" id="pays" onchange="this.form.submit();">
<option value="">Choisissez le pays</option>
<?php
$requete = "select distinct pays from sejour";
$result = $db->query($requete);
$ligne = $result->fetch_object();

while($ligne != false)
{
$cle = $ligne->pays;
$valeur = $ligne->pays;
if($cle == $pays)
echo"<option value=$cle selected='selected'>$valeur</option>";
else
echo"<option value=$cle>$valeur</option>";

$ligne = $result->fetch_object();
}
?>
</select>
</td>
</tr>
</table>
<br /><br />
<?php
if(isset($_POST['pays']) && $_POST['pays']!="")
{
$requete = "select * from sejour where pays='$pays'";
$result = $db->query($requete);
$nbLigne = $result->num_rows;

if($nbLigne == 0)
{
Echo "<script language='Javascript'>";
Echo "<!--\n"; // le "\n" permet de passer une ligne en Javascript
Echo "alert('Il n'y a pas de séjour pour le pays sélectionné !');\n";
Echo "// -->\n";
Echo "</script\n>";
}
else
{
?>
<table class="quadrille">
<tr>
<th>Intitulé</th>
<th>Pays</th>
<th>Prix</th>
<th>Votre choix</th>
</tr>
<?php
$ligne = $result->fetch_object();
while($ligne!= false)
{
$intitule = $ligne->intitule;
$prix = $ligne->prix;
$id = $ligne->id;

// on affiche le contenu de l'enregistrement obtenu
Echo "<tr><td>".$intitule."</td>";
Echo "<td>".$pays."</td>";
Echo "<td>".$prix."</td>";
Echo "<td><a href='sejourModCtlUpdate.php?id=$id'>Cliquer ici pour modifier le séjour</td></tr>";

$ligne= $result->fetch_object();
}
?>
</table>
<?php
}
}
?>
</div>
<?php
// pied de page
include("includes/piedPage.php");
?>
</body>
</html>

script contrôle update:
<?xml version="1.0" encoding="UTF-8"?>
<!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>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<meta http-equiv="Content-Language" content="fr" />
<link rel="stylesheet" href="css/stylesMiseEnPage.css" type="text/css" />
<title>Formulaire de modification de séjour</title>
<script></script>
</head>
<body>
<?php
include("includes/accesBDD.php");
include("includes/utilitaires.php");
// début de page et bandeau
include("includes/debutPageEtBandeau.php");
// ajout menu
include("includes/menuAdmin.php");
// ajout actualités
include("includes/actualite.php");
?>
<div id="corps">
<?php
if (count($_GET) >0)
{
// --------------------------------------------------------------
// le script est appelé par le script sejourModificationParPays
// --------------------------------------------------------------
// on récupère le n° du séjour passé dans l'url (?id=valeur)
$sejour = $_GET['id'];

// mise en forme de la requête
$requete = "select * from sejour where id=".$sejour;
// appel de la fonction qui permet d'exécuter la requête contenue dans $requete
$result =$db ->query($requete);
// num_rows permet d'obtenir le nombre d'enregistrements retournés par la requête
$nbLigne= $result->num_rows;

// s'il n'y a pas de séjour, on affiche un message d'erreur
if ($nbLigne == 0)
echo ("<script>alert('le séjour n'existe pas ! ')</script>");
else
{
$ligne = $result->fetch_object() ;
$intitule = $ligne->intitule;
$prix = $ligne->prix;
$pays = $ligne->pays;
}
}
if (isset($_POST["valider"]))
{

// -------------------------------------------------------------------------------------------------------------------------
// l'utilisateur a appuyé sur le bouton valider : les données modifiées sont contrôlées et l' enregistrement est mis à jour
//--------------------------------------------------------------------------------------------------------------------------
// création du tableau qui va contenir les erreurs de validité
$tableauErreurs = array();
// appel de la fonction php supEspaceDebutFin
supEspaceDebutFin($_POST);
// appel de la fonction extract
extract ($_POST);
// Appel de la fonction qui vérifie les valeurs du formulaire
verifierSejour($intitule, $pays, $prix, $tableauErreurs);
if (nbErreurs($tableauErreurs)==0)
{
// mise à jour du séjour si les données sont correctes
$requete = "update sejour set intitule = '$intitule', prix=$prix, pays='$pays' where id=$sejour";

$result =$db ->query($requete);
// $result contient le nombre d'enregistrements mis à jour
if ($result == 1)
{
// on affiche un message indiquant que la mise à jour a bien été effectuée
echo ("<script>alert('Le séjour a été mis à jour ! ')</script>");
?>
<!-- affichage des boutons pour réaliser une autre modification -->
<p class="centre">
<a href="sejourModificationMenu.php" >
<input type="button" value="Retourner au menu de modification des séjours"/>
</a><br/><br/>
<a href="sejourModificationParPays.php" >
<input type="button" value="Revenir au formulaire de sélection d'un pays"/>
</a>
</p>
<?php
}
else
{
// si la requête ne retourne aucune ligne, on affiche un message d'erreur
echo ("<script>alert('problème de mise à jour : accès au séjour impossible!')</script>");
}
}
}
if (count($_GET) >0 || (isset($tableauErreurs) && nbErreurs($tableauErreurs)>0))
{
// affichage du formulaire avec les caractéristiques du séjour
// clic sur le séjour ou erreur de modification
// ------------------------------------------------------------
?>
<h1 class="titrecentre">Modification des caractéristiques des séjours</h1>
<form id="sejourmodif" action="sejourModCtlUpdate.php" method="POST" onSubmit="return verifierSejour();">

<?php
include("sejourFormulaire.php");
?>
<!-- le numéro du séjour doit être passé pour la mise à jour : il est passé en champ caché -->
<input type="hidden" name="sejour" id="sejour" size= "30" value="<?php echo ($sejour) ;?>"/>
</form>
<?php
}
?>
<?php
// gestion des erreurs s'il y a lieu
//------------------------------------
if (isset($tableauErreurs) && nbErreurs($tableauErreurs)>0)
{
// affichage d'un message contenant les erreurs rencontrées
$lstErr = listeErreurs($tableauErreurs);
echo("<span class='erreur'>".$lstErr."</span>");
}
?>
</div>

<?php
// pied de page
include("includes/piedPage.php");
?>

</body>
</html>

l'erreur se situe dans la requete update du second script

merci de votre aide

A voir également:

1 réponse

JooS Messages postés 2468 Date d'inscription mardi 22 janvier 2008 Statut Membre Dernière intervention 8 juin 2016 228
2 juin 2013 à 18:42
Salut,

ça dit tout simplement que la variable $sejour n'existe pas au moment ou vous l'appeler.

Or, il n'y a aucun champs se nommant "sejour" dans votre formulaire de mise a jour.
0
tortue60 Messages postés 250 Date d'inscription jeudi 21 mars 2013 Statut Membre Dernière intervention 1 septembre 2013
2 juin 2013 à 18:53
bah si:
<input type="hidden" name="sejour" id="sejour" size= "30" value="<?php echo ($sejour) ;?>"/>
0
JooS Messages postés 2468 Date d'inscription mardi 22 janvier 2008 Statut Membre Dernière intervention 8 juin 2016 228
Modifié par JooS le 2/06/2013 à 22:02
Ok désolé de ne pas avoir lu, mais ça fait trop long !

fait un var_dump* sur ton tableau POST après cette ligne :
supEspaceDebutFin($_POST); 

Dans la partie update biensure.
0
tortue60 Messages postés 250 Date d'inscription jeudi 21 mars 2013 Statut Membre Dernière intervention 1 septembre 2013
2 juin 2013 à 21:25
sa marche pas:
Call to undefined function dump_var()
dump_var($_POST);
0
JooS Messages postés 2468 Date d'inscription mardi 22 janvier 2008 Statut Membre Dernière intervention 8 juin 2016 228
2 juin 2013 à 22:02
var_dump, désolé !
0
tortue60 Messages postés 250 Date d'inscription jeudi 21 mars 2013 Statut Membre Dernière intervention 1 septembre 2013
2 juin 2013 à 22:14
array
'intitule' => string 'Séjour de 5 jours à l\'hôtel des Lauriers Roses à Athènes en penssion complète' (length=84)
'pays' => string 'Grèce' (length=6)
'prix' => string '575.00' (length=6)
'valider' => string 'Ajouter le séjour' (length=18)


il me récupère pas l'id
0