Optimisation

cs_skiso Messages postés 103 Date d'inscription dimanche 19 janvier 2003 Statut Membre Dernière intervention 19 septembre 2010 - 19 nov. 2006 à 16:27
audayls Messages postés 373 Date d'inscription samedi 9 juillet 2005 Statut Membre Dernière intervention 11 août 2008 - 20 nov. 2006 à 18:39
je sais que mon script n'est pas optimal et comporte surement des erreurs, je veux savoir es que je suis sur la bonne voie, si c'est pas le cas je veux apprendre et m'améliorer.

mon but est de charger un select dynamiquement, est un autre par rapport au choix du premier.



<?xml:namespace prefix o ns "urn:schemas-microsoft-com:office:office" /??>
 
//******************** mon script

<? require_once('Connections/conect.php');





$currentPage = $HTTP_SERVER_VARS["PHP_SELF"];





if (isset($HTTP_GET_VARS['wil']))
{
$wil=$HTTP_GET_VARS['wil'];
mysql_select_db($database_conect, $conect);
$query_Rec_com = "SELECT * FROM communes WHERE wilaya='$wil' ORDER BY COMMUNE ASC";
$Rec_com = mysql_query($query_Rec_com, $conect) or die(mysql_error());
$row_Rec_com = mysql_fetch_assoc($Rec_com);
$totalRows_Rec_com = mysql_num_rows($Rec_com);
}





mysql_select_db($database_conect, $conect);
$query_Rec_wil = "SELECT wilaya FROM wilayas ORDER BY wilaya ASC";
$Rec_wil = mysql_query($query_Rec_wil, $conect) or die(mysql_error());
$row_Rec_wil = mysql_fetch_assoc($Rec_wil);
$totalRows_Rec_wil = mysql_num_rows($Rec_wil);





?>





<html>
<head>
<title>Document sans titre</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>










<form name="form1" method="post" action="">
  &nbsp;

      ----

      <select name="wil" id="wil" onChange="javascript:document.location.href=(this.value);" STYLE="font-size : 9pt">
          <?php
          do { 
            $wilaya=$row_Rec_wil['wilaya'];
          ?>
          <option value="<?php printf("%s?wil=$wilaya", $currentPage); ?>" <?php if (!(strcmp($wilaya, $wilaya))) {echo "SELECTED";} ?>><?php echo $wilaya; ?></option>
          <?php
          } while ($row_Rec_wil = mysql_fetch_assoc($Rec_wil));
          $rows = mysql_num_rows($Rec_wil);
          if($rows > 0) {
          mysql_data_seek($Rec_wil, 0);
       $Rec_wil = mysql_fetch_assoc($Rec_wil);
          }
          if (isset($HTTP_GET_VARS['wil']))
    {
    ?>
    <option value="<?php echo $wil; ?>" selected><?Php echo $wil; ?></option>
    <?Php } ?>
        </select>,
   
    ----

      <select name="select" id="select" STYLE="font-size : 9pt">
          <?php
          do { 
            $commune=$row_Rec_com['commune'];
          ?>
          <option value="<?php echo $commune; ?>" <?php if (!(strcmp($commune, $commune))) {echo "SELECTED";} ?>><?php echo $commune; ?></option>
          <?php
          } while ($row_Rec_com = mysql_fetch_assoc($Rec_com));
          $rows = mysql_num_rows($Rec_com);
          if($rows > 0) {
          mysql_data_seek($Rec_com, 0);
       $Rec_com = mysql_fetch_assoc($Rec_com);
          }
          ?>
        </select>,
   
 

  &nbsp;

</form>

</html>

//*******************

//********************* table commune

CREATE TABLE `communes` (
  `wilaya` varchar(25) NOT NULL default 'Blida',
  `commune` varchar(35) default NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1;





--
-- Contenu de la table `communes`
--





INSERT INTO `communes` VALUES ('Alger', 'Ain Beniane');
INSERT INTO `communes` VALUES ('Alger', 'Ain Taya');
INSERT INTO `communes` VALUES ('Alger', 'Alger Centre');
INSERT INTO `communes` VALUES ('Alger', 'Bab El Oued');
INSERT INTO `communes` VALUES ('Alger', 'Bab Ezzouar');
INSERT INTO `communes` VALUES ('Alger', 'Baba Hassen');
INSERT INTO `communes` VALUES ('Alger', 'Bachdjarah');
INSERT INTO `communes` VALUES ('Alger', 'Baraki');
INSERT INTO `communes` VALUES ('Alger', 'Beni Messous');
INSERT INTO `communes` VALUES ('Alger', 'Bir Mourad Rais');
INSERT INTO `communes` VALUES ('Alger', 'Birkhadem');
INSERT INTO `communes` VALUES ('Alger', 'Bologhine');
INSERT INTO `communes` VALUES ('Alger', 'Bordj El Bahri');
INSERT INTO `communes` VALUES ('Alger', 'Bordj El Kiffane');
INSERT INTO `communes` VALUES ('Alger', 'Boudouaou');
INSERT INTO `communes` VALUES ('Alger', 'Bourouba');
INSERT INTO `communes` VALUES ('Alger', 'Bouzareah');
INSERT INTO `communes` VALUES ('Alger', 'Casbah');
INSERT INTO `communes` VALUES ('Alger', 'Cheraga');
INSERT INTO `communes` VALUES ('Alger', 'Dar El Beida');
INSERT INTO `communes` VALUES ('Alger', 'Dely Ibrahim');
INSERT INTO `communes` VALUES ('Alger', 'Douera');
INSERT INTO `communes` VALUES ('Alger', 'Draria');
INSERT INTO `communes` VALUES ('Alger', 'El Achour');
INSERT INTO `communes` VALUES ('Alger', 'El Biar');
INSERT INTO `communes` VALUES ('Alger', 'El Hamma');
INSERT INTO `communes` VALUES ('Alger', 'El Harrach');
INSERT INTO `communes` VALUES ('Alger', 'El Madania');
INSERT INTO `communes` VALUES ('Alger', 'Al Magharia');
INSERT INTO `communes` VALUES ('Alger', 'El Mouradia');
INSERT INTO `communes` VALUES ('Alger', 'Gué de Constantine');
INSERT INTO `communes` VALUES ('Alger', 'Hammamet');
INSERT INTO `communes` VALUES ('Alger', 'Haraoua');
INSERT INTO `communes` VALUES ('Alger', 'Hussein Dey');
INSERT INTO `communes` VALUES ('Alger', 'Hydra');
INSERT INTO `communes` VALUES ('Alger', 'Kheraicia');
INSERT INTO `communes` VALUES ('Alger', 'Kouba');
INSERT INTO `communes` VALUES ('Alger', 'Les Eucalyptus');
INSERT INTO `communes` VALUES ('Alger', 'Mehalma');
INSERT INTO `communes` VALUES ('Alger', 'Marsa');
INSERT INTO `communes` VALUES ('Alger', 'Mohammadia');
INSERT INTO `communes` VALUES ('Alger', 'Oued Koriche');
INSERT INTO `communes` VALUES ('Alger', 'Ouled Chebel');
INSERT INTO `communes` VALUES ('Alger', 'Ouled Fayet');
INSERT INTO `communes` VALUES ('Alger', 'Rahmania');
INSERT INTO `communes` VALUES ('Alger', 'Rais Hamidou');
INSERT INTO `communes` VALUES ('Alger', 'Reghaia');
INSERT INTO `communes` VALUES ('Alger', 'Rouiba');
INSERT INTO `communes` VALUES ('Alger', 'Sidi Mhamed');
INSERT INTO `communes` VALUES ('Alger', 'Sidi Moussa');
INSERT INTO `communes` VALUES ('Alger', 'Souidania');
INSERT INTO `communes` VALUES ('Alger', 'Staouali');
INSERT INTO `communes` VALUES ('Alger', 'Saoula');
INSERT INTO `communes` VALUES ('Alger', 'Tessala El Mardja');
INSERT INTO `communes` VALUES ('Alger', 'Zeralda');
INSERT INTO `communes` VALUES ('Alger', 'Ben Aknoune');
INSERT INTO `communes` VALUES ('Alger', 'Belouizded');
INSERT INTO `communes` VALUES ('Alger', 'Oued Smar');
INSERT INTO `communes` VALUES ('Alger', 'Oued Romane');
INSERT INTO `communes` VALUES ('Alger', 'Birtouta');
       
//*******************************

//*********************** table wilayas

CREATE TABLE `wilayas` (
  `wilaya` varchar(15) NOT NULL default ''
) ENGINE=MyISAM DEFAULT CHARSET=latin1;





--
-- Contenu de la table `wilayas`
--





INSERT INTO `wilayas` VALUES ('Alger');
INSERT INTO `wilayas` VALUES ('Blida');
INSERT INTO `wilayas` VALUES ('Tipasa');
INSERT INTO `wilayas` VALUES ('Boumerdes');
 
//******************

7 réponses

audayls Messages postés 373 Date d'inscription samedi 9 juillet 2005 Statut Membre Dernière intervention 11 août 2008
19 nov. 2006 à 16:56
Salut,
Je suis loin d'être pro mais je peux toujours d'aider sur ce que je sais
<hr size= "2" width="100%" />==> Alors d'abords, n'utilises pas " <? " mais "<?php".
<hr size ="2" width= "100%" />==> Ensuite n'utilises pas les doubles quotes " mais les simples quotes ' ( pour une question de rapidité ).
Donc par exemple ceci "$query_Rec_com ="SELECT * FROM communes WHERE wilaya= '$wil' ORDER BY COMMUNE ASC";" donnera " $query_Rec_com ='SELECT * FROM communes WHERE wilaya="'.$wil.'" ORDER BY COMMUNE ASC'; "
<hr size ="2" width= "100%" />==> On n'utilise plus " $HTTP_SERVER_VAR " et "$HTTP_GET_VARS" mais "$_SERVER" et "$_GET" (à moins que tu es sur une version de PHP inférieur à 4.1.0)
<hr size ="2" width= "100%" />==> Pourquoi utiliser une variable pour retenir une autre variable ? Utilise directement " $_SERVER['PHP_SELF'] " ou "$_GET['wil']"
<hr size ="2" width= "100%" />==> Ta requête MySQL n'est pas optimisé puisqu'elle utilise "*".
Donc " $query_Rec_com = "SELECT * FROM communes WHERE wilaya='$wil' ORDER BY COMMUNE ASC"; " donnera "$query_Rec_com = 'SELECT wilaya,communce FROM communes WHERE wilaya="'.$_GET['wil'].'" ORDER BY COMMUNE ASC';"
<hr size="2" width="100%" />==> Enfin le code HTML n'est pas valide (ce n'est pas important mais c'est bien en soit )

For every choice, a consequence (Fable)
0
syndrael Messages postés 2378 Date d'inscription lundi 4 février 2002 Statut Membre Dernière intervention 29 décembre 2012 20
20 nov. 2006 à 08:46
Audalys,

Tu peux me dire pourquoi il est préférable d'utiliser '<?php'  ??

Pourkoa les simples quotes sont plus rapides ke les doubles ??

Merci de tes réponses

S.
0
audayls Messages postés 373 Date d'inscription samedi 9 juillet 2005 Statut Membre Dernière intervention 11 août 2008
20 nov. 2006 à 13:33
"<?php" est un tag pour PHP tandis que "<?" peut être un tag pour PHP et XML. De plus si l'option "short_open_tag" est à "Off" le code PHP entre "<?" ne sera pas interprété.

Pour les simples quotes et les doubles quotes c'est assez simple : lorsque tu mets des doubles quotes PHP doit analyser les possibles variables qui se trouvent dans cette chaîne, tandis que les simples quotes ne sont pas analysées par PHP. Ce qui fait que les simples quotes sont plus rapides (si tu veux inserer une variable il te faudra utiliser la concaténation)

For every choice, a consequence (Fable)
0
syndrael Messages postés 2378 Date d'inscription lundi 4 février 2002 Statut Membre Dernière intervention 29 décembre 2012 20
20 nov. 2006 à 14:57
Merci de l'info..

et tu conseilles toujours <?='toto'?> ou il peut y avoir confusion avec XML ??

Pour les doubles quotes je ne savais po k'elles étaient analysées. Je
me coucherai moins bête. Tu aurais un benchmark sur ce point pour
connaitre la réélle impact ?? C'est juste pour savoir si je dois
changer du code pour l'optimiser

S.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
audayls Messages postés 373 Date d'inscription samedi 9 juillet 2005 Statut Membre Dernière intervention 11 août 2008
20 nov. 2006 à 18:26
"
<?=


'toto'
?>



" c'est pas bien ! lol Il faut mettre "<?phpecho'toto';?>
".

Pour le benchmark et les autres optimisations je te conseille d'aller sur http://www.vulgarisation-informatique.com/optimiser-php.php c'est le site de Anthomicro. Il explique très bien les raisons des optimisations.

For every choice, a consequence (Fable)
0
syndrael Messages postés 2378 Date d'inscription lundi 4 février 2002 Statut Membre Dernière intervention 29 décembre 2012 20
20 nov. 2006 à 18:35
Alors je code 'po bien' !! LOL !!

Bon, je vais faire un effort désormais.. et sympa la page ke tu conseilles.. merci..

Toutes ces questions k'on se pose sur l'optimisation..

S.
0
audayls Messages postés 373 Date d'inscription samedi 9 juillet 2005 Statut Membre Dernière intervention 11 août 2008
20 nov. 2006 à 18:39
Ce n'est pas grave puisque maintenant tu vas "bien" codé
Il faut dire que l'optimisation est d'autant plus importante sur un language serveur puisque plus d'optimisation c'est plus de rapidité donc moins de ressources utilisées...

For every choice, a consequence (Fable)
0
Rejoignez-nous