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 :

Update d'un champ datetime capricieux


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Inscrit en
    Mars 2010
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 12
    Par défaut Update d'un champ datetime capricieux
    Bonjour,
    voici mon problème :
    Dans ma base de donnée j 'essaie de mettre a jour un champ de type datetime depuis une page php. Voici la requête :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "UPDATE personne SET dt_connexion = '".date("Y-m-d H:i:s")."' WHERE ( id = '" .$_SESSION['UNIVERSALID']. "')"
    Dans ma table, le champ est de cette forme : '2010-11-22 15:25:30'.
    Ma page php agis de cette façon, elle met a jour des champ puis redirige sur une page ou une autre en fonction des variables de sessions reçues.

    Lorsque je fais un echo de ma requête et que je la colle directement dans l'onglet SQL de phpmyadmin, elle fonctionne correctement.
    Par contre les redirections ne fonctionnent plus (a cause des headers).
    Sans echo, la requête s'exécute, mais met mon champ dt_connexion à '0000-00-00 00:00:00'

    J'aimerais savoir d'où vient cet aléa et comment le résoudre. Merci d'avance de vos réponses

  2. #2
    Expert éminent
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 815
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 815
    Billets dans le blog
    14
    Par défaut
    Ta fonction date en php donne la date et l'heure courante ?
    Pourquoi ne pas utiliser directement la fonction SQL CURRENT_TIMESTAMP dans ta requête ?
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    UPDATE personne
    SET dt_connexion = CURRENT_TIMESTAMP
    WHERE id = $_SESSION['UNIVERSALID']

    À noter que si, comme il se devrait, l'id est de type entier, inutile d'entourer la valeur par des apostrophes.
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole, en retraite... mais toujours Autoentrepreneur à l'occasion.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  3. #3
    Membre habitué
    Inscrit en
    Mars 2010
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 12
    Par défaut
    Merci pour ce conseil, l'utilisation du timestamp fonctionne très bien,
    mais seulement quand j'agis directement dans phpmyadmin

    Cela me met toujours mon champ dt_connexion a 0 quand je passe par mon script PHP.

    Bizarrement les autres UPDATE fonctionnent correctement, il n'y a que ceux
    des champs datetime qui me posent problème.

    Concernant l'UNIVERSALID, ce sont des caractères et des nombres
    donc les apostrophes sont effectivement nécessaires.

    Je continue de chercher de mon coté.

  4. #4
    Expert éminent
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 815
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 815
    Billets dans le blog
    14
    Par défaut
    Citation Envoyé par ladislaz Voir le message
    l'utilisation du timestamp fonctionne très bien,
    mais seulement quand j'agis directement dans phpmyadmin

    Cela me met toujours mon champ dt_connexion a 0 quand je passe par mon script PHP.
    Pas logique !
    As-tu fait un echo de la requête avant envoi au SGBD ?

    Concernant l'UNIVERSALID, ce sont des caractères et des nombres
    donc les apostrophes sont effectivement nécessaires.
    Ça c'est pas bien pour un identifiant !
    À lire => Qu'est-ce qu'une bonne clé ?
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole, en retraite... mais toujours Autoentrepreneur à l'occasion.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  5. #5
    Membre habitué
    Inscrit en
    Mars 2010
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 12
    Par défaut
    Haha oui je sais mais ce n'est pas moi qui ai choisi le nom de cette variable et il existe un autre id en plus de celui la qui lui est un entier.

    Oui j'ai fait un echo de la requête et elle fonctionne (en direct dans phpmyadmin). Je suis donc d'accord ce n'est pas logique. Surtout que quand
    je fais un echo, cela fonctionne et inscrit bien la date et l'heure actuelle dans la table. Sans echo, l'enregistrement se fait et vaut '0000-00-00 00:00:00'.

    Le problème est que je ne peux pas me permettre de faire un echo car j'ai des redirections après et les headers planteraient lamentablement .

    Je suis bloqué dessus depuis bientôt 4 jours donc j'ai décidé de poster.

  6. #6
    Expert éminent
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 815
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 815
    Billets dans le blog
    14
    Par défaut
    Bizarre !
    On peut avoir le texte de l'echo de la requête envoyée au serveur ?
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole, en retraite... mais toujours Autoentrepreneur à l'occasion.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

Discussions similaires

  1. Champs datetime (Update)
    Par bestcasaoui dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 01/02/2011, 14h44
  2. Recuperer la date sans l'heur dans un champ datetime
    Par bob33 dans le forum MS SQL Server
    Réponses: 7
    Dernier message: 22/06/2010, 12h59
  3. UPDATE de champ datetime
    Par HULK dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 09/09/2005, 12h24
  4. Update d'un champ BLOB
    Par ZeKlubb dans le forum Connexion aux bases de données
    Réponses: 4
    Dernier message: 17/01/2004, 16h04
  5. Réponses: 3
    Dernier message: 23/09/2003, 09h12

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