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 :

compteur d'appel d'une fonction


Sujet :

Langage PHP

  1. #1
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2015
    Messages
    238
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2015
    Messages : 238
    Points : 95
    Points
    95
    Par défaut compteur d'appel d'une fonction
    Bonjour

    J'ai codé cherché sur google mais je n'ai trouve que des compteurs de page ou de visiteurs du site...
    Je ne met pas mon code pour l'instant car là je suis totalement perdu après avoir essayé tout ce que je pouvais et en cherchant des codes sur google qui pourraient m'inspirer et m'aider à m'en sortir.

    Jusqu'à maintenant ce que je veux obtenir :
    le nombre de fois que j'appelle une fonction qui affiche quelque chose sans que l'affichage apparaisse à chaque fois.
    bref juste connaitre le nombre de fois où j'ai appelé cette fonction et afficher la valeur !

    J'ai tenté par :
    - par formulaire ou pas un simple input button et à l'aide d'une variable static
    - ou d'une boucle while dans le formulaire avec un test sur un nb MAX initialisée au départ soit par un test isset $_post et en cliquant sur le input submit : problème cela affiche tout d'un coup !
    - j'ai biensur pensé à un fichier mais pour une fonction je me dis que dans le code si je peux éviter ce n'est pas plus mal !
    - et pleins d'autres bidouilles et tests

    Mais je finis par tester, tester... ce qui n'est jamais bon mais étant perdu je bidouille !
    Alors que c'est peut-être finalement simple pour certains !

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    le nombre de fois que j'appelle une fonction qui affiche quelque chose sans que l'affichage apparaisse à chaque fois.
    ça un sens cette phrase ?

    Bon déjà, c'est un compteur différent par visiteur ou un compteur global pour le site ?

    Et que viennent faire des formulaires dans cette histoire ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2015
    Messages
    238
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2015
    Messages : 238
    Points : 95
    Points
    95
    Par défaut
    Oui c'est un compteur "global" pour le site spécifique au code du site.
    Et pour poser peut-être mieux le problème : ex une fonction qui a une sortie, un affichage mais ça pourrait être n'importe quel traitement.
    Ce que je veux c'est savoir combien de fois elle a été appelé.

    J'ai voulu épurer tout le code juste pour comprendre comment je pourrais faire.
    J'ai mis que deux fonctions.(évidemment dans une seule page index.php)
    Donc pour l'instant j'ai tenter de coder des appels en passant par un formulaire avec option action="#" ce qui a pour effet de se diriger sur la même page et donc d'appeler la même fonction de la même page.

    Avant j'ai tenté de coder une fonction d'entrée (comme un main d'un prog en C) qui appelle dans la 2nd fonction avec une variable static que j'affiche et qui s'incrémente. J'ai pensée que cela suffirait.
    Mais en fait soit je la fais récursive soit je fais une boucle mais je n'ai pas réellement l'effet que je veux, avoir l'incrémentation à chaque appel.
    D'où l'idée de passer par un petit bouton ou un formulaire qui appelle la meme page. Et je pensais boucler à chaque clic sur le bouton formulaire ou pas.
    J'ai donc regarder si je met la boucle dans le formulaire mais résultat forcément il fait la boucle une fois.
    J'ai bidouillé avec des exit() des sleep() ou plein de variables intermédiaire, du JS...

    Mais force est de constater que j'ai mal analysé mon problème et que je patauge depuis à tenter tout et n'importe quoi.

  4. #4
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Je ne comprends pas pourquoi tu sors toute cette artillerie.
    Il faut simplement que tu stockes la valeur quelque part (fichier, base de données) et dans la fonction, tu lis la valeur actuelle, tu l'incrementes, tu la restockes.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2015
    Messages
    238
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2015
    Messages : 238
    Points : 95
    Points
    95
    Par défaut
    Je sais que je peux faire comme ça !
    Mais pour un simple comptage d'appel d'une fonction je pensais pouvoir éviter même si je sais que php n'est pas un langage événementiel.
    Sinon y'a au lieu action="#" action="$_SERVER['PHP_SELF']" mais j'ai l'impression que c'est pareil ?
    Par Js c'est possible aussi coté client en prenant le id du submit et un autre id pour afficher le résultat ou par ajax mais je manipule mal ajax ^^.
    Je vais tenter aussi le passage par référence ou par instance objet "new" je n'ai pas pensé à ça mais pas impossible que je me retrouve encore dans une bidouille inutile !

    Mais si il faut passer par une table bdd juste pour le code du site je ferais ça plus pratique qu'un fichier pour le code plus visible et réutilisable pour d'autres fonctions surtout.

    Vais essayé un peu tout ça (sauf ajax pourtant c'est le plus logique en fait coté serveur avec php )

  6. #6
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Encore une fois je ne vois pas bien ce que vient faire Ajax ou un formulaire la dedans alors que l’incrémentation se passe uniquement côté serveur.
    Je ne vois pas ce que tu veux "éviter" en fait.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  7. #7
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    Pareil, je ne vois pas ce que Ajax vient faire dans l'histoire, sauf si ce que tu veux compter est du côté client (du type "nombre de fois que quelqu'un a cliqué le Gros Bouton Rouge")
    Si tu veux compter le nombre de fois que la méthode faireUnTruc de la classe UnBiduleObjet, c'est forcément en PHP pur.

    Et si c'est global à la totalité du site, tu vas forcément devoir stocker l'information en dur quelque part. Une variable statique ou même une variable de session ont une durée de vie et une portée limitée.
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  8. #8
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Je crois que j'ai compris ce que tu veux faire.... (non, je rigole... )

    S'il n'est pas nécessaire de stocker la valeur, on peut juste incrémenter une variable de SESSION dans la fonction à tester.

  9. #9
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2015
    Messages
    238
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2015
    Messages : 238
    Points : 95
    Points
    95
    Par défaut
    Citation Envoyé par Celira Voir le message
    Pareil, je ne vois pas ce que Ajax vient faire dans l'histoire, sauf si ce que tu veux compter est du côté client (du type "nombre de fois que quelqu'un a cliqué le Gros Bouton Rouge")
    Si tu veux compter le nombre de fois que la méthode faireUnTruc de la classe UnBiduleObjet, c'est forcément en PHP pur.

    Et si c'est global à la totalité du site, tu vas forcément devoir stocker l'information en dur quelque part. Une variable statique ou même une variable de session ont une durée de vie et une portée limitée.
    J'ai enfin réussi surement parce que je m'étais tellement compliqué avant et en testant. Laissant quelques jours j'ai réussi mais seulement avec une variable session.
    Donc je pourrais rester comme ça avec ma variable session que j'avais laissé tomber puis compris qu'il fallait la tester dans le code du formulaire qui lance ma petit fonction "compteur" et qui appelle la même page.

    Par contre je bloque avec une variable static parce que je n'utilise jamais de variable static plutôt souvent des global.
    J'ai voulu essayer avec une variable static de la même manière qu'une variable session mais là je n'y arrive pas.
    La fonction va incrémenter la variable static si j'appelle plusieurs fois la fonction "compteur" et là je ne trouve pas la solution surement parce que je n'ai pas l'habitude de ce type de variable. Au rechargement de la même page après le valider du formulaire la variable static semble reprendre sa valeur initial et surtout je l'appelle finalement qu'une fois.
    J'ai pas encore testé je ne sais pas si il faut que je lui passe une valeur incrémenté dans le formulaire et ensuite faire un appel récursif de la fonction "compteur" avec un test sur la valeur passé pour sortir. Mais en fait je me complique surement encore je ne sais pas car dans le formulaire est ce que je dois utiliser une variable static ou autre et donc éternellement ne pas y arriver avec une variable static pour incrémenter le compteur ?

    En tout cas si j'ai cité effectivement faire de l'ajax ce serait recharger la page coté client mais je risque d'avoir le même résultat si la variable "compteur" est initialisée quelque part à 0 et mal placé pour l'incrémentation.
    Autre chose certes ce n'est pas "global" au site de manière permanente auquel cas oui biensur il faut que je la stocke en dur quelque part. Par contre avec une variable session si je fais juste un session_start() il génère un cookie et garde le tableau de session et si je quitte et relance la variable session garde les anciennes valeurs donc je dois tester et "vider" ou supprimer le tableau de session ! C'est juste pour dire que, les sessions ont une portée limitée mais pas tant que ça. Enfin vous en savez plus que moi la dessus c'est un problème auquel j'ai été confronté très vite avec session_start() et au départ que je ne comprenais pas non plus

    Finalement je crois qu'en plus d'avoir tester trop de choses je n'ai pas su expliquer simplement et surtout je ne comprend rien au variable static en php.
    Comment je peux incrémenter ce type variable dans une fonction en appelant qu'une fois la fonction malgré le rechargement de la même page là j'avoue je suis perdu. Est ce possible ?
    En tout cas même si mon problème est résolu avec une variable session, j'ai plus besoin de vos connaissances et expérience sur les variables static

  10. #10
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2015
    Messages
    238
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2015
    Messages : 238
    Points : 95
    Points
    95
    Par défaut
    Je met le code simplifié.
    Je pensais qu'initialiser la valeur session à 0 ou 1 serait simple or j'essaye de le faire seulement quand je ferme l'onglet pas le navigateur.

    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
     
    <?php
    session_start ();
    ?>
     
    <!doctype html>
    <html lang="fr">
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    <link rel='stylesheet' href='style.css'>
    <title>Accueil</title>
    </head>
     
    <?php
    	formulaire ( "Compteur" );
    ?>
     
    <?php
    	function compteur() {
    		$_SESSION ["cptfunction"] = $_SESSION ["cptfunction"] + intval ( "1" );
    	}
     
    ?>
     
    <?php
             function formulaire($typeFormulaire = NULL) {
    ?>
     
    <title><?php echo ($formulaire.strtolower($typeFormulaire).$titre); ?></title>
     
    <body>
    	<div id=<?php echo (strtolower($typeFormulaire));?>>
    		<form method="post" action="#">
    			<fieldset><?php echo $typeFormulaire;?></fieldset>
    	               <?php $_SESSION ["cptfunction"] = ! isset ( $_SESSION ["cptfunction"] ) ? "0" : $_SESSION ["cptfunction"]; ?>
              		<p>
    		        	<input type="submit" value="Envoyer" name="valider" value="Valider" 	onclick="<?php compteur();?>" />
             		</p>
    		</form>
    		<p id="message"><?= $_SESSION["cptfunction"]?:'null' ?></p>
    	</div>
    </body>
    <?php
      }
      ?>
    </html>
    J'ai biensur tout tenté autrement avec un script "déconnexion" en PHP pur avec les fonctons session_.. qui serait valable qu'une fois... mais non!
    Je ai vu après avoir chercher qu'apparemment c'est possible en javascript (ajax ou JS simple?). Mais je ne vois pas bien comment faire en ajax ou js simple ?

  11. #11
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    tu es trop bavard : on a du mal à suivre...
    Et je pense que tu t'embrouilles tout seul.

    Ecris un code simple, donne une explication simple et pose une question courte.

  12. #12
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2015
    Messages
    238
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2015
    Messages : 238
    Points : 95
    Points
    95
    Par défaut
    Je sais je suis bavard désolé ! (Pourtant je me soigne )
    J'ai essayé de faire "encore" plus clair mon dernier com, j'espère que c'est mieux

  13. #13
    Invité
    Invité(e)
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    		$_SESSION ["cptfunction"] = $_SESSION ["cptfunction"] + intval ( "1" );
    s'écrit simplement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    		$_SESSION ["cptfunction"]++;


    Tes phrases sont trop longues et trop confuses.



    Quand tu sauras expliquer CLAIREMENT, avec des phrases simples et courtes :
    • ce que tu as
    • ce que tu veux obtenir

    ...tu auras déjà fait 90% du travail.

  14. #14
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <input type="submit" value="Envoyer" name="valider" value="Valider" 	onclick="<?php compteur();?>" />
    aaaaaarrrrrggllll....
    Peut-on lancer une fonction PHP depuis une fonction JavaScript ?

    Bon, on va essayer de t'aider à nous aider à t'aider (moi aussi, je peux faire des phrases tordues )

    Qu'est-ce que tu veux compter ? Donnes-nous un contexte et un cas concret.
    Exemples (liste non exhaustive):
    • Il y a un Gros Bouton Rouge dans une page et tu veux compter le nombre de fois que l'utilisateur actuellement connecté a cliqué dessus depuis l'ouverture de la session pour l'afficher à côté du bouton.
    • Il y a une fonction connect_db() dans ton code et tu veux compter combien de fois cette fonction est appelée lorsque l'utilisateur ouvre une page pour un debug technique.
    • Il y a une page "A propos de moi" dans ton site et tu veux compter combien de visiteurs ont affiché cette page au cours de la journée.
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  15. #15
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2015
    Messages
    238
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2015
    Messages : 238
    Points : 95
    Points
    95
    Par défaut
    (Avant de commencer ayant quelques jours de grippe je n'arrivais même plus à chercher sur le web des infos et ayant déjà une mauvaise habitude de compliquer ça devenait illisible même pour moi je m'en excuse ! Je vais être encore bavard sur ce post mais c'est pour expliquer toutes les erreurs et la solution enfin trouvée une fois allant mieux)

    Donc au départ j'étais parti sur une formulaire de connexion/inscription et je voulais comptabiliser les erreurs de saisis, d'echecs ou de réussites à la BDD au moins pour la connexion pour les champs pseudos et mdp pour voir le comportement du site et debugger pour affiner l'affichage des formulaires de connexion ou d'inscription.
    Je m'étais inspiré de plusieurs codes et cela fonctionnait très bien mais je voulais donc compter

    N'y arrivant pas je cherche donc à faire un simple compteur pour comprendre. D'abord en php, puis js,... Mais toujours en partant d'un formulaire html classique. Je sais j'aurais pu faire avec un seul input ou button.

    N'y arrivant toujours pas j'ai finis donc par mettre seulement deux fonctions php : une fonction formulaire avec un formulaire html et une petite fonction compteur.
    Pour la fonction compteur.
    - J'ai tenté avec les sessions mais j'avais un problème à chaque fois que je relançais le site le formulaire appelant toujours la même page, la session gardait les anciennes valeurs à cause du cookie session. Je n'arrivais pas non plus à résoudre ce problème. De plus comme je testais la valeur nulle du formulaire avec isset j'avais un problème avec le 0 donc j'ai tenté de le tester en typant en string d'où cette incrémentation bizarre qui était rester avec intval("1").
    - J'ai tenté ensuite en m’inspirant de coder en js mais comment retourner la valeur vers le serveur pour la stocker dans une variable php. J'ai donc pensé à de l'ajax mais connaissant mal le fonctionnement j'ai abandonné. D'où aussi finalement cet horrible onclick appelant une fonction php qui est resté.

    Bref n'étant pas en forme du tout je commençais vraiment à m'embrouiller et à m’énerver pour un simple compteur.
    Une fois un peu mieux j'ai pu revoir la structure du code du site depuis le début et mieux chercher et comprendre ce que je consultais sur le web.

    Je donne donc le code en php qui fonctionne et un bout de code en js mais qui ne me sert plus à rien pour l'instant puisque j'ai résolu en php ( je met aussi le code css quitte à être bavard
    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
     
    <?php
    session_start ();
    ?>
    <!doctype html>
    <html lang="fr">
     
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    <link rel='stylesheet' href='style.css'>
     
    <title>Accueil</title>
    <head>
    <?php 
    // point d'entree
    $pageRefreshed	=	isset($_SERVER['HTTP_CACHE_CONTROL']) &&($_SERVER['HTTP_CACHE_CONTROL'] === 'max-age=0' ||  $_SERVER['HTTP_CACHE_CONTROL'] == 'no-cache');
    $formResult		=	(!isset ( $_POST ['valider'] )	&&	!isset($_POST['reset']))	||	(!isset ( $_POST ['valider'] )	||	isset($_POST['reset']))	?	0	:	1;
    $entryPage		=	$pageRefreshed == 1	?	"Yes page Refreshed"	:	"No, page Refreshed";
    $infoPage		=	"//point d'entree page//<br>".$entryPage;
     
    ?>
    <?php
    if( $pageRefreshed == 1 || $formResult == 0 ){
    	$_POST ['valider']=null;			$_POST ['reset']=null;
    	$_SESSION['cptfunction']=1;
    }elseif ( $formResult == 1 ){
    	$_POST ['reset']=null;
     
    	$_SESSION['cptfunction']++;
     
    }
    ?>
    </head>    
     
    <body>
     
    <?php formulaire ( "Compteur" );?>	
     
    </body>
     
    </html>
    <?php	
    function formulaire($typeFormulaire = NULL) {	
    	global $infoPage;		
    ?>
    	<title><?php echo ($formulaire.strtolower($typeFormulaire).$titre); ?></title>
    		<div id="<?php echo (strtolower($typeFormulaire));?>">
    			<form	method="post" action="#">
    				<fieldset><?php echo $typeFormulaire;?></fieldset>
     
    				<p id="message"><?= $infoPage				?:'null' ?></p>
     
    				<p>	<input id="valider" type="submit" name="valider" value="Valider" /></p>
    				<p>	<input id="reset" type="submit" name="reset" value="Reset" /></p>
     
    			</form>
    				<p id="message"><?= $_SESSION["cptfunction"]?:'null' ?></p>
    		</div>
    <?php	}	?>
    le css :
    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
     
     
    <!--[if IE]>
    <style type="text/css">
       body {background-color: #cccccc !important;}
    /style>
    <![endif]-->
     
    body, p, h1,form, input, fieldset
    {
      margin:0;
      padding:0;
    }
     
    body 
    {
      background-color: #F4F4F4;
    }
     
    #connexion,	#inscription,	#compteur
    {
      width:400px;
      background:#FFFFFF;
      margin:20px auto;
      font-family: Arial, Helvetica, sans-serif;
      font-size:1em;
      border:1px solid #ccc;
      border-radius:10px;
    }
     
    #connexion fieldset ,	#inscription fieldset,	#compteur fieldset  
    {
      text-align:center;
      font-size:1.2em;
      background:#333333;
      padding-bottom:5px;
      margin-bottom:15px;
      color:#FFFFFF;
      letter-spacing:0.05em;
      border-top-left-radius:10px;
      border-top-right-radius:10px;
      border:1;
    }
     
    #connexion p ,	#inscription p,	#compteur p  
    {
      padding-top:15px;
      padding-right:50px;
      text-align:right;
    }
     
    #connexion input ,	#inscription input ,	#compteur input
    {
      margin-left:30px;
      width:150px;
    }
     
    #connexion #valider,	#inscription #valider,	#compteur #valider  ,	#compteur #reset
    {
      width:155px;
      font-size:0.8em;
    }
     
    #connexion #message ,	#inscription #message,	#compteur #message  
    {
      height:27px;
      color:#F00;
      font-size:0.8em;
      font-weight:bold;
      text-align:center;
      padding:10px 0 0 0;
    }
    le petit code js :
    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
     
    /*
    compter les clics
    */
    var messageElt = document.getElementById("message");
    var compteurClics = 0;
     
    var clic = (function() {
     
    	return function () {
    		//Incrémentation du message contextuel pour message
    		compteurClics++;
    	    messageElt.textContent = compteurClics;
     
    	};
     
    })();
     
    var reset	=(function () {
     
    	return function () {
    		//Suppression du message contextuel pour message
    		compteurClics=0;
    		messageElt.textContent = compteurClics;
     
     
    	};
     
    })();
     
    document.getElementById('valider').addEventListener("click", clic);
    document.getElementById("reset").addEventListener("click", reset);
    Voilà ! Vous pouvez me "grogner" dessus ou commenter pour me dire si j'ai été plus clair même si j'ai été bavard

  16. #16
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2015
    Messages
    238
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2015
    Messages : 238
    Points : 95
    Points
    95
    Par défaut
    Si vous trouvez que j'ai été plus clair j'espère
    (même si ça a toujours du bavardage mais je pense qu'il était important d'expliquer pourquoi il y avait autant d’aberrations confuses et compliquées )

    Alors c'est vrai que finalement ici c'est un compteur du nombre de fois où l'on clique sur le bouton "valider" du formulaire.
    Mais un test sur ce bouton permettrait de compter n'importe quel appel de fonction interne et de l'afficher sur le site ou dans la console.

    Pouvez me dire si le code php qui fonctionne peut être amélioré ?

  17. #17
    Invité
    Invité(e)
    Par défaut
    Tu blablates trop.

    C'est dans ton code qu'il faut mettre des commentaires et explications.

  18. #18
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2015
    Messages
    238
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2015
    Messages : 238
    Points : 95
    Points
    95
    Par défaut
    Oui je sais ! Mais c'est mieux expliqué quand même non ? même si on n'a pas envi de lire à cause de trop longue phrase sinon je vais déprimer
    Ok je mettrais juste le code php avec des commentaires courts

  19. #19
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2015
    Messages
    238
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2015
    Messages : 238
    Points : 95
    Points
    95
    Par défaut
    J'ai pas encore tout compris HTTP_CACHE_CONTROL et $_SERVER['HTTP_CACHE_CONTROL'] donc je met les liens principaux qui m'ont servis :
    https://developer.mozilla.org/fr/doc.../Cache-Control
    https://www.w3.org/Protocols/rfc2616/rfc2616-sec13.html
    https://www.mnot.net/cache_docs/index.fr.html
    https://www.incapsula.com/cdn-guide/...e-control.html

    pas sur que cela fonctionne sur IE ou chrome pas encore testé seulement sur firefox, ici il y a une autre alternative non testé :
    https://www.yourhowto.net/detect-page-refresh-php/

    Le code PHP commenté (j'ai pas pu résisté à faire du blabla en commentaire pour HTTP_CACHE_CONTROL) de la page index du site :
    Code html : 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
    99
    100
    101
    102
    103
    104
     
    <?php
    //on démarre une nouvelle session d'abord
    session_start ();
    ?>
    <!doctype html>
    <html lang="fr">
     
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    <link rel='stylesheet' href='style.css'>
     
    <head>
    	<title>Accueil</title>
     
    	<?php 
            //Rafraichissement de la page ou lancement du site
            $pageRefreshed  =       isset($_SERVER['HTTP_CACHE_CONTROL']) &&($_SERVER['HTTP_CACHE_CONTROL'] === 'max-age=0' ||  $_SERVER['HTTP_CACHE_CONTROL'] == 'no-cache');
            /*      Explication détaillée de $_SERVER['HTTP_CACHE_CONTROL'] */
            /*
            HTTP_CACHE_CONTROL est donc la valeur de l'en-tête Cache-Control reçue du client.
            Ce n'est pas quelque chose configuré sur votre serveur, c'est basé sur ce que le client envoie.
            
            Lorsqu'un client essaie de revalider une entrée de cache 
            et que la réponse qu'il reçoit contient un en-tête Date qui semble être plus ancien que celui de l'entrée existante, 
            le client DEVRAIT répéter la demande sans condition et inclure : 
            
            Possibilité de mise en cache   :       
                    Cache-Control: no-cache
                    
                    Indique de renvoyer systématiquement la requête au serveur et ne servir une éventuelle version en cache que dans le cas où le serveur le demande.
                    Force les caches intermédiaires à obtenir une nouvelle copie du serveur d'origine.
                    C'est utile pour maintenir une fraîcheur rigide, sans sacrifier tous les bénéfices de la mise en cache.
                    
            Expiration                                      :       
                    Cache-Control: max-age  = 0 (max-age=<secondes>)
     
                    Indique la durée pendant laquelle la ressource doit être considérée comme valide (non expirée).
                    Force les caches intermédiaires à valider leurs copies directement avec le serveur d'origine.
                    La valeur [secondes] est le nombre de secondes, à compter de l'heure de la requête, pour lequel vous désirez que la représentation soit fraîche.
            */
     
            $entryPage              =       $pageRefreshed == 1     ?       "Yes page Refreshed"    :       "No, page Refreshed";
            //Infos diverses de la page à afficher si la page a été rafraichi ex : F5,CTRL+F5,clic droit et "actualiser",onglet fermé,etc...
     
            $infoPage               =       "//point d'entree page//<br>".$entryPage;
            //Message général pour une page rafraichit ou pas
            
            ?>
     
    	<?php   //Résultat de retour du formulaire qui appelle la même page où il est :
            $formResult             =       (isset ( $_POST ['valider'] )   &&      !isset($_POST['reset']))        ?       1       :       0;      //Si "valider" n'est pas null et "reset" est null alors resultat vrai sinon faux
            
            //Test sur le rafraichissement de la page ou lancement du site et sur le résultat de retour du formulaire 
            if( $pageRefreshed == 1 || $formResult == 0 ){  //Si page rafraichie ou site relancé ou resultat retour formulaire non valide pour l'incrementation alors on réintialise la variable session à 1 
                    
                    $_SESSION['cptfunction']=1;     //Ré-initialisation    à 1 de la variable session qui compte!
                    $_POST ['reset']=null;          //Mise à null du bouton "reset" du formulaire pour la prochaine fois
                                    
            }else{  //sinon page non rafraichie ou site non relancé et resultat retour formulaire valide pour l'incrementation la variable session
            
                    $_SESSION['cptfunction']++;     //Incrémentation de la variable session qui compte!
                    $_POST ['valider']=null;        //Mise à null du bouton "valider" du formulaire pour la prochaine fois
                    
            }
            ?>
    </head>    
     
    	<body>
    	<!-- //Corps de la page compteur (ici index.php)  -->
    	<?php 
            $nomFormulaire = "Compteur";    //nom du formulaire
            
            formulaire ($nomFormulaire);
            //Appel de la fonction du formulaire (ici "compteur")
            ?>
     
    	</body>
     
    </html>
    <?php
    /**
     * 
     * @param unknown $typeFormulaire
     */
    function formulaire($typeFormulaire = NULL) {
            global $infoPage;       //récupère la variable info de la page
            
    ?>
    		<div id="<?php echo (strtolower($typeFormulaire));?>">	<!-- titre du formulaire en minuscule pour le css -->
     
    			<form	method="post" action="#">	<!-- action="#" appelle la même page +# presque équivalent à $_SERVER['PHP_SELF'] -->
    				<fieldset><?php echo $typeFormulaire;?></fieldset>	<!-- titre du formulaire -->
     
    				<p id="message"><?= $infoPage ?:'null' ?></p>	<!-- //infos de la page php courante sinon 'null' -->
     
    				<p>	<input id="valider" type="submit" name="valider" value="Valider" /></p>
    				<p>	<input id="reset" type="submit" name="reset" value="Reset" /></p>
     
    			</form>
     
    				<p id="message"><?= $_SESSION["cptfunction"] ? :'null' ?></p>	<!-- //infos de la variable session qui compte ! sinon 'null' -->
    		</div>
     
    <?php   }       ?>

  20. #20
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2015
    Messages
    238
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2015
    Messages : 238
    Points : 95
    Points
    95
    Par défaut
    Je remercie les modérateurs pour leur conseil de rédaction.
    J'essaierai d'être moins bavard et confus et plus concis la prochaine fois
    Malgré tout si il y a des commentaires et éclairages sur le code du dernier post surtout sur $_SERVER['HTTP_CACHE_CONTROL'] ça m'aiderait je n'ai pas tout compris.
    sinon sujet résolu.

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

Discussions similaires

  1. Appel d'une fonction PHP depuis un clic sur lien impossible (compteur)
    Par khany dans le forum Balisage (X)HTML et validation W3C
    Réponses: 4
    Dernier message: 17/02/2014, 10h36
  2. Appel d'une fonction
    Par georgeabitbol dans le forum ASP
    Réponses: 4
    Dernier message: 08/07/2004, 14h29
  3. Réponses: 4
    Dernier message: 02/06/2004, 16h35
  4. Appel d'une fonction
    Par jfphan dans le forum ASP
    Réponses: 4
    Dernier message: 14/04/2004, 15h06
  5. A la recherche de l'appel d'une fonction...
    Par karl3i dans le forum C
    Réponses: 3
    Dernier message: 24/09/2003, 12h34

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