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

Langage PHP Discussion :

Reflexion pour optimiser


Sujet :

Langage PHP

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 31
    Points : 18
    Points
    18
    Par défaut Reflexion pour optimiser
    Bonjour,

    je met en place un fils d'Ariane, mon code marche mais comme je débute je pense qu'il y a possibilité d'améliorer largement le code.
    Donc si quelqu'un à les compétences pour me donner quelques conseils et m'améliorer le code.
    Voici les détails :
    Table rubriques avec id_rubrique, id_parent, titre
    Ca donne quelque chose comme ça :

    titre id_rubrique id_parent
    1er rub 1 0
    2èeme 2 1
    3ème 3 2

    Et voici le code php associé qui serait à optimiser. Je pense que le fait de faire des while tout le temps ça doit ralentir :

    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
    <?PHP
    //INSTANCE DE REQUETE
    $sql = new Sqlal();
    IF(EMPTY($_GET['som'])AND!EMPTY($_GET['rub'])){
        $g_id_rub=$_GET['rub'];
        $sql->query("SELECT id_rubrique,id_parent,titre  FROM rubriques WHERE id_rubrique='".$g_id_rub."';","rub");
        $row_sec=$sql->fetch_object("rub");
            $id_parent=$row_sec->id_parent;
            $id_rub_voulu=$row_sec->id_rubrique;
            $nom_rub_voulu=$row_sec->titre;
        //REDIRECTION SI RUB A UN PARENT===0 CE QUI NE DEVRAIT PAS ARRIVÉ
        IF($id_parent==='0'){
            header("Location: index.php?action=visualiser&som=".$id_rub_voulu."");
        }
        //LORSQUE QUE LA RUBRIQUE À UN PARENT
        ELSE {
            $sql->query("SELECT id_rubrique,id_parent,titre  FROM rubriques WHERE id_rubrique='".$id_parent."';","nom_ssrub");
            $row_parent=$sql->fetch_object("nom_ssrub");       
            $nom_parent=$row_parent->titre;
            $id_rub=$row_parent->id_rubrique;
            $id_parent_dernier=$row_parent->id_parent;
            IF($id_parent_dernier==='0'){
                $this->fils_ariane .='&nbsp;<a  href="./index.php?action=visualiser&som='.$id_rub.'">'.$nom_parent.'</a>&nbsp;>&nbsp;'.$nom_rub_voulu;           
            }
            ELSE{
                $sql->query("SELECT id_rubrique,titre  FROM rubriques WHERE id_rubrique='".$id_parent_dernier."';","nom_premrub");
                $row_pr=$sql->fetch_object("nom_premrub");       
                $nom_pr=$row_pr->titre;
                $id_rub_pr=$row_pr->id_rubrique;
                $this->fils_ariane .='&nbsp;<a href="./index.php?action=visualiser&som='.$id_rub_pr.'">'.$nom_pr.'</a>&nbsp;>';
                $this->fils_ariane .='&nbsp;<a  href="./index.php?action=visualiser&rub='.$id_rub.'">'.$nom_parent.'</a>&nbsp;>';
                $this->fils_ariane .='&nbsp;'.$nom_rub_voulu;
            }
        }
    }   
    ?>
    le but serait que je ne sois pas limité. C'est à dire que j'ai un truc du style tant que la rubrique n'a pas 0 en id_parent on fait le lien.
    En effet 0 indique que c'est la rubrique principal.

    A titre indicatif quand je fais une requête je l'identifie avec un nom différents d'où un truc du style :

    "SELECT * FROM table ';","nom_unique"


    Voilà en espérant que quelqu'un puisse me donner un coup de main pour l'optimisation du code pour que je ne sois pas limité.
    Si la personne pouvais mettre le code avec pas mal de commentaire ça m'aiderai car j'aimerai bien être sûr de comprendre car j'ai du mal avec la notion de récursivité.
    Merci d'avance pour votre aide.

  2. #2
    FoxLeRenard
    Invité(e)
    Par défaut
    Bonjour, et Bienvenue

    J'ais juste mis ton code dans les balises ,

    Ta question est intéressante , juste un petit tour avant de te répondre
    pour bien analyser ça

    Ah oui en attendant, tu est obligé d' utiliser GET ?
    c' est plus "pénétrable que le POST !

    bon on en reparle quand j'aurais lu ça

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 31
    Points : 18
    Points
    18
    Par défaut
    Citation Envoyé par FoxLeRenard Voir le message
    Bonjour, et Bienvenue

    J'ais juste mis ton code dans les balises ,

    Ta question est intéressante , juste un petit tour avant de te répondre
    pour bien analyser ça

    Ah oui en attendant, tu est obligé d' utiliser GET ?
    c' est plus "pénétrable que le POST !

    bon on en reparle quand j'aurais lu ça
    Bonjour,

    oui je l'utilise car il s'agit d'un fils d'ariane du style :
    Home : rubrique 1 > rubrque 2

    Merci de regarder.
    P.S : je ne savais pas pour les balises désolé.

  4. #4
    FoxLeRenard
    Invité(e)
    Par défaut
    Citation Envoyé par eltyty Voir le message
    Bonjour,
    oui je l'utilise car il s'agit d'un fils d'ariane du style :
    Home : rubrique 1 > rubrque 2
    Merci de regarder.
    P.S : je ne savais pas pour les balises désolé.
    Pas de probléme pour le # CODE
    Ok je comprends pour le GET, amis alors il faut le protéger, car tel qu'il est , tu passe du javascript ou autre ......

    Alors EMPTY ...
    De plus je ne sais pourquoi tu dis que ça marche car notoirement
    tu as indiqué PHP4
    Ors depuis PHP 4, la chaîne de caractères "0" est considérée comme vide.

    bref pour améliorer, clarifier et sécuriser même si c'est plus long a écrire
    je mettrais en tête du PHP
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    <?PHP
    if (isset($_GET["rub"])) $g_id_rub=htmlentities(trim($_GET["rub"]));
        else $g_id_rub="";
    //======= apres on utilise
    if ($g_id_rub !="") {}
    par contre impossible de trouver l'exploitation de som ?
    expliques un peut

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 31
    Points : 18
    Points
    18
    Par défaut suite
    J'utilise som car en gros, si je trouve som dans l'url, j'affiche une message un peut particulier.

    Si tu clic sur une rubrique qui a id_parent à 0, c'est que c'est la principale. Du coup j'affiche sommaire de la rubrique. Alors qu'en classique j'affiche juste le nom de la rubrique. Voici un exemple :

    Si on clic sur rubrique principal, donc on a som dans l'url, on affiche :
    Home : Sommaire Rubrique principale
    Si on clic sur la rubrique secondaire, on a pas som mais juste rub, on affiche :
    Home : Rubrique principale > Rubrique secondaire

    Voilà. Maintenant je suis preneur pour améliorer ça. En espérant que j'ai été assez clair.
    Quand à l'amélioration du Get d'habitude je le fais mais là...c'était pour simplifier l'exemple
    Donc merci à toute personne qui voudra bien m'aider.

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 31
    Points : 18
    Points
    18
    Par défaut Suite au cas où
    Bonjour,

    Moralité je galère toujours et personne ne me répond donc voilà où j'en suis actuellement.

    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
     
     
    IF(EMPTY($_GET['som'])AND $g_id_rub !=""){
    	function affiche_cat($id) {
    	$sql = "SELECT * FROM rubriques WHERE id_rubrique=$id";
    	$req = mysql_query($sql);
    	$db_data = mysql_fetch_assoc($req);
    	$parent_num = $db_data['id_parent'];
    	$category = $db_data['titre'];
    	echo "<strong>$id $category - </strong>";
     
    	if ($parent_num!='0') {
    	   affiche_cat($parent_num);
    	}
    	return $test;
    	}
    	$category_id = $g_id_rub;
    	affiche_cat($category_id);		
    }
    Mais bon j'ai essayé d'adapté mais bof les résultats sont dans le sens inverse de ce qu'il faut et j'ai du mal à comprendre exactement le truc donc s'li vous plaît quelqu'un peu m'aider ???

    Merci d'avance.

Discussions similaires

  1. Pour optimiser le chargement ?
    Par Kerod dans le forum Balisage (X)HTML et validation W3C
    Réponses: 6
    Dernier message: 06/04/2005, 22h50
  2. Réponses: 5
    Dernier message: 04/10/2004, 18h20
  3. [glut] vmanque d'inspiration pour optimiser
    Par khayyam90 dans le forum OpenGL
    Réponses: 7
    Dernier message: 01/09/2004, 13h41
  4. [DirectDraw] Que faire pour optimiser le rendu ???
    Par mat.M dans le forum DirectX
    Réponses: 8
    Dernier message: 12/12/2003, 18h02

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