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

PHP & Base de données Discussion :

comparaison de date mysql [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2008
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2008
    Messages : 26
    Points : 16
    Points
    16
    Par défaut comparaison de date mysql
    Bonjour a tous,
    je suis nouveau dans ce forum ainsi qu'en programmation php mysql. j'ai créer un script qui, toutes les heures efface tout les éléments dont la date d'expiration est dépassé. Le script fonctionne car si je change la requete, elle s'effectue correctement mais ma requête est apparemment incorect. Voici de quoi elle à l'air :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $queryVideur = "DELETE FROM user_temp WHERE tmp_datedel >= NOW()";
    $resultVider = mysql_query($queryVideur) or die (mysql_error());
    lorsque je change la requête et que je met delete from user_temp, tout s"efface donc le script fonctionne.
    Le champ tmp_datedel est de type DATETIME et l'heure de suppression est défini à l'heure de création + 24 heures...lorsque je vais voir le résultat, l'heure de supression est correcte (+- 15 min avant le temps actuelle ou j'execute le script).

    Pouvez vous m'indiquer quel pourrait être l'erreur ?
    merci d'avance pour vos réponse.

  2. #2
    Membre expérimenté
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    1 349
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 349
    Points : 1 460
    Points
    1 460
    Par défaut
    c'est plutot <= que tu dois utiliser si la date de creation+24h est inférieur ou égale a la date actuelle on suprime

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2008
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2008
    Messages : 26
    Points : 16
    Points
    16
    Par défaut
    oups c juste lol en fait j'avais mis ça en test car je n'avais pas envie d'attendre 24 heures mais la requête ne fait quand même rien :s je vien de modifier la date dans ma table et j'ai corrigé l'erreur mais encore ici, rien ne se passe.
    Pourtant, quand je vérifie dans les logs d'erreur de php, rien n'indique qu'une erreur c'est produite.

    voici la date exacte :

    tmp_datedel : 2008-02-28 00:00:00

    et le code modifié :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $queryVider = "DELETE FROM user_temp WHERE tmp_datedel <= NOW()";
    $resultVider = mysql_query($queryVider) or die (mysql_error());
    et lorsque je change la requete en "DELETE FROM user_temp" et que je lance le script manuelement, il efface bien toutes les lignes de la table.

    Merci encore de votre aide.

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2008
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2008
    Messages : 26
    Points : 16
    Points
    16
    Par défaut
    un petit up lol je suis dessus depuis tanto et je ne trouve pas

  5. #5
    Membre expérimenté
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    1 349
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 349
    Points : 1 460
    Points
    1 460
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     DELETE FROM a WHERE tmp_datedel <= NOW( )

    testé chez moi cela marche

  6. #6
    Membre régulier Avatar de bartrik
    Inscrit en
    Novembre 2003
    Messages
    104
    Détails du profil
    Informations forums :
    Inscription : Novembre 2003
    Messages : 104
    Points : 122
    Points
    122
    Par défaut
    Citation Envoyé par boo64 Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     DELETE FROM a WHERE tmp_datedel <= NOW( )

    testé chez moi cela marche
    Chez moi aussi,
    Un petit pour voir ?

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2008
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2008
    Messages : 26
    Points : 16
    Points
    16
    Par défaut
    re-bonjour et merci pour tes réponses

    En fait j'ai des nouveaux indices sur le problème :
    lorsque j'exécute la commande directement dans phpmyadmin, cela efface bien les champs qu'il faut. Seulement, lorsque je la lance a partir du script, cela ne fonctionne plus. Pourtant, le script fonctionne avec la bête requête :
    <code>DELETE FROM user_temp</code>
    et pas avec :
    <code>DELETE FROM user_temp WHERE tmp_datedel <= NOW()</code>
    donc, je supose que la fonction NOW() ou SYSDATE (j'ai essayer aussi, va pas!) pose problème en php... me trompe-je ?

  8. #8
    Membre expérimenté
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    1 349
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 349
    Points : 1 460
    Points
    1 460
    Par défaut
    Chez moi aussi,
    Un petit
    Code :

    echo $queryVider;

    pour voir ?
    je ne pense que cela eprmette de voir quelque chose il n'y a pas de variable la requete est deja formé

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2008
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2008
    Messages : 26
    Points : 16
    Points
    16
    Par défaut
    J'anticipe vos réponse lol et le script est le suivent (sous windows)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    schtasks /create /tn ViderUserTemp /tr C:\wamp\www\viderUserTemp.php /SC HOURLY
    et quand je le lance avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    schtasks /run /tn viderUserTemp
    cela lance apparement le script. La connexion à la base de donnée se fait avec un fichier include qui me sert pour tout el reste de mon code et les droit sont all privilège (oui, je sait, c pas secure mais je modifierais à la fin )...voila, vous savez tout lol

  10. #10
    Membre régulier Avatar de bartrik
    Inscrit en
    Novembre 2003
    Messages
    104
    Détails du profil
    Informations forums :
    Inscription : Novembre 2003
    Messages : 104
    Points : 122
    Points
    122
    Par défaut
    Citation Envoyé par boo64 Voir le message
    je ne pense que cela eprmette de voir quelque chose il n'y a pas de variable la requete est deja formé
    Ha pu... oui, je suis con (l'apero sans doute...). Désolé

    Ceci dit, y'a quoi dans la variable "tmp_datedel", parce que lorsque je saisi
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    DELETE FROM user_temp WHERE '2008-02-28 14:00:00' <= NOW();
    dans mon éditeur sql (SQLyog) ça marche
    (d'ou ma confusion apéritive)

  11. #11
    Membre expérimenté
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    1 349
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 349
    Points : 1 460
    Points
    1 460
    Par défaut
    si tu lances le script sans utiliser la planification de tache (via ton navigateur) cela change t'il quelque chose..?

    je cherche toutes les pistes

  12. #12
    Membre expérimenté
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    1 349
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 349
    Points : 1 460
    Points
    1 460
    Par défaut
    y'a quoi dans la variable "tmp_datedel"
    c'est tout simplement le nom d'un champ de sa base

    Le champ tmp_datedel est de type DATETIME et l'heure de suppression est défini à l'heure de création + 24
    apero...

  13. #13
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2008
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2008
    Messages : 26
    Points : 16
    Points
    16
    Par défaut
    en fait, lorsque un utilisateur s'enregistre, je le met dans une table différente pour protéger ma base de donnée principale. Le truc c'est que j'envoi un mail à l'utilisateur avec un code d'activation. Le gars click sur un lien et la, on active le compte et on le met dans la base principale. Je veut faire en sorte que si le compte est pas activé au bout de 24 heure, il est détruit donc je met a chaque insértion, la date à laquel le compte est créé + 24 heures (cela fonctionne, j'ai vérifié).
    Ensuite, je crée un script qui tournera toute les heures et qui supprimera les compte qui sont la depuis 24 heures ou plus.
    Les commandes de supression fonctionne dans mon paneau de controle SQL mais pas avec le script et pourtant, c'est exactement la même requête. De plus, et c'est ce qui me va loin lol c que la commande toute bête qui suprime tout dans la table fonctionne et pas avec la clause where ... donc en dépis de toute les fautes d'orthographe, j'espère que vous comprennez d'ou vien le probleme pasque moi j suis dans le vent sur ce coup la lol
    merci encore pour votre considération

  14. #14
    Membre régulier Avatar de bartrik
    Inscrit en
    Novembre 2003
    Messages
    104
    Détails du profil
    Informations forums :
    Inscription : Novembre 2003
    Messages : 104
    Points : 122
    Points
    122
    Par défaut
    Citation Envoyé par boo64 Voir le message
    c'est tout simplement le nom d'un champ de sa base

    apero...
    Ouais... bon je vais prendre un digestif et hop , la sieste...
    (le pire c'est que je suis muté a Bordeaux au 1er mai, ça va être pire )

  15. #15
    Membre régulier Avatar de bartrik
    Inscrit en
    Novembre 2003
    Messages
    104
    Détails du profil
    Informations forums :
    Inscription : Novembre 2003
    Messages : 104
    Points : 122
    Points
    122
    Par défaut
    Juste avant,
    Mon collègue venant d'avoir une erreur à la con avec une erreur de saisi dans le nom de la variable ? a tout hasard, ce ne serai pas temp_datedel ou autre chose ?
    Je dit ça..mais comme ne ce moment je ne dis que des co..eries.

  16. #16
    Membre expérimenté
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    1 349
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 349
    Points : 1 460
    Points
    1 460
    Par défaut
    j'ai bien saisi mais je vois vraiment pas d'où viens le problème

    j'ai realisé cela chez moi sur une page php essai:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $link = mysql_connect("localhost", "root", "") or die("Impossible de se connecter : " . mysql_error());
    $db_selected = mysql_select_db('essai', $link);
    $file = "DELETE FROM a WHERE tmp_datedel <= NOW()"; // $file is set to "index"
    mysql_query($file);
    cela me supprime bien les dates trop anciennes

  17. #17
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2008
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2008
    Messages : 26
    Points : 16
    Points
    16
    Par défaut
    Ca y'est enfin trouvé lol non ce n'était pas une variable bartrik lol.
    en fait, j'ai un peu mentis je n'ai octroyé que le privilège delete sur l'utilisateur tempvideur et comme j'avai pas d'erreur dans les log, je pensait pas que le probleme serait à ce niveau là ... mais en fait, la fonction now utilise un select et donc ca n'allais pas. Par contre, ce que je ne comprend tjr pas c que ya rien dans les log d'erreur mais quand je lance le fichier a partir d'une autre page php et pas avec le script, il met une erreur du genre "Pas de droit sur select pour l'utilisateur etc... ce qui m'aurai été bien utile dans la recherche du prob...enfin bon voila quoi, merci encore et @++

  18. #18
    Membre expérimenté
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    1 349
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 349
    Points : 1 460
    Points
    1 460
    Par défaut


    si tu lances le script sans utiliser la planification de tache (via ton navigateur) cela change t'il quelque chose..?
    j'avais eu la bonne inspiration

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

Discussions similaires

  1. Requête comparaison de dates MySQL
    Par fra7878 dans le forum Requêtes
    Réponses: 7
    Dernier message: 03/06/2011, 13h40
  2. Comparaison de dates saisies avec celles de la base mysql.
    Par bernardgiraud dans le forum Dreamweaver
    Réponses: 3
    Dernier message: 10/05/2010, 22h32
  3. comparaison date Mysql et date paramètre java
    Par kaskai dans le forum Requêtes
    Réponses: 10
    Dernier message: 18/09/2008, 14h01
  4. [MySQL] Comparaison de date au format texte dans requete mysql
    Par doudoustephane dans le forum PHP & Base de données
    Réponses: 9
    Dernier message: 22/04/2008, 17h27
  5. Comparaison de dates dans Mysql
    Par inch dans le forum Requêtes
    Réponses: 2
    Dernier message: 05/05/2007, 13h08

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