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 :

[SQL] Problème assez bizarre


Sujet :

PHP & Base de données

  1. #1
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2006
    Messages
    35
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2006
    Messages : 35
    Points : 41
    Points
    41
    Par défaut [SQL] Problème assez bizarre
    Bonjour à tous,

    j'ai rencontré un problème bizarre auquel j'ai du mal à trouver une explication :

    dans une base de données, j'ai des données et notamment un champs timestamp, dans mon script j'utilise une requête SQL pour les récupérer puis je les traite à l'aide d'une boucle while (mysql_fetch_array ) . Dans cette boucle j'affiche les données 1 à 1 PUIS je les supprime si leur timestamp est inférieur au timestamp actuel (ie plus ancien).
    En un mot comme en 100 cela donne :
    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
     
    $requete = "SELECT timestamp FROM base";
    $res = mysql_query($requete);
     
    while($donnees = mysql_fetch_array($res))
    {
    $timestamp_actuel = time();
    echo $donnees["timestamp"]."\n";
     
    if($donnees["timestamp"] < $timestamp_actuel)
     {
     mysql_query("DELETE FROM base WHERE timestamp='".$donnees["timestamp"]."'");
     echo "bien supprimé\n";
     }
    }
    Et là seulement les données dont le timestamp est supérieur au timestamp actuel s'affichent . Pourquoi les données avec un timestamp plus ancien ne s'affichent-elles pas alors que je ne les supprime seulement qu'après les avoir affichées?

  2. #2
    Membre expert
    Inscrit en
    Janvier 2005
    Messages
    2 291
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 291
    Points : 3 212
    Points
    3 212
    Par défaut
    Es-tu sur d'avoir dans ta base de données des timestamp inférieurs au timestamp actuel justement?

    Par ailleurs, au lieu de faire une requete de suppresion pour CHAQUE ligne ayant un timestamp inférieur au timestamp actuel dans ta boucle, tu pourrais faire une seule requete après ta boucle:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     mysql_query("DELETE FROM base WHERE timestamp < '. $timestamp_actuel."'");

  3. #3
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2006
    Messages
    35
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2006
    Messages : 35
    Points : 41
    Points
    41
    Par défaut
    Citation Envoyé par koopajah
    Es-tu sur d'avoir dans ta base de données des timestamp inférieurs au timestamp actuel justement?
    Certain! Quand je fais des tests en ajoutant dans la base des données avec différents timestamps, il n'y a que ceux dont le timestamp est supérieur au timestamp actuel qui ne s'affichent.

    Citation Envoyé par koopajah
    Par ailleurs, au lieu de faire une requete de suppresion pour CHAQUE ligne ayant un timestamp inférieur au timestamp actuel dans ta boucle, tu pourrais faire une seule requete après ta boucle:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     mysql_query("DELETE FROM base WHERE timestamp < '. $timestamp_actuel."'");
    Bien vu!

  4. #4
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2006
    Messages
    35
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2006
    Messages : 35
    Points : 41
    Points
    41
    Par défaut
    Le problème vient du programme sur lequel je travaille. Apparemment il effectue les requêtes SQL en premier. Quand j'enlève la requête DELETE FROM tout fonctionne très bien, ce n'est que quand elle est présente que ça pose problème.

    Merci quand même!

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

Discussions similaires

  1. [MySQL] problème au niveau du else assez bizarre ou pas !
    Par freezlike dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 13/11/2012, 20h37
  2. Problème assez gênant et bizarre
    Par KentiX dans le forum Qt Creator
    Réponses: 1
    Dernier message: 23/04/2011, 01h32
  3. [SQL] Problème erreur sql bizarre
    Par baleiney dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 28/06/2006, 12h31
  4. [SQL] Problème bizarre requête date
    Par masseur dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 17/02/2006, 13h12
  5. [Debutant][Join Sql] problème de join
    Par ultimax dans le forum Langage SQL
    Réponses: 4
    Dernier message: 16/11/2004, 12h01

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