Validation de ma page php - PHP - Programmation
Marsh Posté le 05-07-2010 à 16:25:29
"if (!empty($_POST['ok']))"
OK, c'est ton bouton? Si c'est le cas alors sache que ce test n,est pas bon. Quand on valide un formulaire avec la touche entré, aucun bouton n'est cliqué et du coup aucun identifiant de bouton n'est envoyé par le navigateur. Si tu veux savoir si on a remplis un formulaire alors il vaut mieux que tu regardes, soit le nombre de valeurs présentes dans "$_POST" soit la présence d'un des éléments du formulaire. Ca sera plus fiable.
En dehors de ce détail, ton code à l'air bon.
Marsh Posté le 05-07-2010 à 16:35:28
Personnellement, je n'aime pas beaucoup les *_once().
A moins d'avoir une structure compliquée ou inconnue (??) et de ne pas être certain de ne pas avoir inclus deux fois le même fichier, ces fonctions forces inutilement php à contrôler si le fichier n'a pas déjà été inclut.
Par ailleurs, j'ai une préférence pour require() plutôt que include(). La première génère une erreur et stop l'exécution du script alors que la seconde ne fait que générer un warning.
Sinon, tu affiches les erreurs en cas d'échec des requêtes à la DB. A priori, en production, on ne devrait pas les afficher. Le mieux étant de les logger dans un fichier.
Bon... Je suis peut-être un peu pointilleux, mais prendre des bonnes habitudes dès le début est une bonne chose. D'ailleurs je remarque que tu as utilisé PDO, ce que malheureusement peu de débutantss font, donc tu es vraisemblablement sur la bonne voie !
Marsh Posté le 05-07-2010 à 16:48:55
Pour ma part, je préfère les "_once" à la version sans. C'est pas le peu de ressource perdu qui change grand chose et quand on commence à bosser sur un projet important, on a vite fait d'oublier qu'un fichier donné peut être appelé par tel et tel autre.
Certe quand le site ne fait que 3-4 fichiers, on en a pas besoin, mais quand on a un site sous forme modulaire, ça sauve par mal de temps de ne pas avoir à ce soucier des fichiers déjà chargé par un autre module.
Marsh Posté le 05-07-2010 à 16:53:05
Ce n'est effectivement pas pour gagner en ressources, mais juste pour le principe ça me dérange.
Dans une structure modulaire, pourquoi pas oui. Mais en l'occurrence : non.
Marsh Posté le 06-07-2010 à 10:34:18
Ce qui me dérange surtout dans ton code, c'est les requêtes SQL au milieu de la page. Tu devrais les faire avant toute sortie, pour séparer les couches bdd/affichage
Marsh Posté le 06-07-2010 à 18:48:51
Merci à tous pour vos retours. C'est encourageant.
luc@s : tu dis que ça te semble étrange ces SELECT en plein milieu de la page. Que veux tu dire exactement ? C'est pas trés propre ? J'ai tenté de faire des include , mais je trouvais que ça alourdissait.
DOminique
Marsh Posté le 06-07-2010 à 19:40:32
Je veux dire tu pourrais faire comme ça plutôt :
Code :
|
Marsh Posté le 06-07-2010 à 21:22:22
ah , ok, j'ai compris. Tu veux dire qu'il vaut mieux faire de l'html dans lequel on intègre des petits bouts de php, au lieu de faire du php dans lequel on écrit de l'html.... (bref je me comprends)... Mais tu as raison c'est plus lisible. Merci pour ce conseil. Dominique.
Marsh Posté le 06-07-2010 à 23:04:07
pas besoin de faire une boucle
Code :
|
Marsh Posté le 03-07-2010 à 15:58:10
Bonjour
J'ai réussi à faire 2 pages en php :
- 1 page qui affiche une liste
- 1 page qui permet de modifier un element de la liste OU de créer un nouveua élément de la liste.
Ces 2 pages fonctionnent (j'ai en ai bavé qd même pour tout comprendre ...). J'ai utilisé du pdo, du mysql, du css.
J'aurai aimé avoir vos avis. Est ce que c'est bien fait ? Est ce la bonne méthode ?
Merci beaucoup . DOminique
page de la liste :
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" >
<head>
<title>Mon super site</title>
<link rel="stylesheet" media="screen" type="text/css" title="Design" href="css/style.css" />
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
</head>
<body>
<?php include_once("include/en_tete.php" ); ?>
<?php include_once("include/menu.php" ); ?>
<div id="corps">
<h1>Liste des équipes</h1>
<a href="formulaire_equipe.php"><alt="créer une équipe" title="créer" />créer équipe</a>
<br /><br/>
<table>
<thead><tr><th>Id</th><th>Nom court</th><th>Nom long</th><th>Date creation</th><th>Logo</th><th>Nom logo</th><th colspan=2>Actions</th></tr></thead>
<tbody>
<?php
// requete de la liste des équipes
include ("include/connection.php" );
$Resultat = $bdd->query('SELECT id_equipe, nom_court, nom_long, date_creation, logo, nom_logo from equipe');
// construction du tableau des équipes
while ($donnees = $Resultat->fetch())
{
echo '<tr><td>';
echo $donnees['id_equipe'];
echo '</td><td>';
echo $donnees['nom_court'];
echo '</td><td>';
echo $donnees['nom_long'];
echo '</td><td>';
echo $donnees['date_creation'];
echo '</td><td>';
// echo $donnees['logo'];
echo '<img src="logos/'.$donnees['nom_logo'].'" title = "dynamique" />';
// echo '<img src="logos/118-10-1.jpg" title="en dur" />';
echo '</td><td>';
echo $donnees['nom_logo'];
echo '</td><td>';
echo '<a href="formulaire_equipe.php?id_equipe='.$donnees['id_equipe']. '"><img src ="image/edit.png" alt="update" title="modifier" /></a>';
echo '</td><td>';
echo '<a href="delete_equipe.php?id_equipe='.$donnees['id_equipe']. '" onclick="return confirm(\'Suppression ?\');"><img src ="image/delete.png" alt="supprimer" title="supprimer" /> </a>';
echo '</td></tr>';
}
?>
</tbody>
</table>
</div>
<?php include_once("include/pied_page.php" ); ?>
</body>
</html>
et page de l'ajout ou création d'un élement :
<?php
include_once("include/connection.php" );
// si l'id est connu ==> cas de la modif
if (!empty($_GET['id_equipe'])) // recupération des données à afficher
{
$Requete = $bdd->prepare('SELECT id_equipe, nom_court, nom_long, date_creation,logo, nom_logo from equipe where id_equipe = ?') or die(print_r($bdd->errorInfo()));
$Requete->execute(array($_GET['id_equipe']));
$donnees=$Requete->fetch();
$id_equipe = $donnees['id_equipe'];
$nom_court = $donnees['nom_court'];
$nom_long = $donnees['nom_long'];
$date_creation = $donnees['date_creation'];
$logo = $donnees['logo'];
$nom_logo = $donnees['nom_logo'];
}
else
{
$nom_court = '';
$nom_long = '';
$date_creation = '';
$logo = '';
$nom_logo = '';
}
if (!empty($_POST['ok'])) // formulaire saisi
{
include_once("include/upload.php" ); // traitement de l'image ==> le nom de l'image téléchargés est dans $fichier
if (!empty($_POST['id_equipe'])) // cas de la mise à jour : recupération des données du formulaire pour mise à jour bdd
{
$Requete = $bdd->prepare('UPDATE equipe SET nom_court=?, nom_long=?, date_creation=?, logo=?, nom_logo=? where id_equipe = ?');
$Requete->execute(array($_POST['nom_court'],$_POST['nom_long'],$_POST['date_creation'],$_POST['logo'],$fichier, $_POST['id_equipe'])) or die(print_r($bdd->errorInfo()));;
}
if (isset($_POST['id_equipe'])) // cas ou l'id est inconnu dans le formulaire : insertion.
{
$Requete = $bdd->prepare('INSERT INTO equipe (nom_court, nom_long, date_creation, logo, nom_logo) VALUES (?,?,?,?,?)') or die(print_r($bdd->errorInfo()));
$Requete->execute(array($_POST['nom_court'],$_POST['nom_long'],$_POST['date_creation'],$_POST['logo'],$fichier)) or die(print_r($bdd->errorInfo()));
}
header('Location: liste_equipe.php'); // redirection vers la liste des équipes
exit;
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.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" />
<title>Mon super site</title>
<link rel="stylesheet" media="screen" type="text/css" title="Design" href="css/style.css" />
</head>
<body>
<?php include_once("include/en_tete.php" ); ?>
<?php include_once("include/menu.php" ); ?>
<div id="corps">
<h1>
<?php if (empty($_GET['id_equipe'])) { echo 'Créer une équipe';} else{ echo 'Modifier une équipe';} ?>
</h1>
<form method="post" action="formulaire_equipe.php" enctype="multipart/form-data">
<input type="file" name="photo" />(que du .jpeg, jpg, .png extension minuscule...)
<input type="hidden" name="MAX_FILE_SIZE" value="100000" />
<p>
<input type="hidden" name="id_equipe" title="cle non modifiable" value = "<?php echo $id_equipe ?>" /><br />
Nom court <input type="text" name="nom_court" value = "<?php echo $nom_court ?>" /><br />
Nom long <input type="text" name="nom_long" value = "<?php echo $nom_long ?>" /><br />
date création <input type="text" name="date_creation" value = "<?php echo $date_creation ?>" /><br />
logo <input type="text" name="logo" value = "<?php echo $logo ?>" /><br />
<br />
<input type="submit" name="ok" value="OK" />
</p>
</form>
</div>
<?php include_once("include/pied_page.php" ); ?>
</body>
</html>