Je viens d´acheter le livre " Pratique de MySQL et PHP" édité par O´Reilly que certain d´entre vous connaissent peut-être.
Je ne suis pas novice en programmation puisque c´est mon métier depuis 10 ans, mais je le suis en ce qui concerne le développement web.
Je viens de m´attaquer à la mise à jour d´une base par formulaire et j´ai un bug alors que j´utilise le source donné par le bouquin.
Description :
Le 1er fichier PHP affiche une table où pour chaque enregistrement on a une ancre " modifier" pour, comme son nom l´indique, modifier l´enregistrement. En base de page on a une dernière ancre " ajouter", pour ajouter un enregistrement à la table.
L´ajout et la modification d´enregistrement utilise le même formulaire mais avec différents paramètres. La modification fonctionne mais l´ajout bug.
Je vous donne ci dessous le code :
//------------------------------------------------
------------------------------
( FilmSimple.sql)
- Création d´une table ´FilmSimple´
USE Films;
CREATE TABLE FilmSimple
( Titre VARCHAR ( 30),
Annee INTEGER,
NomMES VARCHAR ( 30),
PrenomMES VARCHAR ( 30),
AnneeNaiss INTEGER
)
;
//------------------------------------------------
------------------------------
( FilmSimple.php)
< HTML>
< HEAD>
< TITLE>Opérations sur la table FilmSimple</TITLE>
< LINK REL=stylesheet HREF=´films.css´ TYPE=´text/css´>
< /HEAD>
< BODY>
< H1>Opérations sur la table < I>FilmSimple</I></H1>
< ?php
require_once ( "Fonctions/UtilFilmSimple.php");
$connexion = Connexion ( NOM, PASSE, BASE, SERVEUR);
/ / Si la variable ´action´ existe, des données ont été saisies dans le formulaire: on déclenche
/ / une insertion ou modification dans la base selon le mode passé dans le tableau _POST
if ( isSet($_POST[´action´]))
{
/ / Contrôle des données
if ( ControleFilm ( $_POST))
MAJFilmSimple($_POST[´mode´], $_POST, $connexion);
/ / Erreur rencontrée : sortie prématurée du script
else
{
echo " </BODY></HTML>";
exit;
}
}
/ / Affichage selon le mode passé dans le tableau _GET
if ( !isSet($_GET[´mode´]))
{
/ / Pas de mode défini : on affiche le tableau des films
TableauFilms ( $connexion);
/ / On place une ancre pour ajouter un film
echo " <A HREF=´FilmSimple.php?mode=" . MODE_INSERTION
. " ´>Ajouter un film</A>\n";
}
elseif ( $_GET[´mode´] == MODE_INSERTION)
{
/ / Affichage du formulaire, sans valeurs par défaut
FormFilmSimple ( MODE_INSERTION, array());
}
/ / On est en mode modification: on recherche les valeurs courantes pour s´en servir par défaut
else
{
$requete = " SELECT * FROM FilmSimple WHERE Titre=´{$_GET[´titre´]}´ " ;
$resultat = ExecRequete ( $requete, $connexion);
$film = LigneSuivante ( $resultat);
FormFilmSimple ( MODE_MAJ, $film);
}
? >
< /BODY>
< /HTML>
//------------------------------------------------
------------------------------
( FormFilmSimple.php)
< ?php
/ / Formulaire de saisie, avec valeurs par défaut
function FormFilmSimple ( $mode, $valDefaut)
{
? >
< !-- On est en HTML -->
< TABLE>
< FORM ACTION=´FilmSimple.php´ METHOD=´POST´><P>
< INPUT TYPE=HIDDEN NAME="action" VALUE="FormFilmSimple">
< INPUT TYPE=HIDDEN NAME="mode" VALUE="<?= $mode ? >">
< ?php if ( $mode == MODE_INSERTION) { ? >
< TR><TD>Titre : < TD><INPUT TYPE=TEXT SIZE=20 NAME="Titre" VALUE="<?= $valDefaut[´Titre´]?>">
< ?php } else { ? >
< TR><TD>Mise à jour de < TD><?= $valDefaut[´Titre´]?><INPUT TYPE=HIDDEN NAME="Titre" VALUE="<?= $valDefaut[´Titre´]?>">
< ?php } ? >
< TR><TD>Année : < TD><INPUT TYPE=TEXT SIZE=4 MAXLENGTH=4 NAME="Annee" VALUE="<?= $valDefaut[´Annee´]?>">
< TR><TD>Metteur en scène ( prénom - nom) :
< TD><INPUT TYPE=TEXT SIZE=20 NAME="PrenomMES" VALUE="<?= $valDefaut[´PrenomMES´]?>"><BR>
< INPUT TYPE=TEXT SIZE=20 NAME="NomMES" VALUE="<?= $valDefaut[´NomMES´]?>">
< TR><TD>Année de naissance : < TD><INPUT TYPE=TEXT SIZE=4 MAXLENGTH=4 NAME="AnneeNaiss" VALUE="<?= $valDefaut[´AnneeNaiss´]?>">
< TR><TD COLSPAN=2><INPUT TYPE=SUBMIT VALUE=´Exécuter´>
< /FORM>
< /TABLE>
< ?php
}
? >
Et voici le code html de la page résultat
//------------------------------------------------
------------------------------
< HTML>
< HEAD>
< TITLE>Opérations sur la table FilmSimple</TITLE>
< LINK REL=stylesheet HREF=´films.css´ TYPE=´text/css´>
< /HEAD>
< BODY>
< H1>Opérations sur la table < I>FilmSimple</I></H1>
< !-- On est en HTML -->
< TABLE>
< FORM ACTION=´FilmSimple.php´ METHOD=´POST´><P>
< INPUT TYPE=HIDDEN NAME="action" VALUE="FormFilmSimple">
< INPUT TYPE=HIDDEN NAME="mode" VALUE="insertion">
< TR><TD>Titre : < TD><INPUT TYPE=TEXT SIZE=20 NAME="Titre" VALUE="<br / >
< b>Notice</b>: Undefined index: Titre in < b>c:\program files\easy php - v1.7\www\pratique_de_ mysql_et_php\ma_
base_de_données_films\Fonctions\FormFilmSimple.php
</b> on line < b>17</b><br / >
" >
< TR><TD>Année : < TD><INPUT TYPE=TEXT SIZE=4 MAXLENGTH=4 NAME="Annee" VALUE="<br / >
< b>Notice</b>: Undefined index: Annee in < b>c:\program files\easy php - v1.7\www\pratique_de_ mysql_et_php\ma_
base_de_données_films\Fonctions\FormFilmSimple.php
</b> on line < b>22</b><br / >
" >
< TR><TD>Metteur en scène ( prénom - nom) :
< TD><INPUT TYPE=TEXT SIZE=20 NAME="PrenomMES" VALUE="<br / >
< b>Notice</b>: Undefined index: PrenomMES in < b>c:\program files\easy php - v1.7\www\pratique_de_ mysql_et_php\ma_
base_de_données_films\Fonctions\FormFilmSimple.php
</b> on line < b>25</b><br / >
" ><BR>
< INPUT TYPE=TEXT SIZE=20 NAME="NomMES" VALUE="<br / >
< b>Notice</b>: Undefined index: NomMES in < b>c:\program files\easy php - v1.7\www\pratique_de_ mysql_et_php\ma_
base_de_données_films\Fonctions\FormFilmSimple.php
</b> on line < b>26</b><br / >
" >
< TR><TD>Année de naissance : < TD><INPUT TYPE=TEXT SIZE=4 MAXLENGTH=4 NAME="AnneeNaiss" VALUE="<br / >
< b>Notice</b>: Undefined index: AnneeNaiss in < b>c:\program files\easy php - v1.7\www\pratique_de_ mysql_et_php\ma_
base_de_données_films\Fonctions\FormFilmSimple.php
</b> on line < b>28</b><br / >
" >
< TR><TD COLSPAN=2><INPUT TYPE=SUBMIT VALUE=´Exécuter´>
< /FORM>
< /TABLE>
< /BODY>
< /HTML>
L´un d´entre vous peut-il m´aider ? Ca fait déjà 3 jours que je tourne et retourne le problême sans résultat.