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 :

Utiliser plusieurs fois une même fonction


Sujet :

Langage PHP

  1. #1
    Membre éclairé Avatar de ledisciple
    Homme Profil pro
    observateur de nuage niveau 2.3
    Inscrit en
    Août 2008
    Messages
    860
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : observateur de nuage niveau 2.3

    Informations forums :
    Inscription : Août 2008
    Messages : 860
    Points : 723
    Points
    723
    Par défaut Utiliser plusieurs fois une même fonction
    Bonjour

    j'ai créé une fonction qui permet de modifier un champ avant l'enregistrement

    Pas de problème.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
    changement ($champ);
    Ce que je voudrais, c'est de pouvoir appeler n'importe quel variable dans ma fonction afin que je puisse transformer d'autre champ futur, sans bien sur appeler les autres. Par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    changement ($untel ou  $deuxtel);


    J'espère avoir été clair !!!

    merci
    _____________________________________________
    Tours Football Club - Turonorum Civitas Libera

    Content pas content de ma réponse? N'hésitez pas votez !!

  2. #2
    Membre éclairé

    Profil pro
    Inscrit en
    Juin 2004
    Messages
    772
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Juin 2004
    Messages : 772
    Points : 872
    Points
    872
    Par défaut
    Sur quoi bloque-tu ? Montre le code de ta fonction si tu veux de l'aide...
    • Mon blog PHP : http://blog.alterphp.com
    • "Peace cannot be kept by force, it can only be achieved by Understanding" -- Albert Einstein

  3. #3
    Membre éclairé Avatar de ledisciple
    Homme Profil pro
    observateur de nuage niveau 2.3
    Inscrit en
    Août 2008
    Messages
    860
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : observateur de nuage niveau 2.3

    Informations forums :
    Inscription : Août 2008
    Messages : 860
    Points : 723
    Points
    723
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    function un ($untel)
    {
    echo $untel;
    }
    Bon vous allez me dire que c'est nul comme fonction, mais c'est pour l'exemple. Je n'arrive pas à changer $untel pour mettre n'importe quelle autre variable.

    De plus, je n'arrive pas à faire sortir une variable que j'aurais créé dans une fonction :


    Page fonction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    function deux ( $deuxtel )
     
    if ( $deuxtel == "3")
    { 
    $SortiUN = "texte bidon";
    }
     
    else
    {
    $SortiDeux = "texte quelqonque";
    }
    Page affichage :
    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
     
    function deux ( $deuxtel , ? )
     
    if ( isset ( $SortiUN  ) )
    {
    echo $SortiUN ;
    }
     
    elseif ( isset ( $SortiDeux ) )
    {
    echo $SortiDeux ;
    }
     
    else
    {
    echo 'quelquonque';
    }
    merci pour vos explications ...
    _____________________________________________
    Tours Football Club - Turonorum Civitas Libera

    Content pas content de ma réponse? N'hésitez pas votez !!

  4. #4
    Membre chevronné Avatar de nosferapti
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    1 157
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 1 157
    Points : 1 895
    Points
    1 895
    Par défaut
    tu veux utiliser cette fonction de quelle façon ? montre nous un exemple
    GNAP !

  5. #5
    Membre éclairé Avatar de ledisciple
    Homme Profil pro
    observateur de nuage niveau 2.3
    Inscrit en
    Août 2008
    Messages
    860
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : observateur de nuage niveau 2.3

    Informations forums :
    Inscription : Août 2008
    Messages : 860
    Points : 723
    Points
    723
    Par défaut
    Citation Envoyé par nosferapti Voir le message
    tu veux utiliser cette fonction de quelle façon ? montre nous un exemple
    Par exemple vérifier la validité de plusieurs champs de plusieurs formulaires.

    Image : vérifier que les champs font bien cette longueur de texte et est bien d'un tel format
    _____________________________________________
    Tours Football Club - Turonorum Civitas Libera

    Content pas content de ma réponse? N'hésitez pas votez !!

  6. #6
    Membre chevronné Avatar de nosferapti
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    1 157
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 1 157
    Points : 1 895
    Points
    1 895
    Par défaut
    Citation Envoyé par ledisciple Voir le message
    Par exemple vérifier la validité de plusieurs champs de plusieurs formulaires.

    Image : vérifier que les champs font bien cette longueur de texte et est bien d'un tel format
    dans ce cas tu peux passer l'information en argument comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    function verifierLongeurMaximale($texte, $longeurMaximale)
    {
        return (mb_strlen($texte, 'UTF-8') <= $longeurMaximale);
    }
     
    echo (verifierLongeurMaximale('abc', 100)) ? 'valide' : 'non valide'; // valide
    echo '<br/>';
     
    echo (verifierLongeurMaximale('aaaaaaaaaaaaaa', 5)) ? 'valide' : 'non valide'; // non valide
    echo '<br/>';
    GNAP !

  7. #7
    Membre éclairé Avatar de ledisciple
    Homme Profil pro
    observateur de nuage niveau 2.3
    Inscrit en
    Août 2008
    Messages
    860
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : observateur de nuage niveau 2.3

    Informations forums :
    Inscription : Août 2008
    Messages : 860
    Points : 723
    Points
    723
    Par défaut
    Citation Envoyé par nosferapti Voir le message
    dans ce cas tu peux passer l'information en argument comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    echo (verifierLongeurMaximale('abc', 100)) ? 'valide' : 'non valide'; // valide
    echo '<br/>';
     
    echo (verifierLongeurMaximale('aaaaaaaaaaaaaa', 5)) ? 'valide' : 'non valide'; // non valide
    echo '<br/>';
    c'est ce bout de code là qui m'intrigue ...
    _____________________________________________
    Tours Football Club - Turonorum Civitas Libera

    Content pas content de ma réponse? N'hésitez pas votez !!

  8. #8
    Membre chevronné Avatar de nosferapti
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    1 157
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 1 157
    Points : 1 895
    Points
    1 895
    Par défaut
    Citation Envoyé par ledisciple Voir le message
    c'est ce bout de code là qui m'intrigue ...
    quelle est la question ?
    GNAP !

  9. #9
    Membre éclairé Avatar de ledisciple
    Homme Profil pro
    observateur de nuage niveau 2.3
    Inscrit en
    Août 2008
    Messages
    860
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : observateur de nuage niveau 2.3

    Informations forums :
    Inscription : Août 2008
    Messages : 860
    Points : 723
    Points
    723
    Par défaut
    le point d'interrogation et la façon d'écrire ... si tu avais un tuto sous la main parlant de celà ( je veux bien chercher de mon côté, mais quoi chercher?)
    _____________________________________________
    Tours Football Club - Turonorum Civitas Libera

    Content pas content de ma réponse? N'hésitez pas votez !!

  10. #10
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Points : 15 059
    Points
    15 059
    Par défaut
    Bonjour,
    Tu peux aussi utiliser un array comme parametre, soit un string a spliter dont les valeurs sont les nom de champs si tu veux modifier plusieurs a la fois.

  11. #11
    Membre chevronné Avatar de nosferapti
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    1 157
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 1 157
    Points : 1 895
    Points
    1 895
    Par défaut
    Citation Envoyé par ledisciple Voir le message
    le point d'interrogation et la façon d'écrire ... si tu avais un tuto sous la main parlant de celà ( je veux bien chercher de mon côté, mais quoi chercher?)
    le "?" est expliqué là :
    http://php.net/operators.comparison#...arison.ternary

    par contre tu devrais enlever le "résolu" de cette discussion parce que sinon on croit que tu n'as plus de question
    GNAP !

  12. #12
    Membre éclairé Avatar de ledisciple
    Homme Profil pro
    observateur de nuage niveau 2.3
    Inscrit en
    Août 2008
    Messages
    860
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : observateur de nuage niveau 2.3

    Informations forums :
    Inscription : Août 2008
    Messages : 860
    Points : 723
    Points
    723
    Par défaut
    Citation Envoyé par andry.aime Voir le message
    Bonjour,
    Tu peux aussi utiliser un array comme parametre, soit un string a spliter dont les valeurs sont les nom de champs si tu veux modifier plusieurs a la fois.
    je suis parti sur ton idée . Soient les champs truc, machin, bidule et bidule sur deux formulaires différents mais à vérifier de la même manière. Tu peux me dire ce que tu en penses? En tout cas ça fonctionne !!!

    form1

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <form action="action_form1">
    <input name = "truc">
    <input name = "machin">
    <input name = "bordel">

    form2

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <form action="action_form2">
    <input name = "bidule">
    action_form1

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    $truc = $_POST['truc'];
    $machin = $_POST['machin'];
    $truc = $_POST['truc'];
    $bidule = ""; // il doit y avoir mieux à faire ... :roll:
     
     
    //fonction.inc.php
    baba ($truc, $machin, $truc , $bidule )
    enregistrement ...
    action_form2

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    $truc = ""; // il doit y avoir mieux à faire ... :roll:
    $machin = ""; // il doit y avoir mieux à faire ... :roll:
    $truc = ""; // il doit y avoir mieux à faire ... :roll:
    $bidule = $_POST['bidule'];
     
    //fonction.inc.php
    baba ($truc, $machin, $truc , $bidule );
    enregistrement ...


    fonction.inc.php

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    function baba ($truc, $machin, $truc , $bidule )
    {
    tab = array ($truc, $machin, $truc , $bidule ) 
    for ( $i=0; $count< count($tab); ++$i)
    {
    if ( preg_match("'[0-9]'", $tab[$i]))
     
    {
    echo "contient un nombre";
    }
     
    }
     
    }
    _____________________________________________
    Tours Football Club - Turonorum Civitas Libera

    Content pas content de ma réponse? N'hésitez pas votez !!

  13. #13
    Membre expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Points : 3 947
    Points
    3 947
    Par défaut
    Salut

    Si le but de ta fonction est de vérifier si une donnée est un nombre, un entier, alors il existe déjà une fonction dans php pour ça :
    ctype_digit() (ou is_numeric() mais pour des nombres genre -1235.456)


    bool ctype_digit ( string text )

    ctype_digit vérifie si tous les caractères de la chaîne text sont des chiffres.

    text
    La chaîne testée.

    Retourne TRUE si tous les caractères de text sont des entiers, FALSE sinon.

    Exemple avec ctype_digit

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    <?php
    $strings = array('1820.20', '10002', 'wsl!12');
    foreach ($strings as $testcase) {
      if (ctype_digit($testcase)) {
        echo "La chaîne $testcase ne contient que des entiers.\n";
      } else {
        echo "La chaîne $testcase ne contient pas que des entiers.\n";
      }
    }
    ?>


    Faut pas oublier qu'il existe au moins 6 000 fonctions php ...



    Puis créer une fonction qui va vérifier d'un coup d'un seul plusieurs champs du formulaire peut être un inconvénient, car au bout on ne sait pas quel est le ou les champs mal saisies ... pas pratique pour faire un message d'erreur précis pour l'utilisateur.
    Traiter chaque champ individuellement le permettra par contre.
    Win XP | WampServer 2.2d | Apache 2.2.21 | Php 5.3.10 | MySQL 5.5.20
    Si debugger, c'est supprimer des bugs, alors programmer ne peut être que les ajouter [Edsger Dijkstra]

  14. #14
    Membre éclairé Avatar de ledisciple
    Homme Profil pro
    observateur de nuage niveau 2.3
    Inscrit en
    Août 2008
    Messages
    860
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : observateur de nuage niveau 2.3

    Informations forums :
    Inscription : Août 2008
    Messages : 860
    Points : 723
    Points
    723
    Par défaut
    Citation Envoyé par RunCodePhp Voir le message
    Salut

    Si le but de ta fonction est de vérifier si une donnée est un nombre, un entier, alors il existe déjà une fonction dans php pour ça :
    ctype_digit() (ou is_numeric() mais pour des nombres genre -1235.456)
    Le code est évidemment simplifié, car il vérifie d'autres choses en même temps !!!

    Citation Envoyé par RunCodePhp Voir le message

    Puis créer une fonction qui va vérifier d'un coup d'un seul plusieurs champs du formulaire peut être un inconvénient, car au bout on ne sait pas quel est le ou les champs mal saisies ... pas pratique pour faire un message d'erreur précis pour l'utilisateur.
    Traiter chaque champ individuellement le permettra par contre
    Le code est évidemment simplifié. La boucle s'arrête et retournera le nom du champ incorrect dans une session et sera affiché dans la page du form concerné
    _____________________________________________
    Tours Football Club - Turonorum Civitas Libera

    Content pas content de ma réponse? N'hésitez pas votez !!

  15. #15
    Membre expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Points : 3 947
    Points
    3 947
    Par défaut
    Citation Envoyé par ledisciple Voir le message
    Le code est évidemment simplifié. La boucle s'arrête et retournera le nom du champ incorrect dans une session et sera affiché dans la page du form concerné
    Il est simplifié d'accord, mais tout est stocker dans un tableau, puis passer en boucle.
    Difficile dans ce cas là de savoir lequel qui pose problème.

    M'enfin ...
    Win XP | WampServer 2.2d | Apache 2.2.21 | Php 5.3.10 | MySQL 5.5.20
    Si debugger, c'est supprimer des bugs, alors programmer ne peut être que les ajouter [Edsger Dijkstra]

  16. #16
    Membre éclairé Avatar de ledisciple
    Homme Profil pro
    observateur de nuage niveau 2.3
    Inscrit en
    Août 2008
    Messages
    860
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : observateur de nuage niveau 2.3

    Informations forums :
    Inscription : Août 2008
    Messages : 860
    Points : 723
    Points
    723
    Par défaut
    Sisi, ne t'inquiète pas pour ça !!! Il affiche ce qui est incorrect Il est inutile de placer tout le code pour mon pb, mais je l'ai sous les yeux et m'affiche bien ce quel champ est incorrect .
    _____________________________________________
    Tours Football Club - Turonorum Civitas Libera

    Content pas content de ma réponse? N'hésitez pas votez !!

  17. #17
    Membre chevronné Avatar de nosferapti
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    1 157
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 1 157
    Points : 1 895
    Points
    1 895
    Par défaut
    Citation Envoyé par ledisciple Voir le message
    Sisi, ne t'inquiète pas pour ça !!! Il affiche ce qui est incorrect Il est inutile de placer tout le code pour mon pb, mais je l'ai sous les yeux et m'affiche bien ce quel champ est incorrect .
    c'est déjà bien si ça fonctionne comme tu veux. maintenant si tu veux j'ai déjà quelques idées de simplification du code mais pour ça il faudrait juste que tu dises si dans le vrai code, $bidule et $truc sont testés de la même façon (avec une boucle "for" par exemple comme avec le code que tu as montré)
    GNAP !

  18. #18
    Membre éclairé Avatar de ledisciple
    Homme Profil pro
    observateur de nuage niveau 2.3
    Inscrit en
    Août 2008
    Messages
    860
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : observateur de nuage niveau 2.3

    Informations forums :
    Inscription : Août 2008
    Messages : 860
    Points : 723
    Points
    723
    Par défaut
    Citation Envoyé par nosferapti Voir le message
    c'est déjà bien si ça fonctionne comme tu veux. maintenant si tu veux j'ai déjà quelques idées de simplification du code mais pour ça il faudrait juste que tu dises si dans le vrai code, $bidule et $truc sont testés de la même façon (avec une boucle "for" par exemple comme avec le code que tu as montré)
    oui, c'est d'ailleurs, le but du jeu du code !!!! Je serai ravi que tu puisses me proposer cette simplification. Si tu pouvais le faire à partir du code que j'ai écris, ça serai encore mieux !!!
    _____________________________________________
    Tours Football Club - Turonorum Civitas Libera

    Content pas content de ma réponse? N'hésitez pas votez !!

  19. #19
    Membre chevronné Avatar de nosferapti
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    1 157
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 1 157
    Points : 1 895
    Points
    1 895
    Par défaut
    une amélioration possible serait par exemple de faire cette fonction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    function verifieNombre($valeur)
        if ( preg_match("'[0-9]'", $valeur))
        {
            echo "contient un nombre";
        }
    }
    et ensuite tu utiliseras cette fonction comme ça :
    action_form1
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    foreach (array('truc', 'machin', 'bidule') as $champ) {
        verifieNombre($_POST[$champ])
    }
    action_form2
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    verifieNombre($_POST['truc']);
    comme ça tu vois bien la séparation en différents fichiers :
    - si tu veux modifier le formulaire "form1" tu as juste besoin de modifier le fichier "action_form1"
    - si tu veux juste modifier la façon de modifier un nombre, tu as juste besoin de modifier la fonction "verifieNombre"
    donc dans chaque cas tu as juste un fichier à modifier
    GNAP !

  20. #20
    Membre expert
    Avatar de ThomasR
    Homme Profil pro
    Directeur technique
    Inscrit en
    Décembre 2007
    Messages
    2 230
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2007
    Messages : 2 230
    Points : 3 972
    Points
    3 972
    Par défaut
    Bonsoir,

    J'aurais amélioré un poil le code comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    function sont_des_nombres(){
        foreach(func_get_args() as $i => $arg){
            if(!is_numeric($arg)){
                return false;
            } 
        }
        return true;
    }
    $sont_des_nombres = sont_des_nombres(1, 'toto');
    var_dump($sont_des_nombres);

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. [Plugin] Utiliser plusieurs fois je même jqgrid dans une page
    Par Christophe Charron dans le forum jQuery
    Réponses: 0
    Dernier message: 06/10/2012, 17h26
  2. Utiliser plusieurs fois le même composant
    Par Ren97 dans le forum Composants VCL
    Réponses: 6
    Dernier message: 01/03/2008, 01h49
  3. Réponses: 2
    Dernier message: 22/05/2006, 14h08
  4. Réponses: 3
    Dernier message: 15/05/2006, 19h04
  5. [VB.NET] Appliquer plusieurs fois la même fonction...
    Par MiJack dans le forum Windows Forms
    Réponses: 9
    Dernier message: 22/09/2004, 10h52

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