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 :

Problème de mise à jour date php/mysql [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 37
    Points : 15
    Points
    15
    Par défaut Problème de mise à jour date php/mysql
    Bonjour, j'ai un problème avec une commande SQL.

    J'ai ça dans un fichier PHP sur mon serveur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $sql = 'UPDATE table SET valDate='.$date.' WHERE idServGest='.$id.'';
    Ensuite pour mettre à jour la date, je passe par l'url suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    http://www.monsite.fr/updateDate.php?date=12-01-2011&id=2
    je précise que j'ai essayé tous les formats possibles pour la colonne date. j'ai essayé "Date", "Text" et "Varchar". Mais aucun ne me permet de mettre à jour ce ###@ de champ.

    Pourriez-vous m'éclaircir sur le sujet svp ?

    Merci

    neospirit

  2. #2
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    99
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 99
    Points : 127
    Points
    127
    Par défaut
    Bonjour,

    essaie ca :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $sql = 'UPDATE table SET valDate='.$_GET["date"].' WHERE idServGest='.$_GET["id"].'';
    mysql_query($sql);
    Précision, le passage par GET de ces valeurs n'est pas recommandé, le mieux est de passer par un formulaire POST.

    J'espère que ca pourra t'aider.

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 37
    Points : 15
    Points
    15
    Par défaut
    Merci mais cela ne fonctionne pas.

    J'ai essayé avec le type de colonne à "varchar", "text" et "date" et j'ai toujours pas ce que je souhaite obtenir.
    Vu que je veux la date dans ce format "dd-mm-yyyy" avec les tirets, la table me fait une opération donc si je met 09-02-2011, à l'affichage j'aurai "-2004".

    Par contre si je mets ma colonne avec le type "date" et que je fais la requete url comme cela :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    http://www.monsite.fr/updateDate.php?date=20110209&id=2
    je n'ai pas de problème, à l'affichage j'obtiens : 2011-02-09 mais cela m'oblige ensuite à faire de la conversion de date dans mon application derrière.

    Si c'est la seule solution je prends, sinon si vous avez d'autres idées, je suis preneur. Merci

    neospirit

  4. #4
    Membre expérimenté

    Profil pro
    Inscrit en
    Août 2002
    Messages
    1 060
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 1 060
    Points : 1 357
    Points
    1 357
    Par défaut
    Bonjour,

    Si ta colonne est de type "date", la date que tu reçois n'est pas au bon format, qui doit être "AAAA-MM-JJ". Elle doit donc être transformée :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <?php
      $sql = 'UPDATE table SET valDate = STR_TO_DATE(\'' . $date . '\', \'%d.%m.%Y\') 
              WHERE idServGest=' . $id;
    ?>

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 37
    Points : 15
    Points
    15
    Par défaut
    Maintenant j'obtiens cela : "2011-12-25" à l'affichage avec cette url :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    http://www.franceelections2012.fr/updateDate.php?date=25-12-2011&id=2
    C'est dans le sens où je veux l'écrire mais comment puis-je obtenir l'affichage suivant : 25-12-2011" ?

    neospirit

  6. #6
    Membre expérimenté

    Profil pro
    Inscrit en
    Août 2002
    Messages
    1 060
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 1 060
    Points : 1 357
    Points
    1 357
    Par défaut
    Pour récupérer la date au format français à partir de la BDD :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <?php
      $sql = 'SELECT DATE_FORMAT(laDate,\'%d-%m-%Y\') AS dateFR
              FROM laTable
              WHERE id = 2';
    ?>

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 37
    Points : 15
    Points
    15
    Par défaut
    Ok mais en fait j'affiche le nom de la variable puis sa valeur comme cela :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    $sql = 'SELECT nom,valDate FROM table WHERE idServGest='.$id.'';
    $req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
    	// on fait une boucle qui va faire un tour pour chaque enregistrement 
    	while($data = mysql_fetch_assoc($req))
    	{
    		// on affiche les informations de l'enregistrement en cours
    		echo '<b>'.$data['nom'].'<br/>';
    		echo '<b>'.$data['valDate'].'<br/>';
    	}
    Du coup si j'implémente ton code avec le mien je n'arrive plus à afficher le nom et la date .

    Je vais devenir dingue

    neospirit

  8. #8
    Membre expérimenté

    Profil pro
    Inscrit en
    Août 2002
    Messages
    1 060
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 1 060
    Points : 1 357
    Points
    1 357
    Par défaut
    Mon code n'est qu'un exemple. Tu dois l'adapter :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <?php
      $sql = 'SELECT nom, DATE_FORMAT(valDate,\'%d-%m-%Y\') as dateFR 
              FROM table WHERE idServGest = ' . $id;
      $req = mysql_query($sql) 
        or die('Erreur SQL !<br>' . $sql . '<br>' . mysql_error());
          // on fait une boucle qui va faire un tour pour chaque enregistrement 
          while($data = mysql_fetch_assoc($req))
          {
              // on affiche les informations de l'enregistrement en cours
              echo '<b>'.$data['nom'].'<br/>';
              echo '<b>'.$data['dateFR'].'<br/>';
          }
    ?>
    De plus, ta boucle est inutile puisque tu donnes un id. Tu ne dois récupérer qu'une seule ligne.

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 37
    Points : 15
    Points
    15
    Par défaut
    Merci beaucoup ça fonctionne.

    Pour la boucle, je la laisse car par la suite j'aurai plusieurs lignes à récupérer. Maintenant que c'est bon je vais pouvoir attaquer la suite.

    Une sacrée épine du pied m'est enlevée.

    neospirit

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 08/07/2009, 11h52
  2. Problème de mise à jour d'un champ date
    Par aloha dans le forum JDBC
    Réponses: 2
    Dernier message: 17/04/2008, 12h09
  3. [MySQL] problème date php/mysql : 0000-00-00 00:00:00
    Par ths_otraa dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 13/02/2008, 12h09

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