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 :

While dans une function ?


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre du Club
    Inscrit en
    Juin 2006
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 6
    Par défaut While dans une function ?
    J'ai élaborer un code qui vérifie si une section de 15 minutes.
    Celui-ci est à été créer pour savoir combien de personne sont au travail durant un temps donné.

    Le code fonctionnais, sauf lors que j'ai indiquer ma

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    function exemple($heure){
     
    }
    pour encadrer le bout de code que je voulais prendre en fonction, celui-ci ne voulais plus fonctionner.

    Bref, le code ne rentre plus dans la boucle while($result=mysql_fetch_object($query) quand je met les balises de fonctions.

    Est-ce une limitation du PHP ?

  2. #2
    Membre Expert

    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 278
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 278
    Par défaut
    Donne un extrait complet de code.
    J'ai du mal à comprendre ton problème. Déclares-tu une fonction dans une condition ? Il ne faut pas la déclarer (quoique cela ne change pas grand chose), mais il faut l'appeler dans le if.

  3. #3
    Membre du Club
    Inscrit en
    Juin 2006
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 6
    Par défaut
    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
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
     
     
    <?
    if (isset($_GET["periode"])) {
    	$periode=$_GET["periode"];
    }
     
    if (isset($_GET["niveau"])) {
    	$niveau=$_GET["niveau"];
    }
     
    if (isset($_GET["jour"])) {
    	$jour=$_GET["jour"];
    }
    ?>
     
    <?
    //Requête pour obtenir tout les tours d'un horaire donnée
    function checkVar($heure) {
    $query=mysql_query("SELECT * FROM horaire WHERE periodeHoraire='".$periode."' AND niveauHoraire='".$niveau."' AND jourHoraire='".$jour."' ORDER BY noHoraire ASC");
    $enposte=0;
     
    while ($result=mysql_fetch_object($query)) {
    	//On obtient le quart 1;
    	$limite=explode("-",$result->quart1);
     
    	//On affiche pour les tests, cette section devra être supprimé
     
    		// On sépare les éléments du quart 1 pour la comparaison du début et de la fin.;
     
    		$morphPart1= explode("h",$limite[0]);
    		if ($morphPart1[1]=="") {
    			$debut=$morphPart1[0]."00";
    		}else{
     
    			$debut=$morphPart1[0].$morphPart1[1];	
    		}
     
     
    		// On sépare les éléments du quart 1 pour obtenir la fin;
    		$morphPart1= explode("h",$limite[1]);
    		if ($morphPart1[1]=="") {
    			$fin=$morphPart1[0]."00";
    		}else{
     
    			$fin=$morphPart1[0].$morphPart1[1];	
    		}
     
    		if ($debut==$heure) {
    			$enposte++;
    		}elseif (($debut<$heure)and($fin>$heure)){
    			$enposte++;	
    		}
     
     
    	//On obtient le quart 1;
    	$limite=explode("-",$result->quart2);
     
    	//On affiche pour les tests, cette section devra être supprimé
     
    		// On sépare les éléments du quart 2 pour la comparaison du début et de la fin.;
     
    		$morphPart1= explode("h",$limite[0]);
    		if ($morphPart1[1]=="") {
    			$debut=$morphPart1[0]."00";
    		}else{
     
    			$debut=$morphPart1[0].$morphPart1[1];	
    		}
     
     
    		// On sépare les éléments du quart 1 pour obtenir la fin;
    		$morphPart1= explode("h",$limite[1]);
    		if ($morphPart1[1]=="") {
    			$fin=$morphPart1[0]."00";
    		}else{
     
    			$fin=$morphPart1[0].$morphPart1[1];	
    		}
     
    		if ($debut==$heure) {
    			$enposte++;
    		}elseif (($debut<$heure)and($fin>$heure)){
    			$enposte++;	
    		}
     
     
    }
    return $enposte;
     
    }
    ?>
     
    <html>
    <?
    print(checkVar(900));
    ?>
    </html>
    Je fais la mise en situation.

    Les employés font des quarts de travail de 8h30-12h00, 9h00-12h30 etc..

    parfois, le créateur de l'horaire inscrit ceux-ci avec seulement un 8h et on doit faire formatage, donc c'est pour celà les explode et la concaténation.

    Dans le fond, l'administrateur des horaires veut savoir combien de personne sont au travail à 9h00, 9h15...

    Cette fonction permet donc l'intérogation de l'horaire..

  4. #4
    Membre du Club
    Inscrit en
    Juin 2006
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 6
    Par défaut
    je sais que ça ne doit pas être grand chose, cependant...
    je ne trouve pas le problème...

    et je crois que c'est une problématique assez simple que je ne trouve aucune information.

    autant sur developpez.com, que google et etc...

  5. #5
    Membre émérite Avatar de FCYPBA
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    745
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Novembre 2004
    Messages : 745
    Par défaut
    Ton while ne marche pas car ta requête ne doit pas fonctionner car les variables $periode, $niveau et $jour n'ont pas de valeurs au sein de la fonction :

    Pour que cela, il faut soit :
    -appeler les versions globales de ces variables dans la fonction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    function ...
    global $periode, $niveau,$jour;
    . Je n'utilise cette solution qu'en dernier recours ( généralement lors de la modification de script php3->php4)

    -soit passer les variables à la fonction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    function ..($heure,$periode, $niveau,$jour) {
    -Tu peux également appeler les variables directement dans la variable $_GET mais je ne trouve pas cela très propre

    Petit conseil. Testes toujours la validité du retours des ..._query(). Et également que tu as des résultats via un ..._num_rows();

  6. #6
    Membre du Club
    Inscrit en
    Juin 2006
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 6
    Par défaut
    effectivement, tu avais raison

    Mes variables $periode, niveau et jour sont déja global.

    j'ai mal fait le copier coller...
    cependant, le fait d'avoir importer les get a l'intérieur de la fonctionner a résolu le probème


    merci

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

Discussions similaires

  1. Type "groupe de controles" dans une function
    Par méphistopheles dans le forum VB 6 et antérieur
    Réponses: 15
    Dernier message: 20/06/2008, 21h07
  2. probleme de boucle while dans une procedure stockée
    Par aboulemagnifique dans le forum SQL Procédural
    Réponses: 6
    Dernier message: 08/08/2007, 12h39
  3. Variables de Sessions crées dans une Function perdues
    Par vampiloup dans le forum Langage
    Réponses: 7
    Dernier message: 12/01/2006, 16h50
  4. insérer les recordset d'un while dans une variable
    Par yoda_style dans le forum ASP
    Réponses: 4
    Dernier message: 31/03/2005, 10h01
  5. tbitmap.free dans une function
    Par portu dans le forum Langage
    Réponses: 7
    Dernier message: 19/06/2003, 22h08

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