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 :

[Conception] utiliser le même script a plusieurs endroits dans différents répertoires


Sujet :

PHP & Base de données

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    1 221
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 1 221
    Points : 472
    Points
    472
    Par défaut [Conception] utiliser le même script a plusieurs endroits dans différents répertoires
    Bonjour,

    J'en ai un peu marre de copier coller des bouts de codes identiques dans différentes pages de mon site : je voudrais rationaliser un peu mon code (je dis rationaliser, si vous avez un meilleur terme hein...).

    Donc je me demande si il n'est pas possible de placer ce bout de code dans un fichier et de l'appeler ensuite là où j'en ai besoin. Je ne parle pas d'un require ou d'un include hein.

    Y'a-t'il une solution? Peut être avec les fonctions ? Personnellement je ne les ai jamais utilisées c'est peut être un tort et c'est peut être le moment, sauf si ça n'a rien à voir.

    Merci pour vos conseils/idées/chèques/suggestions/recommandations.
    C'est pas parce que j'ai tort que vous avez raison.

  2. #2
    Membre éprouvé Avatar de Bebel
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    786
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2003
    Messages : 786
    Points : 1 262
    Points
    1 262
    Par défaut
    salut, et pourquoi pas avec des classes?
    ca me parait bien approprié pour ton cas.
    Sinon pour le cheque tu peux me contacter en privé, pour que je te donne mes coordonnées pour que tu me l'envoie
    Tout énigme a une solution ! Tout est question de discipline !

  3. #3
    Membre expérimenté

    Homme Profil pro
    Inscrit en
    Janvier 2004
    Messages
    1 249
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2004
    Messages : 1 249
    Points : 1 565
    Points
    1 565
    Par défaut
    j'ai un meilleur terme : structurer ;o)

    pourquoi tu n'aime pas les include ? (le require je comprends ;o)

    Les fonctions ne sont utiles que si tu as de legere variation dans la portion de code que tu souhaite afficher. Par exemple, si tu veux afficher un texte formaté d'une certaine maniere :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <span style="..."><b><center> [ texte ] </center></b></span>
    tu peux faire une fonction :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    function affiche($texte) {
     echo "<span style='...'><b><center> [ $texte ] </center></b></span>";
    }
    et l'appeller :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <?php affiche('texte'); ?>
    <?php affiche('texte1'); ?>
    <?php affiche('texte2'); ?>
    autant de fois que tu veux.

    Si tu n'as pas de texte variable, (genre pour un header ou un footer de page) le mieux reste un include :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <?php include('header.php'); ?>
    A noter que pour utiliser des fonctions, il te faudra aussi des include contenant les declarations des fonctions :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <?php include_once('fonctions.php'); ?>
    sur toutes les pages appellant les fonctions.

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    1 221
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 1 221
    Points : 472
    Points
    472
    Par défaut
    D'accord, donc même pas avec les fonctions, l'include est obligatoire. Ok.

    Maintenant prenons cet exemple :
    - J'ai un script qui vérifie le vocabulaire du champ de formulaire nommé "contenu".
    - La variable sur laquelle ce script agit est $contenu.
    - Je veux maintenant utiliser ce même script à un autre endroit du site, pour un autre champ qui se nomme lui "titre".
    - Ici si je sépare le script initial et que je l'inclu, il va correctement fonctionner pour le premier formulaire mais pas pour le second.

    Je peux, me direz-vous, faire un $contenu=$titre pour qu'il fonctionne correctement dans le deuxième cas.

    Mais en fait vous faites comment vous ? Vous avez x requêtes sql ou script à faire à différents endroits , vous copiez-collez sans arrêt le même script par exemple ? Quite à devoir tous les modifier plutot qu'un seul ?

    Je demande ça parce que mon site commence à devenir assez complexe et je dois mieux le structurer. Y'a pas des méthodes pré-établies pour batir des plans de site cohérents ? Tout le monde fait à sa façon ?
    C'est pas parce que j'ai tort que vous avez raison.

  5. #5
    Membre éprouvé Avatar de Bebel
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    786
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2003
    Messages : 786
    Points : 1 262
    Points
    1 262
    Par défaut
    dans ton script tu auras quelque chose comme ca
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    function verifortho($value)
    {
    blablabablba
     
    if ($ok)
    return true;
    else
    return false;
    }
    dans ta page tu feras
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    // pour le contenu
    if (verifortho($contenu) === false)
    echo "il y a des fautes";
     
    // pour le titre
    if (verifortho($titre) === false)
    echo "il y a des fautes dans le titre.";
    Donc en fait tu passe un parametre(ou des) a ta fonction pour qu'elle fonctionne en fonction d'eux.
    Tout énigme a une solution ! Tout est question de discipline !

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    1 221
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 1 221
    Points : 472
    Points
    472
    Par défaut
    Voilà c'est exactement un truc comme ça que j'avais en tête.

    Prenons l'exemple de ce script qui effectue des remplacement des remplacements à l'intérieur de $titre.
    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
    $titre = preg_replace(
                array(
                    '#a{2,}#i',
                    '#b{3,}#i',
                    '#c{3,}#i',
                    '#d{3,}#i',
                    '#e{4,}#i',
                    '#f{3,}#i',
                    '#g{3,}#i',
                    '#h{2,}#i',
                    '#i{2,}#i',
                    '#j{2,}#i',
                    '#k{2,}#i',
                    '#l{3,}#i',
                    '#m{3,}#i',
                    '#n{3,}#i',
                    '#o{3,}#i',
                    '#p{3,}#i',
                    '#q{2,}#i',
                    '#r{3,}#i',
                    '#s{3,}#i',
                    '#t{3,}#i',
                    '#u{2,}#i',
                    '#v{2,}#i',
                    '#w{2,}#i',
                    '#x{2,}#i',
                    '#y{2,}#i',
                    '#z{2,}#i',
                    ),
                array(
                    'a',
                    'bb',
                    'cc',
                    'dd',
                    'eee',
                    'ff',
                    'gg',
                    'hh',
                    'i',
                    'j',
                    'k',
                    'll',
                    'mm',
                    'nn',
                    'oo',
                    'pp',
                    'q',
                    'rr',
                    'ss',
                    'tt',
                    'u',
                    'v',
                    'w',
                    'x',
                    'y',
                    'z'),
     
                $titre
                );
    Imaginons que maintenant je veuille simplement inclure ce script, sans le modifier à chaque utilisation et qu'ils fonctionnent pour toutes les variables des différents pages où je l'utilise. Cela donnerait quoi dans ce cas ? J'ai besoin d'un exemple pratique.
    C'est pas parce que j'ai tort que vous avez raison.

  7. #7
    Membre éprouvé Avatar de Bebel
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    786
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2003
    Messages : 786
    Points : 1 262
    Points
    1 262
    Par défaut
    dans ton fichier tu aurais
    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
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
     
    function remplace($titre)
    {
    $titre = preg_replace(
                array(
                    '#a{2,}#i',
                    '#b{3,}#i',
                    '#c{3,}#i',
                    '#d{3,}#i',
                    '#e{4,}#i',
                    '#f{3,}#i',
                    '#g{3,}#i',
                    '#h{2,}#i',
                    '#i{2,}#i',
                    '#j{2,}#i',
                    '#k{2,}#i',
                    '#l{3,}#i',
                    '#m{3,}#i',
                    '#n{3,}#i',
                    '#o{3,}#i',
                    '#p{3,}#i',
                    '#q{2,}#i',
                    '#r{3,}#i',
                    '#s{3,}#i',
                    '#t{3,}#i',
                    '#u{2,}#i',
                    '#v{2,}#i',
                    '#w{2,}#i',
                    '#x{2,}#i',
                    '#y{2,}#i',
                    '#z{2,}#i',
                    ),
                array(
                    'a',
                    'bb',
                    'cc',
                    'dd',
                    'eee',
                    'ff',
                    'gg',
                    'hh',
                    'i',
                    'j',
                    'k',
                    'll',
                    'mm',
                    'nn',
                    'oo',
                    'pp',
                    'q',
                    'rr',
                    'ss',
                    'tt',
                    'u',
                    'v',
                    'w',
                    'x',
                    'y',
                    'z'),
     
                $titre
                );
    return $titre;
    }
     
    // et pour l'appel
     
    $new= remplace($mavariable);
    $titi = remplace($toto);
    tu peux ainsi faire plusieurs appel sans modifier le code, la seule chose qui change c'est la variable que tu fournis en parametre.
    Tout énigme a une solution ! Tout est question de discipline !

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    1 221
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 1 221
    Points : 472
    Points
    472
    Par défaut
    1) Bon finalement ça change pas grand chose par rapport à la solution qui consiste à inclure le code que j'ai marqué au dessus et puis juste avant je passe la variable à filtrer dans une autre qui à le nom de celle sur laquelle travaille le script ?

    2) Rq j'ai pas compris ce que viennent faire $new= remplace($mavariable);
    $titi = remplace($toto); dans ton exemple, Bebel. Et dans ta fonction, tu as déjà un nom imposé, $titre, donc comment faire pour que cette fonction travaille avec une autre variable.
    J'ai rien pigé de plus désolé
    C'est pas parce que j'ai tort que vous avez raison.

  9. #9
    Membre éprouvé Avatar de Bebel
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    786
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2003
    Messages : 786
    Points : 1 262
    Points
    1 262
    Par défaut
    Citation Envoyé par psychoBob

    2) Rq j'ai pas compris ce que viennent faire $new= remplace($mavariable);
    $titi = remplace($toto); dans ton exemple, Bebel. Et dans ta fonction, tu as déjà un nom imposé, $titre, donc comment faire pour que cette fonction travaille avec une autre variable.
    J'ai rien pigé de plus désolé
    en fait j'appelle la fonction remplace en lui passant $mavariable ou $toto comme parametre.
    dans la fonction $titre est juste le nom de mon parametre dans sa declaration. Mais apres pour l'appel je peux lui passer le parametre que je veux.
    Tout énigme a une solution ! Tout est question de discipline !

  10. #10
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    1 221
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 1 221
    Points : 472
    Points
    472
    Par défaut
    Bon je vais me chercher un bon tuto sur les fonctions, ça a l'air pratique, il serait peut être tant que je m'y mette (si vous en avez un hésitez pas).
    Un exemple pour voir. C'est valable ça ?

    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
    //fonction écrite dans un fichier inclu en haut de la page.
    function genial($bob)
    {
    $bob= preg_replace(
                array(
                    '#a{2,}#i',
                    '#z{2,}#i',
                    ),
                array(
                    'a',
                    'z'),
     
                $bob
                );
    return $bob;
    }
     
    // appel de la fonction en milieu de page par exemple :
    $jacques= genial($bob);
    Donc si j'ai bien compris je marque genial($bob) parce que genial est le nom donné à la fonction et ensuite je marque $jacques=genial($bob) pour appeler cette fonction nommée genial() et la faire agir sur $jacques.
    Mais alors pourquoi a-t'on tout de même une variable indiquée en paramètre dans la fonction tout en haut ? Uniquement pour l'écriture de celle-ci et la faire fonctionner ?
    Et lorsque l'on fait $jacques=genial($bob) cela équivaut à dire remplace la variable $bob par la variable $jacques dans la fonction genial() et fait pareil avec, c'est ça ?
    Et donc une fois que j'ai inclu la fonction dans la page, je peux l'appeler autant de fois que je veux sans avoir à la réécrire, c'est cela ? Je change juste le nom de la variable sur laquelle elle doit agir, c'est cela ?
    C'est pas parce que j'ai tort que vous avez raison.

  11. #11
    Membre éprouvé Avatar de Bebel
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    786
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2003
    Messages : 786
    Points : 1 262
    Points
    1 262
    Par défaut
    Non en fait si tu veux appliquer la methode genial a $jacques tu dois faire
    genial($jacques)
    si tu fais par exemple

    $andre = genial($jacques)
    tu auras dans $andre le resultat de l'appel de la fonction sur $jacques.

    Mais alors pourquoi a-t'on tout de même une variable indiquée en paramètre dans la fonction tout en haut ? Uniquement pour l'écriture de celle-ci et la faire fonctionner ?
    la variable dans l'entete de la fonction est pour la remplacer et l'utilise dans le corps de la fonction. Apres c'est PHP qui se debrouille pour qu'au moment de l'appel attribue la valeur de $jacques a $bob.
    Tout énigme a une solution ! Tout est question de discipline !

  12. #12
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    1 221
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 1 221
    Points : 472
    Points
    472
    Par défaut
    ok, c'est noté, je vais faire quelques tests pour voir si tout fonctionne comme prévu.
    Merci Bebel
    C'est pas parce que j'ai tort que vous avez raison.

  13. #13
    Membre éprouvé Avatar de Bebel
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    786
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2003
    Messages : 786
    Points : 1 262
    Points
    1 262
    Par défaut
    De rien
    Tout énigme a une solution ! Tout est question de discipline !

  14. #14
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    1 221
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 1 221
    Points : 472
    Points
    472
    Par défaut
    Une autre question :
    Si j'ai trois script qui font appel à une même fonction et que j'inclu cette fonction en haut de la page. Est-ce que cela permet d'optimiser le temps d'exécution de page, par rapport à la solution qui consiste à recopier trois fois le même script ?
    C'est pas parce que j'ai tort que vous avez raison.

  15. #15
    Membre éprouvé Avatar de Bebel
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    786
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2003
    Messages : 786
    Points : 1 262
    Points
    1 262
    Par défaut
    je dirais oui, mais dans ce cas, je n'en suis pas sur. Mais une chose de sur c'est que si tu devais modifier la fonction tu n'aurais a le faire qu'une fois et pas x fois par page ou tu utiliserais le code. Et donc dans ce cas ca eviterais des oublis.
    Tout énigme a une solution ! Tout est question de discipline !

  16. #16
    Membre expérimenté

    Homme Profil pro
    Inscrit en
    Janvier 2004
    Messages
    1 249
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2004
    Messages : 1 249
    Points : 1 565
    Points
    1 565
    Par défaut
    non, le temps d'execution est meme legerement augmenté... mais si legerement que c'est négligeable... les avantages d'une fonction (maintenabilité, lisibilité, etc...) compensent largement cet inconvenient.

    Pour tout te dire... je trouve meme difficile a croire que tu ait pu faire du php sans utiliser de fonction jusqu'a présent, c'est quasi inconcevable pour moi ;o)

  17. #17
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    1 221
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 1 221
    Points : 472
    Points
    472
    Par défaut
    Bah non seulement j'ai fait du php mais en plus j'ai fait tout un forum comme ça
    Mais maintenant je ressens le besoin de rendre mon compte plus confortable à lire et à mettre à jour, alors je me disais bien que les fonctions étaient faites pour ça . Mieux vaut tard que jamais !

    (Rq j'ai pas essayé encore de les placer dans mon code, je suis pas sur ça là, mais bon je vois pas pk ça poserait de problème).
    C'est pas parce que j'ai tort que vous avez raison.

  18. #18
    Membre éclairé
    Avatar de kankrelune
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    763
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 763
    Points : 858
    Points
    858
    Par défaut
    Structurer une application c'est très important...

    • 1 pour un code plus propre dans lequel tu ne te perd pas
    • 2 pour une maintenance facilitée
    • 3 pour de meilleurs performances


    Un site web et par extension la plupart des appli quelque soit le language utilisé c'est comme une maison... il est inutile de mettre un chauffe-eau dans chaque pieces... .. .

    Dans l'idée il est donc important de bien organiser la structure interne du site (je ne parle pas de la navigation)... en général on crée des fichiers commun qui définnissent/appliquent des routines elles même communes au site... l'exemple le plus courant c'est le header.php qui vas lancer toutes les routines indispensable au site... connection à la base, récupération de la configuration du site, verification relative à l'utilisateur (connecté, pas connecté, droits, mise à jour de la session), définition des fonctions communes au site, instanciation de class (par exemple pour les templates) s'il y a besoin, etc... ainsi tu n'as plus qu'a inclure le fichier header.php dans ta page pour que toute ces routine soit lancée... .. .

    Ne pas fonctionner comme ça à pour avantage de faire gagner quelques microsecondes en temps d'éxécution (faut s'appeler flash gordon pour voir la différence comme disait quelqu'un sur un autre topic) mais de rendre illisible le code (page de xxxxxxx lignes), d'en rendre la maintenance quasi impossible (50 pages à modifier pour changer 3 lignes) et surtout de considérablement grossir ton appli (les fichiers font le double voir le triple de la taille qu'ils pourraient faire)... .. .

    Voili voilou... .. .

    @ tchaOo°

Discussions similaires

  1. Réponses: 3
    Dernier message: 20/12/2011, 17h17
  2. utilisation de script js plusieurs fois dans une même page
    Par tribalnanasss dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 09/07/2010, 00h34
  3. Réponses: 3
    Dernier message: 14/05/2010, 21h24
  4. Réponses: 2
    Dernier message: 01/10/2009, 15h58
  5. Utilisation du mème trigger pour plusieurs PS
    Par Stouille33 dans le forum Développement
    Réponses: 2
    Dernier message: 17/10/2008, 09h18

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