Partage
  • Partager sur Facebook
  • Partager sur Twitter

Problème création "Event" dans phpmyadmin

Sujet résolu
    18 janvier 2018 à 16:33:46

    Bonjour à tous,

    J'ai un table dans laquelle je souhaite modifier une donnée en fonction de la date de création de mes entrées:

    date_creation : ce champ indique la date de création de mon entrée,

    is_active : indique si l'entrée est active ou non (ex: is_active = 1 si l'entrée est active, is_active = 0 si inactive)

    En gros, je souhaite modifier is_active ( =0 ) si jamais la date de création est vieille de 15 heures.

    Voici le code que j'ai essayé:

    UPDATE my_table
    SET is_active = 0
    WHERE date_creation <= DATE_SUB(NOW(), INTERVAL 15 HOUR)

    Hélas cela ne fonctionne pas, et lorsque j'actualise la page, is_active a toujours une valeur de 1, alors que ça devrait être 0.

    Auriez-vous une idée ?

    Merci d'avance :)

    -
    Edité par jeremlamy 18 janvier 2018 à 16:34:29

    • Partager sur Facebook
    • Partager sur Twitter
      18 janvier 2018 à 16:43:36

      Bonjour,

      Ton titre parle de EVENT, mais pas ton message ? Y-a-t-il un EVENT dans l'histoire ?

      La requête UPDATE est exécutée sans erreur ? Le message d'exécution de la requête doit te donner le nombre d'enregistrements modifiés par le UPDATE ...

      Si c'est 0 ou "Aucun enregistrement modifié" c'est qu'aucun enregistrement ne correspond à tes critères ...

      Si tu fais :

      SELECT *
      FROM my_table
      WHERE date_creation <= DATE_SUB(NOW(), INTERVAL 15 HOUR)
      AND is_active = 0;

      Combien d'enregistrement sont retournés ?

      -
      Edité par Benzouye 18 janvier 2018 à 16:43:54

      • Partager sur Facebook
      • Partager sur Twitter
      Seul on va plus vite, ensemble on va plus loin ... A maîtriser : Conception BDD, MySQL, PHP/MySQL
        18 janvier 2018 à 16:52:27

        Désolé je me suis mal exprimé, en fait je créé un évènement dans phpmyadmin: Voir mon screen

        Je viens de faire ça:

        SELECT * FROM my_table WHERE date_creation <= DATE_SUB(NOW(), INTERVAL 15 SECOND)

        Et ça me retourne tous les résultats que ma requête écrite au dessus aurait du me retourner. Je ne comprends donc pas pourquoi ça ne modifie pas mes champs 'is_active' avec la valeur 0...

        Merci :)

        -
        Edité par jeremlamy 18 janvier 2018 à 16:55:24

        • Partager sur Facebook
        • Partager sur Twitter
          18 janvier 2018 à 16:59:45

          Ton EVENT ne s'exécute pas car il n'y a pas de date de début définie ...

          Après, lancer ce traitement toutes les 5s c'est un peu hard non ?

          D'autant que tu connais le calcul te permettant de déterminer is_active ... Donc autant ne pas mettre cet EVENT en place, supprimer ta colonne is_active, et chaque fois que tu as besoin de savoir si une ligne est active ou non tu fais le calcul dans la requête SELECT ...

          -
          Edité par Benzouye 18 janvier 2018 à 16:59:59

          • Partager sur Facebook
          • Partager sur Twitter
          Seul on va plus vite, ensemble on va plus loin ... A maîtriser : Conception BDD, MySQL, PHP/MySQL
            18 janvier 2018 à 17:07:08

            Concernant la date de début, je l'ai mise avant de prendre le screen durant mes tests, pas de soucis pour ça.

            Oui je pourrais faire ça, mais le problème c'est que j'ai absolument besoin que cela soit effectué à toute heure du jour ou de la nuit.

            En fait, j'ai une fonction sur mon site wordpress qui permet de looper à travers toutes les données de ma table afin de vérifier si  les entrées sont actives. Si elles sont actives, elles serviront à générer du contenu automatiquement sur une page donnée. De plus, j'ai également besoin de savoir en backend (pour les admins du site) si les entrées sont actives ou pas, du coup c'est plus simple pour moi d'avoir le champ "is_active".




            • Partager sur Facebook
            • Partager sur Twitter
              18 janvier 2018 à 17:14:30

              Si la requête SELECT retourne des lignes mais qu'aucune n'est modifiée dans le temps c'est que l'EVENT ne fonctionne pas ...

              Il faut déjà vérifier si l'EVENT est actif :

              SHOW EVENTS;

              Après plus en détail :

              SHOW CREATE EVENT paris_checking;

              Que donnent ces deux commandes ?

              Sinon, l'event scheduler est-il activé ?

              SELECT GLOBAL event_scheduler;

              Si cette requête retourne 0 (ou OFF) ... il te faut l'activer ...

              jeremlamy a écrit:

              j'ai une fonction sur mon site wordpress qui permet de looper à travers toutes les données de ma table afin de vérifier si  les entrées sont actives

              Cette fonction est activée à chaque fois qu'une page de ton site est visitée ... Donc autant lui faire faire le calcul plutôt que d'avoir un EVENT toutes les 5s ...

              Mais je reste persuadé que de mettre la condition de date dans la requête qui affiche le contenu sera moins gourmand que de lancer un EVENT ou de faire un UPDATE ...

              -
              Edité par Benzouye 18 janvier 2018 à 17:21:18

              • Partager sur Facebook
              • Partager sur Twitter
              Seul on va plus vite, ensemble on va plus loin ... A maîtriser : Conception BDD, MySQL, PHP/MySQL
                18 janvier 2018 à 17:46:59

                Le problème semblerait venir du fait que je n'ai pas les droits super admin dans phpmyadmin (chez OVH), du coup je ne peux pas activer les évènements.

                Je vais devoir faire avec la seconde option que tu me proposes :)

                Merci ;)

                • Partager sur Facebook
                • Partager sur Twitter
                  18 janvier 2018 à 18:03:43

                  jeremlamy a écrit:

                  Le problème semblerait venir du fait que je n'ai pas les droits super admin dans phpmyadmin (chez OVH), du coup je ne peux pas activer les évènements

                  Ce qui peut se comprendre ... Si tu actives un EVENT gourmand tu pénalises tout le serveur ...

                  jeremlamy a écrit:

                  Je vais devoir faire avec la seconde option que tu me proposes

                  Et je pense que c'est même mieux :p

                  Pense à mettre sur "Résolu" (bouton en haut à droite du sujet) si c'est OK pour toi ;)

                  • Partager sur Facebook
                  • Partager sur Twitter
                  Seul on va plus vite, ensemble on va plus loin ... A maîtriser : Conception BDD, MySQL, PHP/MySQL

                  Problème création "Event" dans phpmyadmin

                  × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                  × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                  • Editeur
                  • Markdown