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 :

Application de suivi d'activité


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de jack554
    Inscrit en
    Février 2003
    Messages
    196
    Détails du profil
    Informations forums :
    Inscription : Février 2003
    Messages : 196
    Par défaut Application de suivi d'activité
    Je voudrais réaliser un petit exercice en vue d'une application plus importante de suivi d'activité.
    Énoncé du problème :
    Soit une page Web avec un bouton "Cliquer ici" (jusque là, ça va !)
    L'utilisateur doit cliquer tous les jours sur ce bouton.
    S'il ne le fait pas pendant, mettons, 5 jours de suite, un mail de rappel lui est envoyé, et le compteur de "jours non cliqués" repart à zéro.

    Cela suppose donc un script quotidien genre "cron" tournant sur le serveur et qui :
    - incrémente un compteur de 1 chaque jour
    - teste si ce compteur est supérieur à 4, alors il envoie le mail et remet le compteur à 0
    Un genre comme ça :

    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
    <?php
     
      $monfichier = fopen('compteur.txt', 'r+');   // On ouvre le fichier
      $nbr = fgets($monfichier);                   // On lit la première ligne (compteur)
      $nbr += 1;                                   // On augmente de 1 ce compteur
      fseek($monfichier, 0);                       // On remet le curseur au début du fichier
      fputs($monfichier, $nbr);                    // On écrit le nouveau compteur
     
      // Si le compteur est >4 on envoie un mail
      if ($nbr>4) {
        ini_set( 'display_errors', 1 );
        error_reporting( E_ALL );
        $from = "test@domaine.ovh";
        $to = "destinataire@mail.com";
        $subject = "Vérification PHP mail";
        $message = "ALERTE ***  Vous n'avez pas cliqué depuis 5 jours.";
        $headers = "From:" . $from;
        mail($to,$subject,$message, $headers);
        echo "Le mail a été envoyé.";
     
        $nbr = 0;                                  // On remet le compteur à 0
        fseek($monfichier, 0);                     // On remet le curseur au début du fichier
        fputs($monfichier, $nbr);                  // On écrit le nouveau compteur
      }
     
      // Quand on a fini de l'utiliser, on ferme le fichier
      fclose($monfichier);
      echo '<p>Compteur actuel : ' . $nbr . ' </p>';
    ?>
    Ça, ça fonctionne :-)

    Il me manque donc juste un processus qui remet le compteur à 0 lorsque l'utilisateur clique sur le bouton de la page Web, et là je n'y arrive pas, j'ai essayé en PHP mais impossible puisque exécuté sur le serveur, Javascript pareil, impossible d'affecter une fonction JS à un bouton HTML, ou je ne sais pas faire.

    Merci d'avance pour vos idées et suggestions.
    Jack.

  2. #2
    Expert confirmé Avatar de CosmoKnacki
    Homme Profil pro
    Justicier interdimensionnel
    Inscrit en
    Mars 2009
    Messages
    3 010
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Justicier interdimensionnel

    Informations forums :
    Inscription : Mars 2009
    Messages : 3 010
    Par défaut
    Si je devais faire quelque chose comme ça, je m'y prendrai autrement. Des suggestions:
    • Pour le coté "persistance des données", j'utiliserai plutôt une base de données qu'un fichier.
    • Pas la peine d'incrémenter quoi que ce soit, il suffit de stocker la date du clique (ou du mail) et de la comparer à la date courante.

  3. #3
    Membre confirmé Avatar de jack554
    Inscrit en
    Février 2003
    Messages
    196
    Détails du profil
    Informations forums :
    Inscription : Février 2003
    Messages : 196
    Par défaut
    Oui CosmoKnacki tu as raison, merci de l'idée, j'ai bien sûr une base MySQL sur mon hébergement OVH.

    Bon, je ne sais pas du tout manipuler une base de données depuis une page Web, mais ça, ça s'apprend, je m'en doute
    Je vais chercher dans cette direction.

  4. #4
    Expert confirmé Avatar de CosmoKnacki
    Homme Profil pro
    Justicier interdimensionnel
    Inscrit en
    Mars 2009
    Messages
    3 010
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Justicier interdimensionnel

    Informations forums :
    Inscription : Mars 2009
    Messages : 3 010
    Par défaut
    Dans tes recherches, fait attention à ne pas te tourner vers des tutoriels trop anciens qui utilisent les fonctions mysql_ (cette extension est obsolète depuis au moins 10 ans et a été enlevée des dernières versions de PHP), préfère leur des tutoriels récents utilisant l'extension PDO.

  5. #5
    Membre confirmé Avatar de jack554
    Inscrit en
    Février 2003
    Messages
    196
    Détails du profil
    Informations forums :
    Inscription : Février 2003
    Messages : 196
    Par défaut
    Ok, merci du conseil.

    En fait il est facile de trouver des tutoriels sur MySQL, sur PHP, sur HTML, sur le shell Linux, séparément ; mais j'ai un peu de mal à trouver quelque chose qui me donnerait des exemples mélangeant les disciplines, par exemple :

    - exécuter des commandes de bases de données MySQL depuis un shell Linux
    - exécuter des commandes de bases de données depuis une page Web (mon fameux bouton qui mémorise dans une table de la base le fait qu'on ait appuyé dessus )

    ...

  6. #6
    Expert confirmé Avatar de CosmoKnacki
    Homme Profil pro
    Justicier interdimensionnel
    Inscrit en
    Mars 2009
    Messages
    3 010
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Justicier interdimensionnel

    Informations forums :
    Inscription : Mars 2009
    Messages : 3 010
    Par défaut
    C'est PHP qui fait la "jointure" entre tout ça: lorsque tu cliques sur le bouton de page html, l'information est envoyé à un script PHP qui interrogera la base de données et la mettra à jour. Ce coté là, c'est de la gestion de formulaire (même s'il n'y a qu'un bouton) et c'est traité en long en large et en travers sur le web. Donc l'ensemble PHP, MySQL, HTML, tu trouveras.

    Pour ce qui est de la tâche CRON: le script qui va vérifier que le délai n'est pas dépassé peut être écrit avec n'importe quel langage dont PHP, car PHP est interprété par un module du serveur apache certes, mais il y a un autre interpréteur PHP (PHP CLI: Command Line Interface) qui lui peut exécuter des scripts indépendamment du serveur (donc sans avoir à taper une url dans son navigateur). Basiquement, il faut juste ajouter une petite entête pour indiquer le chemin de l'interpréteur du script et rendre le fichier exécutable via la commande shell chmod +x monscript.php. Ça ressemble à ça:
    Code monscript.php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    #!/usr/bin/php7.4
    <?php
    echo "toto";

    Reste à savoir si ton hébergement te donne accès au shell et te permet de régler des tâches CRON. (car sur un hébergement mutualisé basique, tu peux oublier.)

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 24/07/2020, 10h21
  2. [UC] suivi d'activité
    Par hicham.gi dans le forum Cas d'utilisation
    Réponses: 24
    Dernier message: 06/03/2009, 12h56
  3. Réponses: 11
    Dernier message: 22/08/2007, 12h46
  4. Réponses: 3
    Dernier message: 01/08/2006, 16h15

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