Validation de ma page php

Validation de ma page php - PHP - Programmation

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 :

Citation :


 
 
<!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 :
 

Citation :


 
<?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>
 

Reply

Marsh Posté le 03-07-2010 à 15:58:10   

Reply

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.

Reply

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 !


Message édité par dwogsi le 05-07-2010 à 16:40:39

---------------
-- Debian -- Le système d'exploitation universel | Le gras c'est la vie! | /(bb|[^b]{2})/
Reply

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.

Reply

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.


Message édité par dwogsi le 05-07-2010 à 16:55:55

---------------
-- Debian -- Le système d'exploitation universel | Le gras c'est la vie! | /(bb|[^b]{2})/
Reply

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 ;)

Reply

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

Reply

Marsh Posté le 06-07-2010 à 19:40:32    

Je veux dire tu pourrais faire comme ça plutôt :

Code :
  1. // Contruction du tableau
  2.  
  3. $equipes = array();
  4. while($tmp = $Resultat->fetch()) {
  5.     $equipes[] = $tmp;
  6. }  
  7. ?>
  8. <!-- ton HTML -->
  9.     
  10. <?php foreach($equipes as $equipe) : ?>
  11. <tr>
  12. <td>
  13.     <?php echo $equipe['id_equipe']; ?>
  14. </td>
  15. <td>
  16.     <?php echo $equipe['nom_court']; ?>
  17. </td>
  18. <td>
  19.     <?php echo $equipe['nom_long']; ?>
  20. </td>
  21. <td>
  22.     <?php echo $equipe['date_creation']; ?>
  23. </td>
  24. <td>
  25.     <?php echo $equipe['logo']; ?>
  26.     <img src="logos/'.$equipe['nom_logo'].'" title = "dynamique"  />';
  27.     <img src="logos/118-10-1.jpg" title="en dur" />';
  28. </td>
  29. <td>
  30.     <?php echo $equipe['nom_logo']; ?>
  31. </td>
  32. <td>
  33. <a href="formulaire_equipe.php?id_equipe=$equipe['id_equipe']"><img src ="image/edit.png" alt="update" title="modifier" /></a>
  34. </td>
  35. <td>
  36. <a href="delete_equipe.php?id_equipe=$equipe['id_equipe']" onclick="return confirm('Suppression ?');"><img src ="image/delete.png" alt="supprimer" title="supprimer"  />
  37. </td></tr>
  38. <?php endif; ?>
  39. <!-- Reste du HTML -->

Reply

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.

Reply

Marsh Posté le 06-07-2010 à 23:04:07    


 
pas besoin de faire une boucle  
 

Code :
  1. $equipes = $Resultat->fetchAll();


 
;)

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed