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 :

Utilisation de fonction


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    151
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2012
    Messages : 151
    Par défaut Utilisation de fonction
    Bonjour à tous,

    Je débute en php et étant plutôt habitué au C#/java j'ai du mal à comprendre la philosophie de ce langage...
    Partons d'un problème simple:

    Je souhaiterai afficher sur ma page web le mois, partant du mois en cours (jusque là j'y suis arrivé),
    puis ajouter 2 boutons qui me permettrons de changer de mois, dans un sens ou dans l'autre, avec donc pour contrainte que les mois vont de 1 à 12. Au delà il faudra changer aussi l'année.

    Je pense que c'est quelque chose de simple à réaliser, en tout cas ça l'est en C#, mais je ne comprends pas comment y parvenir en html/php...

    Je vous donne mon code actuel:

    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
            $currentMonth = date("m");
            $selectedMonth = $currentMonth;
     
            function nextMonth()
            {
                if($selectedMonth < 12)
                {
                    $selectedMonth++;
                }
                else
                {
                    $selectedMonth = 1;
                }
                return $selectedMonth;
            }
     
            function prevMonth()
            {
                if($selectedMonth > 1)
                {
                    $selectedMonth--;
                }
                else
                {
                    $selectedMonth = 12;
                }
                return $selectedMonth;
            }
        ?>
     
        <div>
            <input type="button" class="buttonNextPrev" name="buttonPrevMonth" value="<" onclick="">
            <label class="LabelSelectedMonth"><?php echo $selectedMonth;?></label>
            <input type="button" class="buttonNextPrev" name="buttonNextMonth" value=">" onclick="">
        </div>

  2. #2
    Expert confirmé
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 713
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 713
    Par défaut
    pour commencer la base du web est qu'un URL donné présente toujours les même informations avec une requête GET.
    donc l'appel de votre page sera du genre "liste_evenements.php?mois=3&annee=2021"

    la 1re étape est de vérifier si les arguments d'entrée sont corrects, de la façon suivante par exemple
    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
    $mois_actuel = date("m");
    $annee_actuelle = date("Y");
     
     
    if (!isset($_GET["mois"])) { // si le mois n'est pas indiqué dans l'URL
    	$mois = $mois_actuel;
    } else {
    	$mois = floor($_GET["mois"]);
    }
     
    if (!isset($_GET["annee"])) { // si l'année n'est pas indiquée dans l'URL
    	$annee = $annee_actuelle;
    } else {
    	$annee = floor($_GET["annee"]);
    }
     
    // ici vous pouvez tester si le mois est entre 1 ou 12 s'il y a besoin
    les blocs "if" peuvent être compressés avec l'opérateur "??" :
    https://www.php.net/manual/fr/langua...rison.coalesce


    ensuite la 2e étape est de calculer les valeurs des mois suivants et précédents pour construire les liens "mois précédent" et "mois suivant".

  3. #3
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    151
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2012
    Messages : 151
    Par défaut
    Merci, mais désolé je n'ai pas du tout compris votre réponse...

    J'ai peut être raté un épisode sur la conservation des variables ?
    Mais en tout cas dans l'URL de ma page je n'ai rien après le ".php".

    Mais ce qui m'intéresse surtout (Et si c'est lié alors j'ai raté quelque chose) c'est justement "l'étape 2", celle de l'appel des fonctions via l’évènement click sur un bouton.
    A l'heure actuelle, si je rajoute l'appel de mes fonctions dans le "onclick=", j'obtiens un message warning sur ma page comme quoi "selectedMonth" n'est pas déclarée. Et rien ne se passe a l'appuie sur mes boutons.

  4. #4
    Expert confirmé
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 713
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 713
    Par défaut
    Citation Envoyé par BartRoX Voir le message
    Mais en tout cas dans l'URL de ma page je n'ai rien après le ".php".
    ces paramètres dans l'url, c'est le point de départ avant même de commencer à écrire votre code.

  5. #5
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    151
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2012
    Messages : 151
    Par défaut
    Sinon, quelqu'un pour m'aider à comprendre le php au travers de ce problème basique ?

  6. #6
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Lead dév - Architecte
    Inscrit en
    Août 2003
    Messages
    6 693
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Lead dév - Architecte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2003
    Messages : 6 693
    Par défaut
    Ton problème n'est pas réellement un problème de compréhension de PHP mais du web et de http.
    Php est très proche de java ou c# en terme de syntaxe et de fonctionnement , si tu es à l'aise dans ses langages tu n'auras pas de problème avec php.

    Pour ta problématique.
    Quand tu ajoute un bouton sur page html , tu ne peux pas le voir comme un bouton sur une UI C# ou JAVA avec le quel on peut déclencher un événement, sauf si tu code en javascript.

    Quand ta page html s'affiche , PHP à déjà fini de s'exécuter et plus aucune interaction n'est possible.
    Il faut donc réenvoyer une requête à PHP pour pouvoir faire quelque chose.

    Donc ademettons tu ouvre ta page "mois.php" Elle affiche 4
    Pour aller au mois suivant , il va falloir dire à PHP quel est le mois en cours et que tu veux aller au mois suivant. I lfaut donc un lien du type :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <a href="http://monsite.com/mois.php?current=4&action=next"></a>
    Je rappel ici le script PHP avec 2 paramètres :
    current qui vaut 4 et correspond à mon mois en cours
    actionqui vaut "next" et qui indique ce que je veux faire.

    LE script PHP devras donc gérer ces 2 paramètres pour réaliser ce qu'on lui demande :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    $current = $_GET['current'] ?? date("m"); // récup des paramètre si existant , sinon valeur par défaut
    $action = $_GET['action'] ?? null;
     
    if($action == 'next') {
    	nextMonth($current);
    } else if ($action == 'prev') {
    	prevMonth($current);
    } else {
    	currentMonth();
    }
    Et il faut ensuite mettre à jour les liens de navigation en fonction de ce qu'on recois de PHP.

    Un exemple complet basé sur ton code :

    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
    <?php
    $current = $_GET['current'] ?? date("m");
    $current = intval($current);
    $action = $_GET['action'] ?? null;
     
    if($action == 'next') {
    	$current = nextMonth($current);
    } else if ($action == 'prev') {
    	$current = prevMonth($current);
    }
     
    function nextMonth($selectedMonth)
    {
    	if($selectedMonth < 12)
    	{
    		$selectedMonth++;
    	}
    	else
    	{
    		$selectedMonth = 1;
    	}
    	return $selectedMonth;
    }
     
    function prevMonth($selectedMonth)
    {
    	if($selectedMonth > 1)
    	{
    		$selectedMonth--;
    	}
    	else
    	{
    		$selectedMonth = 12;
    	}
    	return $selectedMonth;
    }
        ?>
     
    <div>
    	<a href="?current=<?=$current?>&action=prev"> < </a>
    	<label class="LabelSelectedMonth"><?php echo $current;?></label>
    	<a href="?current=<?=$current?>&action=next"> > </a>
    </div>
    Pry Framework php5 | N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

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

Discussions similaires

  1. [ASP] Utiliser la fonction PAD
    Par Hell dans le forum ASP
    Réponses: 4
    Dernier message: 31/03/2005, 17h23
  2. manuel d'utilisation de fonction
    Par SteelBox dans le forum Langages de programmation
    Réponses: 1
    Dernier message: 11/10/2004, 02h28
  3. Utiliser des fonctions Pascal
    Par Neilos dans le forum C++Builder
    Réponses: 2
    Dernier message: 07/03/2004, 16h43
  4. Réponses: 11
    Dernier message: 22/12/2003, 22h06
  5. impossible d'utiliser ma fonction dans un insert
    Par caramel dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 10/04/2003, 16h04

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