[PHP & logique] Simplifier un morceau de code

Simplifier un morceau de code [PHP & logique] - PHP - Programmation

Marsh Posté le 29-08-2002 à 19:41:52    

Salut,
 
J'ai une database PhpMyAdmin, une sorte d'annuaire, avec une 15aine de champs (nom, prénom, adresse, telephone...)
J'ai crée un formulaire pour que quelqu'un puisse s'ajouter à partir d'une page web, ou modifier ses paramètres.  
Dans mon formulaire, les valeurs sont renvoyées par leur nom de variable : $nom, $prenom, $adresse, $telephone...
 
Si une valeur est laissé vide lors du remplissage du formulaire, je reprend la valeur existante dans la database (pour éviter que la personne doive retaper tous ses paramètres si elle veut juste changer son n° de téléphone par ex)
 
Ensuite je teste chaque valeur, voir si elle semble correcte.
Tout fonctionne (enfin, je crois)
 
Mais mon code me semble vraiment lourd, je suis certain que y'a moyen de faire beaucoup plus court... mais je vois pas du tout comment...
Vous pouvez m'aiguiller ?
 
 
FAUT PAS LIRE TOUT LE CODE, C'EST TOUJOURS LA MEME CHOSE QUI REVIENT...
 
 

Code :
  1. //si des infos sont vides, on reprend les anciennes de la base de donnée    
  2.   $db = mysql_connect("$localhost","$login","$pswrd" ) or die ("erreur de connexion au serveur MySQL" );
  3.   mysql_select_db("eniacopolis_db",$db) or die ("erreur de connexion à la base" );
  4.   $ligne = mysql_fetch_object(mysql_query("SELECT * FROM classe_rheto WHERE nom='$nom'",$db));
  5.   mysql_close() ;
  6.   if(empty($adresse_dom)) $adresse_dom=$ligne->adresse_dom ;
  7.   if(empty($adresse_kot)) $adresse_kot=$ligne->adresse_kot ;
  8.   if(empty($tel_fixe_dom)) $tel_fixe_dom=$ligne->tel_fixe_dom ;
  9.   if(empty($tel_fixe_kot)) $tel_fixe_kot=$ligne->tel_fixe_kot ;
  10.   if(empty($gsm)) $gsm=$ligne->gsm ;
  11.   if(empty($icq)) $icq=$ligne->icq ;
  12.   if(empty($email)) $email=$ligne->email ;
  13.   if(empty($an_1999)) $an_1999=$ligne->an_1999 ;
  14.   if(empty($an_2000)) $an_2000=$ligne->an_2000 ;
  15.   if(empty($an_2001)) $an_2001=$ligne->an_2001 ;
  16.   if(empty($an_2002)) $an_2002=$ligne->an_2002 ;
  17.   if(empty($an_2003)) $an_2003=$ligne->an_2003 ;
  18.   //test de la validité des informations reçues
  19.   $test=0 ;
  20.   if(!(eregi("^[a-zA-Z0-9 ]{10,150}$",$adresse_dom)) && !empty($adresse_dom))
  21.   { $test=1 ;
  22.    echo '<b>Adresse du domicile non conforme.</b>  L\'adresse doit comprendre 10 à 150 caractères alphanumériques exclusivement.<br>' ;
  23.   }
  24.   if(!(eregi("^[a-zA-Z0-9 ]{10,150}$",$adresse_kot)) && !empty($adresse_kot))
  25.   { $test=1 ;
  26.    echo '<b>Adresse du kot non conforme.</b>  L\'adresse doit comprendre 10 à 150 caractères alphanumériques exclusivement.<br>' ;
  27.   }
  28.   if(!(eregi("^[0-9]{9}$",$tel_fixe_dom)) && !empty($tel_fixe_dom))
  29.   { $test=1 ;
  30.    echo '<b>Téléphone fixe du domicile non conforme.</b>  Votre numéro doit être formé de 9 chiffres exactement.<br>' ;
  31.   }
  32.   if(!(eregi("^[0-9]{9}$",$tel_fixe_kot)) && !empty($tel_fixe_kot))
  33.   { $test=1 ;
  34.    echo '<b>Téléphone fixe du kot non conforme.</b>  Votre numéro doit être formé de 9 chiffres exactement.<br>' ;
  35.   }
  36.   if(!(eregi("^[0-9]{10}$",$gsm)) && !empty($gsm))
  37.   { $test=1 ;
  38.    echo '<b>Numéro de GSM non conforme.</b>  Votre numéro doit être formé de 10 chiffres exactement.<br>' ;
  39.   }
  40.   if(!(eregi("^[0-9]{8,10}$",$icq)) && !empty($icq))
  41.   { $test=1 ;
  42.    echo '<b>Numéro d\'ICQ non conforme.</b>  Votre numéro doit être formé de 8 à 10 chiffres.<br>' ;
  43.   }
  44.   if(!ereg("@",$email) && !empty($email))
  45.   { $test=1 ;
  46.    echo '<b>Adresse E-Mail non conforme.</b>  Veuillez entrer une adresse E-Mail valide.<br>' ;
  47.   }
  48.   if(!(eregi("^[a-zA-Z0-9 ]{10,128}$",$an_1999)) && !empty($an_1999))
  49.   { $test=1 ;
  50.    echo '<b>Cursus 1999 non conforme.</b>  Le cursus doit comprendre 10 à 128 caractères alphanumériques exclusivement.<br>' ;
  51.   }
  52.   if(!(eregi("^[a-zA-Z0-9 ]{10,128}$",$an_2000)) && !empty($an_2000))
  53.   { $test=1 ;
  54.    echo '<b>Cursus 2000 non conforme.</b>  Le cursus doit comprendre 10 à 128 caractères alphanumériques exclusivement.<br>' ;
  55.   }
  56.   if(!(eregi("^[a-zA-Z0-9 ]{10,128}$",$an_2001)) && !empty($an_2001))
  57.   { $test=1 ;
  58.    echo '<b>Cursus 2001 non conforme.</b>  Le cursus doit comprendre 10 à 128 caractères alphanumériques exclusivement.<br>' ;
  59.   }
  60.   if(!(eregi("^[a-zA-Z0-9 ]{10,128}$",$an_2002)) && !empty($an_2002))
  61.   { $test=1 ;
  62.    echo '<b>Cursus 2002 non conforme.</b>  Le cursus doit comprendre 10 à 128 caractères alphanumériques exclusivement.<br>' ;
  63.   }
  64.   if(!(eregi("^[a-zA-Z0-9 ]{10,128}$",$an_2003)) && !empty($an_2003))
  65.   { $test=1 ;
  66.    echo '<b>Cursus 2003 non conforme.</b>  Le cursus doit comprendre 10 à 128 caractères alphanumériques exclusivement.<br>' ;
  67.   }
  68.   if($test==0)
  69.   { //j'insère l'enregistrement dans la base
  70.   }
  71.   elseif($test==1)
  72.   { //message d'erreur
  73. }
  74.   break ;


 
Thanks


Message édité par Eniac le 29-08-2002 à 19:43:09

---------------
If you really want something, all the Universe conspires in helping you to achieve it.
Reply

Marsh Posté le 29-08-2002 à 19:41:52   

Reply

Marsh Posté le 30-08-2002 à 01:01:48    

Une alternative (pas forcemment moins bourrine) :
 
Tu stockes dans un tableau toutes les noms des variables dont tu as besoin en mettant en correspondance leur nom dans la base... par exemple :

Code :
  1. $variables = array (
  2. 'adresse_dom' => 'adresse_dom',
  3. 'an_2001' => 'an_2001');


l'interêt étant que tu peux mettre un nom de variable (la clé) différent de son nom dans la table (la valeur).
 
Ensuite tu fais un array_keys dessus pour tester pour chaque nom de variable si il y a un argument correspondant... sinon tu remplaces par la valeur dans la table.
 
Par exemple :

Code :
  1. foreach (array_keys($variables) as $variable)
  2. {
  3.   if (! isset ($$variable))
  4.   {
  5.     $$variable = $ligne[$variables[$variable]] ;// fetch un tableau d'abord
  6.   }
  7. }


 
Tu fais la même chose avec ton test de validité et à la limite tu complexifies le tableau $variables pour que tu puisses y enregistrer un message, un test spécifique.

Reply

Marsh Posté le 01-09-2002 à 12:55:40    

oui, je vois +/- ce que tu veux faire.
 
En fait j'ai l'impression que y'a pas de solution à ma question... pour chaque variable j'ai un test différent, donc de toute manière  ça sera toujours aussi long...
 
merci pour ton idée


---------------
If you really want something, all the Universe conspires in helping you to achieve it.
Reply

Marsh Posté le 01-09-2002 à 13:43:15    

Pourquoi tu n'affiches pas à la base les anciennes infos ?
 
de cette façon, tu updates tout, que l'utilisateur ait modifié ses données ou pas...


---------------
...oups kernel error...
Reply

Marsh Posté le 01-09-2002 à 17:13:51    

tu veux dire déjà remplir les champs de texte <input> ?
 
je sais pas comment on fait  :D  
mais surtout parce que dans mon formulaire j'ai un tableau qui est prévu pour affiché l'intitulé du champ, l'ancien contenu, et le champ de texte (vide), enfin, c'est vrai qu'en y repensant ça serait pas bête...
 


---------------
If you really want something, all the Universe conspires in helping you to achieve it.
Reply

Marsh Posté le 02-09-2002 à 16:12:09    

Pour remplir, c'est comme ca :
 
<input type=text name=machin value="texte qui apparait par défaut">

Reply

Marsh Posté le 02-09-2002 à 19:52:51    

:jap:


---------------
If you really want something, all the Universe conspires in helping you to achieve it.
Reply

Sujets relatifs:

Leave a Replay

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