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 :

[Tableaux] Comment utiliser un tableau (array) globalement ? [Fait]


Sujet :

Langage PHP

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Septembre 2005
    Messages : 10
    Points : 9
    Points
    9
    Par défaut [Tableaux] Comment utiliser un tableau (array) globalement ?
    Bonjour,

    Si je veux utiliser une variable dans une fonction, je procède de la sorte :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    $variable = "toto";
     
    function MaFonction()
    {
        global $variable;
     
        echo $variable;
    }
    Est-il possible de faire la même chose avec un tableau ?

    Le but de l'exercice serait d'utiliser une fonction qui testerait la longueur d'une chaîne de caractères et qui insèrerait un message d'erreur dans un tableau si la chaîne était plus petite que 1, exemple (le code ne fonctionne bien évidemment pas, c'est juste pour illustrer ce que je voudrais faire) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    $ArrError = Array();
     
    ChkNotEmpty($Str1, "Erreur 1");
    ChkNotEmpty($Str2, "Erreur 2");
     
    function ChkNotEmpty($StrValue, $StrMsg)
    {
        if(strlen($StrValue) < 1)
        {
            array_push ($ArrError, $StrMsg);
        }       
    } //Function ChkNotEmpty
    Merci pour votre aide !

  2. #2
    Membre éprouvé
    Avatar de viviboss
    Profil pro
    Inscrit en
    Août 2006
    Messages
    943
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Gard (Languedoc Roussillon)

    Informations forums :
    Inscription : Août 2006
    Messages : 943
    Points : 1 248
    Points
    1 248
    Par défaut
    Une variable "tableau" est une variable comme une autre, alors tu peux en faire ce que tu veux !!!!

    si tu fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    function tableau ($tab){
    global $tab;
     
    foreach($tab as $key=>$value){
    echo $key." : ".$value;
    }
    }
    Ma foi, $tab sera global comme toute autre variable..... Fais l'essai !!!
    Veni Vidi Vici
    -------------------------
    Mes articles : developpez.com ou bien vbview.net
    -------------------------
    Et SURTOUT ne pas oublier la bible PHP : --> php_manual_fr.chm!!!
    Et aussi : --> pear_manual_fr.chm!!!

    Ou encore : --> Les tutoriaux & cours PHP de Développez.com
    -------------------------

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Septembre 2005
    Messages : 10
    Points : 9
    Points
    9
    Par défaut
    Hello,

    Merci pour le conseil !

    Cela n'a pas fonctionné tout de suite car à l'intérieur de la fonction, j'écrivais :

    global $MonTableau;

    et j'obtenais une erreur au moment de remplir mon tableau, il me disait que "Le premier argument devrait être un tableau dans monscript.php ligne x".

    En supprimant cette déclaration, ça fonctionne.

    Vu que le tableau est initialisé avant l'appel de la fonction et que je le passe en paramètre lors de l'appel de cette fonction, je suppose qu'il ne faut pas le re-déclarer globalement...

    A toutes fins utiles, voici le code qui fonctionne, maintenant :

    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
     
    $StrTable = "matable";
    $ArrValues  = array('champ1'=>"'valeur_x'",
    		'champ2'=> htmlspecialchars("'valeur y'"),
    		'champ3'=>"'".$variable_z."'",
    		);
    InsertIntoDB($ArrValues, $StrTable);
     
    function InsertIntoDB($ArrValues, $StrTable) //Je pourrais utiliser d'autres noms...
    	{
    	$fields = implode(array_keys($ArrValues), ',');
    	$values = implode(array_values($ArrValues), ',');
     
    	$StrQry = 'INSERT INTO `'.$StrTable.'` ('.$fields.') VALUES ('.$values.');';
     
    	$SqlRes = mysql_query($StrQry)OR die(mysql_error());
     
    	return true;
    	}  // Function InsertIntoDB

  4. #4
    Membre éprouvé
    Avatar de viviboss
    Profil pro
    Inscrit en
    Août 2006
    Messages
    943
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Gard (Languedoc Roussillon)

    Informations forums :
    Inscription : Août 2006
    Messages : 943
    Points : 1 248
    Points
    1 248
    Par défaut
    Ouais, c'est bien, mais vu que PHP est un langage interprété (de haut en bas et de gauche à droite), moi j'aurai déclaré ma fonction AVANT ton appel de fonction....

    Par contre, évidement, il faut que ta variable tableau soit déclaré AVANT que tu l'utilise ailleur (appel à ta fonction....)....

    Il faut que tu programme comme tu lis :

    Je te conseils de déclarer tes fonctions dans un fichier séparé et que tu inclue en haut de ton script, lorsque tu l'utilises....Comme ca, tu ne t'en occupe plus, et ca marche !!!

    exemple : script fonctions.php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    //page de ta fonction : fonctions.php
    function InsertIntoDB($ArrValues, $StrTable) //Je pourrais utiliser d'autres noms...
    	{
    	$fields = implode(array_keys($ArrValues), ',');
    	$values = implode(array_values($ArrValues), ',');
     
    	$StrQry = 'INSERT INTO `'.$StrTable.'` ('.$fields.') VALUES ('.$values.');';
     
    	$SqlRes = mysql_query($StrQry)OR die(mysql_error());
     
    	return true;
    	}  // Function InsertIntoDB
    Et dans ta page de code courante : codes.php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    include('fonctions.php');
     
    $StrTable = "matable";
    $ArrValues  = array('champ1'=>"'valeur_x'",
    		'champ2'=> htmlspecialchars("'valeur y'"),
    		'champ3'=>"'".$variable_z."'",
    		);
    InsertIntoDB($ArrValues, $StrTable);
    Veni Vidi Vici
    -------------------------
    Mes articles : developpez.com ou bien vbview.net
    -------------------------
    Et SURTOUT ne pas oublier la bible PHP : --> php_manual_fr.chm!!!
    Et aussi : --> pear_manual_fr.chm!!!

    Ou encore : --> Les tutoriaux & cours PHP de Développez.com
    -------------------------

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

Discussions similaires

  1. Réponses: 6
    Dernier message: 26/01/2008, 10h37
  2. [Tableaux] Comment utiliser un tableau dans ce cas
    Par Equinoxe5 dans le forum Langage
    Réponses: 1
    Dernier message: 19/08/2007, 22h13
  3. Réponses: 1
    Dernier message: 14/09/2006, 10h53
  4. Réponses: 5
    Dernier message: 13/06/2006, 11h08
  5. Réponses: 4
    Dernier message: 24/08/2005, 14h09

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