[PHP] Formulaire + transfert de données par post + codage de porc

Formulaire + transfert de données par post + codage de porc [PHP] - PHP - Programmation

Marsh Posté le 07-03-2008 à 13:11:42    

Yo !
 
Aidez-moi à améliorer mon codage de cochon s'il vous plait [:ocube]
 
J'ai fait un truc qui marche, mais qui m'effraye un peu. J'pense que c'est pas très professionnel tout ça [:ocube]
 
Bon, j'essaye d'expliquer :
 
- J'ai une page index.php qui contient un formulaire avec plein de champs, et 3 boutons : Accept, Update, et Delete. Jusque là tout va bien.
- Quand je clique sur un des 3 boutons, je rebalance la page index.php (en post) avec donc tous les champs du formulaire + un champ qui me dit quel bouton a été cliqué. Jusque là, ça va encore à peu près.  
- La page index.php rechargée demande confirmation de l'action grâce à un nouveau formulaire. Voilà c'est un peu là qu'est le problème. Quand l'utilisateur clique sur 'Confirm' du nouveau formulaire, je re-recharge la page index.php et fait le nécessaire suivant l'action. Le truc c'est que dans ce nouveau formulaire de confirmation, j'dois refiler tous les champs envoyés avant en type="hidden". J'trouve ça un peu dégueulasse. Niveau maintenance ça pue grave, genre si j'veux rajouter un champ dans mon formulaire de départ (au premier chargement de la page quoi), faut pas que j'oublie de le retransférer en hidden dans les prochains chargements. Bref, c'est tout un mic-mac.
 
C'est clair ou faut qu'je recommence ? [:ocube]
 
C'est quoi la bonne solution propre vers laquelle il faut que j'me tourne ?
 
Merci d'avance les cailles [:sophie]

Reply

Marsh Posté le 07-03-2008 à 13:11:42   

Reply

Marsh Posté le 07-03-2008 à 13:20:16    

Bonjour,
 
1/ Pourrais tu montrer ton code ?
2/ Je pencherais pour les sessions : Si c'est un nouveua formuler (exemple : action annuler du précédent, ou nouveau butineur, tu réinitialises tout), et après tu passes les variables tout simplement en session, sans fair eaucun hidden.
 
@+
Arnaud

Reply

Marsh Posté le 10-03-2008 à 03:45:37    

J'file mon code, mais il est pas propre encore hein, j'l'ai laché vendredi soir comme un gros porc :D

 

Si tu cherches 'hidden', tu vas voir un formulaire ou je passe 2 champs en hidden, bon ben avec ma technique, j'vais devoir en rajouter une 30aine, et j'trouve ça assez moisi...

 
Citation :


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
 <head>
 <!--
  <meta http-equiv="Content-Type" content="text/html;Charset=iso-8859-15">
 -->
  <meta http-equiv="Content-Type" content="text/html;Charset=utf-8">
 
  <meta name="description" content="IIUM Online Course Application">
  <meta name="keywords" content="IIUM, Online, Course, Application">
  <meta name="identifier-url" content="">
  <meta name="robots" content="follow,index,all">
  <meta name="REVISIT-AFTER" content="7 days">

 

 <meta name="page-topic" content="IIUM Online Course Application">
  <meta name="rating" content="All">
 
  <title>IIUM Online Course Application - Admin</title>
  <link rel="stylesheet" type="text/css" href="../style.css">
 </head>
 
<?php
 require( '../include/connectDB.inc.php' );
 // We need to tell mysql that the client will send characters using the utf8 character set (for the chinese characters)
 // The connection will be set to utf8 also, and the results will be sent back to the client using utf8
 $query = 'SET NAMES \'utf8\'';
 mysql_query( $query );
 
 $appNr = isset ( $_POST['applicantNr'] ) ? (int)$_POST['applicantNr'] : 0;

 

echo '
  <body>
   <div id="adminPage">
/////////////// CHECK CHECK CHECK  <form action="index.php" method="post">
    <div id="leftMenu">
     <div id="actions">
      <form action="index.php" method="post" style="margin-bottom:0px;">
       <input type="hidden" name="applicantNr" value="' .$appNr .'" />
       <input name="action" type="submit" value="Accept"' .( $appNr == 0 ? 'disabled="disabled"' : '' ) .'style="width:100px;margin-bottom:20px;" />
       <input name="action" type="submit" value="Update"' .( $appNr == 0 ? 'disabled="disabled"' : '' ) . 'style="width:100px;margin-bottom:20px;" />
       <input name="action" type="submit"  value="Delete"' .( $appNr == 0 ? 'disabled="disabled"' : '' ) . 'style="width:100px;margin-bottom:20px;" />
      </form>
     </div>
     <hr />
     <div id="appList">
      <form action="index.php" method="post">
       <select name="applicantNr" size="10" style="width:120px;">
 ';

 

$query = 'SELECT * FROM APPLICANT';
 $result = mysql_query( $query );
 while ( $row = mysql_fetch_array( $result ) )
 {
  echo '<option' .( $appNr == $row['id'] ? ' selected="selected"' : '' )  .'>' .$row['id'] .'</option>';
 }
 
?>      
       </select>
       <input type="submit" value="Choose Applicant" style="width:120px;">
      </form>
     </div>
    </div>
    <div id="info">
<?php
 // This is where the information given to the user is given
 
 // If there is an action did by the user
 if ( isset( $_POST['action'] ) == true )
 {
  // Check if the action has been confirmed already, cancelled or there is no yet
  if ( isset( $_POST['confirm'] ) == true )
  {
   switch ( $_POST['confirm'] )
   {
    case 'Confirm':
     if ( $_POST['action'] == 'Accept' )
     {
      echo '###########WRITE THE CODE TO ACCEPT###########<br />';
      echo 'The Applicant Nr <span style="color:black;font-size:22px;">' .$_POST['applicantNr'] .'</span> has been successfuly accepted<br />';
     }
     else if ( $_POST['action'] == 'Update' )
     {
      echo '###########WRITE THE CODE TO UPDATE###########<br />';
      echo 'The Applicant Nr <span style="color:black;font-size:22px;">' .$_POST['applicantNr'] .'</span> has been successfuly updated<br />';
     }
     else if ( $_POST['action'] == 'Delete' )
     {
      echo '###########WRITE THE CODE TO DELETE###########<br />';
      echo 'The Applicant Nr <span style="color:black;font-size:22px;">' .$_POST['applicantNr'] .'</span> has been successfuly deleted<br />';
     }
    break;
   
    case 'Cancel':
     
    break;
   }
  }
  else
  {
   echo '<form action="index.php" method="post">';
   
   switch ( $_POST['action'] )
   {
    case 'Accept':
     echo 'Please confirm that you want to accept Applicant Nr <br /><span style="color:black;font-size:22px;">' .$_POST['applicantNr'] .'</span>';
    break;
   
    case 'Update':
     echo 'Please confirm that you want to update Applicant Nr <br /><span style="color:black;font-size:22px;">' .$_POST['applicantNr'] .'</span>';
    break;
   
    case 'Delete':
     echo 'Please confirm that you want to delete Applicant Nr <br /><span style="color:black;font-size:22px;">' .$_POST['applicantNr'] .'</span>';
    break;
   }
   
   echo '<br /><br />';
   echo '<input type="hidden" name="applicantNr" value="' .$_POST['applicantNr'] .'" />';
   echo '<input type="hidden" name="action" value="' .$_POST['action'] .'" />';
   echo '<input type="submit" name="confirm" value="Confirm" />';
   echo '<input type="submit" name="confirm" value="Cancel" />';
   echo '</form>';
  }
 }
 
 // If there is no applicant chosen
 if ( $appNr == 0 )
 {
  echo 'Please choose an Applicant Number and click \'Choose Applicant\'';
 }
?>    
   </div>
   <!--<form action="index.php" method="post">-->
   <div id="studentId">
   
   
   </div>
   <div id="studentInfo">
<?php
 // If applicant info has been requested
  $query = 'SELECT * FROM APPLICANT WHERE id = ' .$appNr;
  $result = mysql_query( $query );
  // Ther e is only 1 row to get
  if ( ( $row = mysql_fetch_array( $result ) ) != false )
  {
  // Show the information and make it editable
  echo '
   <h2>Personal Information:</h2>
    Full name (in English): <input style="margin-left:43px;" type="text" name="englishFullName" size="32" value="' .$row['fullNameEnglish'] .'" />
    <br /><br />
    Preferred name (in English): <input style="margin-left:5px;" type="text" name="englishPreferredName" size="32" value="' .$row['preferredNameEnglish'] .'" />
    <br /><br />
    Full name (in Chinese): <input style="margin-left:37px;" type="text" name="chineseName" size="32" value="' .$row['fullNameChinese'] .'" />
    <br /><br />
    Gender: <input style="margin-left:131px;" type="text" name="gender" size="1" value="' .$row['gender'] .'" />
    <br /><br />
    Date of birth (dd/mm/yyyy): <input style="margin-left:8px;" type="text" name="dateOfBirth" size="8" value="' .$row['dateOfBirth'] .'" />
    <br /><br />
    Place of birth: <input style="margin-left:95px;" type="text" name="placeOfBirth" size="32" value="' .$row['placeOfBirth'] .'" />
    <br /><br />
    Nationality: <input style="margin-left:110px;" type="text" name="nationality" size="32" value="' .$row['nationality'] .'" />
    <br /><br />
    I.D. Card/Passport:
    <br />
     <span style="margin-left:15px;">Number:</span><input style="margin-left:139px;" type="text" name="passportNumber" size="32" value="' .$row['idOrPassportNumber'] .'" />
     <br />
     <span style="margin-left:15px;"></span>Date of issue (dd/mm/yyyy):</span><input style="margin-left:15px;margin-top:5px;" type="text" name="passportDateOfIssue" size="8" value="' .$row['idOrPassportDateOfIssue'] .'" />
     <br />
     <span style="margin-left:15px;">Place of issue:</span><input style="margin-left:102px;margin-top:5px;" type="text" name="passportPlaceOfIssue" size="32" value="' .$row['idOrPassportPlaceOfIssue'] .'" />
     <br />
     <span style="margin-left:15px;">Date of expiry (dd/mm/yyyy):</span><input style="margin-left:10px;margin-top:5px;" type="text" name="passportDateOfExpiry" size="8" value="' .$row['idOrPassportDateofExpiry'] .'" />
     <br />
     <span style="margin-left:15px;">Scanned copy:</span><input style="margin-left:101px;margin-top:5px;width:370px;" type="input" name="scannedCopy" size="58" value="' .$row['scannedCopy'] .'" />
     <br /><br /><br />
    Home address: <input style="margin-left:86px;width:392px;" type="text" name="homeAddress" size="62" value="' .$row['homeAddress'] .'" />
    <br /><br />
    Mailing address: <input style="margin-left:79px;width:392px" type="text" name="mailingAddress" size="62" value="' .$row['mailingAddress'] .'" />
    <br /><br />
    <span>Phone number: </span><input style="margin-left:85px;" type="text" name="phoneNumber" size="16" value="' .$row['phoneNumber'] .'" />
    <br /><br />
    <span>Private email address: </span><input style="margin-left:41px;" type="text" name="emailAddress" size="48" value="' .$row['privateEmailAddress'] .'" />
    <br /><br />
   <h2>Program(s) applied for</h2>
     &nbsp;<input style="width:578px;" type="text" name="emailAddress" size="94" value="' .$row['programsApplied'] .'" />
     ';
  }
?>
   </div>
   ////////////// CHECK CHECK CHECK</form>
  </div>
 </body>
</html>


Message édité par godbout le 10-03-2008 à 03:47:41
Reply

Marsh Posté le 10-03-2008 à 12:44:38    

Les données seront stockées ?
Si oui, et d'après ton code c'est dans une bdd MySQL, je les stockeraient au fur et à mesure ... ça permettrait aussi à la personne de venir compléter son inscription plus tard si jamais son ordi plante ou autre, et tu pourrais conserver les données pendant 24h avant de les supprimer ...
Pour revenir à son inscription, tu n'as qu'à faire entrer pseudo et mot de passe dès la première page, et lors de la récupération elle n'aura qu'à entrer ses pseudos et mot de passe d'inscription ...
 
A voir :]


---------------
Debian Addict - Vista Victim .. - Etudiant Ingénieur [Le Pas-Blog - Relations Ecrites]
Reply

Marsh Posté le 11-03-2008 à 05:44:02    

C'est pour des inscriptions universitaires en ligne, donc pas de login ou quoi que ce soit. On arrive sur la page, on tape ses données, on clique, et basta.  
 
En fait, le seul problème que j'ai, c'est pour après. Les admins vont voir la liste des gens inscrits, et ils peuvent 'deleter' une inscription. Hors, quand ils cliquent sur le bouton 'Delete', il faut une confirmation. J'veux pas la faire en javascript, ça pue, mais en php. Et j'ai du mal à transférer toutes les données au cas où la personne accepte la confirmation :/

Reply

Marsh Posté le 11-03-2008 à 22:29:55    

Suis-je bête ? Utilise les sessions !


---------------
Debian Addict - Vista Victim .. - Etudiant Ingénieur [Le Pas-Blog - Relations Ecrites]
Reply

Marsh Posté le 12-03-2008 à 02:55:53    

Ok, merci [:super chinois]
Comme je les ai jamais utilisées, j'étais pas sûr que c'était ce qui me fallait :)

Reply

Marsh Posté le 12-03-2008 à 13:01:47    

J'y ai pas pensé de suite alors que c'est ce que j'utilisais pour un de mes sites. ^^'


---------------
Debian Addict - Vista Victim .. - Etudiant Ingénieur [Le Pas-Blog - Relations Ecrites]
Reply

Marsh Posté le 13-03-2008 à 03:10:23    

:D

Reply

Sujets relatifs:

Leave a Replay

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