Auteur Sujet: Optimiser le code  (Lu 2377 fois)

0 Membres et 1 Invité sur ce sujet

Hors ligne aspkiddy

  • Débutant
  • *
  • Messages: 18
Optimiser le code
« le: 26 Août 2010 à 15:31:03 »
Bonjour,

Mon code ca marche bien mais j'aimerais bien les optimiser un peu plus...
Est ce que vous avez des idées pour l'alléger un peu plus ?

   <?php
//recuperation des donnes - formulaire - input - post

$var_ville = isset($_POST["ville"]) ? trim($_POST["ville"]) : '';

$var_nom = isset($_POST["nom"]) ? trim( $_POST["nom"]) : '';

$var_prenom = isset($_POST["prenom"]) ? trim( $_POST["prenom"]) : '';

$var_pays = isset($_POST["pays"]) ? trim($_POST["pays"]) : '';


 // fonction  preg_replace
         // replacer [;] par [.,]
         // remplacer [\r\n] par [--->]
         //[\r\n] dans excel, c'est un saut à la ligne

$tb_tableau_nettoyage = array();
$tb_tableau_nettoyage[0] = '/;/';
$tb_tableau_nettoyage[1] = '/\r\n/';

$tb_tableau_replacer = array();
$tb_tableau_replacer[0] = '.,';
$tb_tableau_replacer[1] = '--->';

$var_ville preg_replace($tb_tableau_nettoyage$tb_tableau_replacer$var_ville);
$var_nom preg_replace($tb_tableau_nettoyage$tb_tableau_replacer$var_nom);
$var_prenom preg_replace($tb_tableau_nettoyage$tb_tableau_replacer$var_prenom);
$var_pays preg_replace($tb_tableau_nettoyage$tb_tableau_replacer$var_pays);


         //ecriture fichier csv
         
fputs($ouvrir_FDutf8_decode($var_ville).';'.utf8_decode($var_nom).';'.utf8_decode($var_prenom).';'.utf8_decode($var_pays).';'."\n");


?>

Merci et bonne journée

Hors ligne bruno58

  • Habitué
  • **
  • Messages: 109
Re : Optimiser le code
« Réponse #1 le: 26 Août 2010 à 18:58:39 »
Je pense que l'intérêt est infime si ce n'est pas une requête récurrente...

Hors ligne aspkiddy

  • Débutant
  • *
  • Messages: 18
Re : Optimiser le code
« Réponse #2 le: 26 Août 2010 à 20:21:23 »
Salut Bruno,
   
Je pense qu'il faut définir une fonction qui reprend tous ces / mes traitements.

Mais je ne sais pas comment je peux le faire pour optimiser le code... :huh:

Hors ligne bruno58

  • Habitué
  • **
  • Messages: 109
Re : Optimiser le code
« Réponse #3 le: 26 Août 2010 à 23:23:15 »
Si tu veux faire une fonction, tu vas optimiser la lecture et la hiérarchie du code mais certainement pas la vitesse d'exécution.
Tiens, http://www.commentcamarche.net/contents/php/phpfonc.php3 c'est très bien expliqué.
Tu vas comprendre comment faire a la fin de la lecture, c'est vraiment assez simple.

Bon courage.

Hors ligne aspkiddy

  • Débutant
  • *
  • Messages: 18
Re : Optimiser le code
« Réponse #4 le: 27 Août 2010 à 14:52:07 »
Bonjour Bruno,

Suite ton article, j'ai fait une fonction

function nettoyage($chaine) {
 
                    $var_fonction_nettoyage ="";
                     
                        if (isset($_POST[$var_fonction_nettoyage])) {
                     
                                {
                                $tb_tableau_nettoyage = array();
                                $tb_tableau_nettoyage[0] = '/;/';
                                $tb_tableau_nettoyage[1] = '/\r\n/';
                               
                                $tb_tableau_replacer = array();
                                $tb_tableau_replacer[0] = '.,';
                                $tb_tableau_replacer[1] = '--->';
                     
                                        $var_fonction_nettoyage = preg_replace($tb_tableau_nettoyage, $tb_tableau_replacer, $_POST[$var_fonction_nettoyage]);
                                         
                                            $var_fonction_nettoyage = utf8_decode($var_fonction_nettoyage);
                     
                               }
                     
                          return $var_fonction_nettoyage;
                                                                    }
 
                                            }
fputs($ouvrir_FD, utf8_decode($var_date).';'.nettoyage($var_votre_nom).';'.nettoyage($var_nom_enfant).';'.nettoyage($var_adresse).';'.nettoyage($var_ville).';'.utf8_decode($var_province).';'.utf8_decode($var_code_postal).';'."\n");
       

 Mais je n’arrive pas… Dans les fichiers CSV; les colonnes (ceux que j’ai appliqué la fonction « nettoyage ») sont vides, sans valeur…
Alors à ton avis, comment je peux alléger mon code? ? Je vais surtout faire cela comme tu dis pas pour la vitesse mais pour apprendre...

Hors ligne bruno58

  • Habitué
  • **
  • Messages: 109
Re : Optimiser le code
« Réponse #5 le: 28 Août 2010 à 02:55:51 »
Bonjour,

Plusieurs pistes:
- Tu déclares récupérer ta chaine via la variable $chaine mais tu ne l'utilises pas dans ta fonction...

- Au début de ta fonction tu déclares une variable vide $var_fonction_nettoyage =""; et à la fin de celle-ci tu souhaites en retourner le résultat via return $var_fonction_nettoyage;

Pour ce deuxième point, c'est comme si tu faisais:
<?php
$variable
='texte';
$variable='';
echo 
$variable;
?>
Peu importe ce que tu vas avoir dans ta première variable, ton echo $variable; restera toujours vide.

Bon courage, ca avance tout de même.

Ps: pour tester plus simplement et plus rapidement les étapes de traitement de ton script, tu peux intercaler des print/echo/...
« Modifié: 28 Août 2010 à 13:40:04 par bruno58 »

Hors ligne aspkiddy

  • Débutant
  • *
  • Messages: 18
Re : Optimiser le code
« Réponse #6 le: 30 Août 2010 à 16:01:33 »
Bonjour Bruno et les autres  ^_^

Merci pour vos aides... selon les aides et les explications, mes codes marchent...
j'ai deux solutions


la 1ère c'est mon code que j'ai bidouillé pour qu'il marche...

<?php

function nettoyage($chaine) {
 
$var_fonction_nettoyage =$chaine;
 
{
 //remplacement [:] par [.,] pour qu'il n'y a pas de creation des collones sup dans excel
 //remplacement [rn] (lorsqu'utilisateur appuie sur la touche "Entrée") par [--->] pour qu'il n'y a pas de création des colonnes sup dans Excel
  $tb_tableau_nettoyage = array('/;/','/\r\n/');
  
  $tb_tableau_replacer = array('.,','--->');

  //application utf8_decode — Convertit une chaîne UTF-8 en ISO-8859-1
  return utf8_decode(preg_replace($tb_tableau_nettoyage$tb_tableau_replacer$chaine));
 
   }
}

//ecriture du fichier
fputs($ouvrir_FDutf8_decode($var_date).';'.nettoyage($var_votre_nom).';'.nettoyage($var_nom_enfant).';'.nettoyage($var_adresse).';'.nettoyage($var_ville).';'.utf8_decode($var_province).';'.utf8_decode($var_code_postal).';'."\n");

//Enfin fermer le fichier
fclose($ouvrir_FD);

?>


et la 2e c'est la meilleur solution :

<? php

//remplace  lorsqu'il y a un saut [;] (rn)
function replace_rn_saut($el)
{
//str_replace() retourne une chaîne ou un tableau, dont toutes les occurrences de search dans subject ont été remplacées par replace.
return (str_replace("\r\n",' ',$el));
}

$tab_excel = array();

$tab_excel[] = $var_date;
$tab_excel[] = $var_votre_nom;
$tab_excel[] = $var_nom_enfant;
$tab_excel[] = $var_adresse;
$tab_excel[] = $var_ville;
$tab_excel[] = $var_province;
$tab_excel[] = $var_code_postal;
 
 
//utf8_decode — Convertit une chaîne UTF-8 en ISO-8859-1
$tab_excel = array_map('utf8_decode',$tab_excel);
//apliquer la fonction replace_rn_saut
$tab_excel = array_map('replace_rn_saut',$tab_excel);
 





//Ecriture le fichier
fputcsv($ouvrir_FD, $tab_excel, ';');

//Enfin fermer le fichier
                fclose($ouvrir_FD);

?>

merci encore et bonne journée