IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

Optimisation code requète sql multi conditionnée [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre confirmé
    Inscrit en
    Juillet 2009
    Messages
    81
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 81
    Par défaut Optimisation code requète sql multi conditionnée
    Bonjour,

    Je reviens vers vous, mon appli de gestion de stock est presque finie.

    Mais dans ma partie historique / recherche par filtre j'ai l'impression que mon code pourrait être optimisé, cad être plus léger.

    En résumé historique.php dont le code suit, permet d'afficher tous les mouvements du stock, cad combien, quoi, où et quand en fonction des filtres suivant :
    ce qui sort ou rentre ou les deux(par défaut).
    filtre par où c'est parti.
    filtre entre date de début et date de fin.

    Voici le code que je cherche à aléger :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    if (empty ($rec) )
    { $requete = "SELECT   *  FROM globale,historique where globale.id=historique.produit    ORDER BY id2 DESC "; }
    elseif (empty ($mov) and empty($ou))
    { $requete = "SELECT   *  FROM globale,historique where globale.id=historique.produit and date>='$deb' and date<='$fi'   ORDER BY id2 DESC "; }
    elseif (empty ($mov) and isset($ou))
    { $requete = "SELECT   *  FROM globale,historique where globale.id=historique.produit  and où='$ou' and date>='$deb' and date<='$fi'  ORDER BY id2 DESC "; }
     
     
    else {$requete = "SELECT   *  FROM globale,historique  where globale.id=historique.produit and move='$mov'  ORDER BY id2 DESC ";}
    Ne serait-il pas possible de n'avoir que deux ligne, cad un if suivit d'un else ?

    Voici l'ensemble formulaire suivit des requètes sql :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    <form action="historique.php" method="post" id=c class=>
    <b>Mouvement : </b>
    <INPUT TYPE=radio NAME=evo value='' checked><span class="b red">tous</span>
    <INPUT TYPE=radio NAME=evo  value=in>entrée
    <INPUT TYPE=radio NAME=evo  value=out >sortie
                             <br>  <br>
     
    <?php   echo "   <b >  Destinataire : </b> <input type=text name=ou > &nbsp;&nbsp";
     
    $date =date("d m Y");
    // décrémentation de la date du jour 
     $date2= mktime(0,0,0,date("m" ),  date("d" ) -10   ,date("Y" ) -1);
    $date2=date("d m Y", $date2);
     
     echo" 
    <b>Date entre </b>
    <INPUT TYPE=text NAME=date1  value='$date2' size=8>
     <b>et</b>  <INPUT TYPE=text NAME=date2  value='$date' size=8>
     ";
    ?>
     
    <input  type="submit" NAME="rec" value="Valider">
    </form>
     
     
     <?php
     include ('connection.php') ;
      //Fonction   18 09 2008 en 2008-09-18
    function in($string) {        
        list( $d, $m, $y) = explode(' ', $string);
        return $y . '-' . $m. '-' .$d;
    }           $deb= in($_POST['date1']);
                 $fi= in($_POST['date2']);
     
    //Fonction  2008-09-18  en  18 09 2008
                   function out($var) {
    list( $a, $b, $c) = explode('-', $var);
        return $c . ' ' . $b. ' ' .$a;
    }
                 $debut=($data['date1']);
                 $debut= out($debut);
                 $fin=($data['date2']);
                 $fin= out($fin);
     
     
                            $ou=($_POST['ou']);
                            $rec=($_POST['rec']);
                            $mov=($_POST['evo']);
     
    //  empty ($mov) = vide $mov       isset($var) = $var remplie
    if (empty ($rec) )
    { $requete = "SELECT   *  FROM globale,historique where globale.id=historique.produit    ORDER BY id2 DESC "; }
    elseif (empty ($mov) and empty($ou))
    { $requete = "SELECT   *  FROM globale,historique where globale.id=historique.produit and date>='$deb' and date<='$fi'   ORDER BY id2 DESC "; }
    elseif (empty ($mov) and isset($ou))
    { $requete = "SELECT   *  FROM globale,historique where globale.id=historique.produit  and où='$ou' and date>='$deb' and date<='$fi'  ORDER BY id2 DESC "; }
     
     
    else {$requete = "SELECT   *  FROM globale,historique  where globale.id=historique.produit and move='$mov'  ORDER BY id2 DESC ";}
    Cordialement
    Philippe

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    167
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 167
    Par défaut
    Salut,

    Je ne sais pas vraiment comment tu peux l'améliorer, mais tu as un champ d'une de t'es table qui s'appelle "où". Le ù c'est pas terrible pour le nom d'un champ dans une base de données.

  3. #3
    Membre confirmé
    Inscrit en
    Juillet 2009
    Messages
    81
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 81
    Par défaut Réponse
    Citation Envoyé par Doki95 Voir le message
    Salut,

    Je ne sais pas vraiment comment tu peux l'améliorer, mais tu as un champ d'une de t'es table qui s'appelle "où". Le ù c'est pas terrible pour le nom d'un champ dans une base de données.

    Ok merci, pour les accents j'ai vu que ça passait ds mysql en local, si online ça pose pb alors je les virerais.
    De ton coté as-tu déjà eu des pb à cause de cela ?

    a+

  4. #4
    Membre éprouvé
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    167
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 167
    Par défaut
    Personnellement, je n'ai jamais eu de problème puisque je ne mets jamais d'accents dans le nom de mes tables ou de mes champs.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Requête SQL multi schémas
    Par Monfy29 dans le forum SQL
    Réponses: 4
    Dernier message: 15/08/2008, 13h06
  2. optimisation de requête SQL
    Par millien dans le forum SQL
    Réponses: 4
    Dernier message: 03/03/2008, 12h48
  3. [Debutant] Requête SQL Multi-Tables
    Par Superbretzel dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 16/02/2008, 11h47
  4. Optimisation de requêtes SQL - utilisation de IN SELECT
    Par cfeltz dans le forum Langage SQL
    Réponses: 3
    Dernier message: 20/12/2006, 09h28
  5. Optimiser une requête SQL d'un moteur de recherche
    Par kibodio dans le forum Langage SQL
    Réponses: 2
    Dernier message: 06/03/2005, 20h55

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo