Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD > PHP & MySQL
PHP & MySQL Forum d'entraide sur les fonctions MySQL avec PHP. Avant de poster -> FAQ MySQL, Cours MySQL et Sources MySQL. Pour les questions concernant le moteur MySQL plutôt que les fonctions PHP, merci d'utiliser le forum MySQL.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 11/01/2011, 10h10   #1
Invité de passage
 
Inscription : septembre 2009
Messages : 37
Détails du profil
Informations forums :
Inscription : septembre 2009
Messages : 37
Points : 3
Points : 3
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 :
1
2
 
$sql = 'UPDATE table SET valDate='.$date.' WHERE idServGest='.$id.'';
Ensuite pour mettre à jour la date, je passe par l'url suivante :
Code :
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
neospirit est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/01/2011, 10h29   #2
Membre régulier
 
Inscription : avril 2009
Messages : 83
Détails du profil
Informations forums :
Inscription : avril 2009
Messages : 83
Points : 96
Points : 96
Bonjour,

essaie ca :

Code :
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.
anthony89 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/01/2011, 10h42   #3
Invité de passage
 
Inscription : septembre 2009
Messages : 37
Détails du profil
Informations forums :
Inscription : septembre 2009
Messages : 37
Points : 3
Points : 3
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 :
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
neospirit est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/01/2011, 10h49   #4
Membre Expert
 
Inscription : août 2002
Messages : 1 036
Détails du profil
Informations forums :
Inscription : août 2002
Messages : 1 036
Points : 1 166
Points : 1 166
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 :
1
2
3
4
<?php
  $sql = 'UPDATE table SET valDate = STR_TO_DATE(\'' . $date . '\', \'%d.%m.%Y\') 
          WHERE idServGest=' . $id;
?>
jeca est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/01/2011, 11h00   #5
Invité de passage
 
Inscription : septembre 2009
Messages : 37
Détails du profil
Informations forums :
Inscription : septembre 2009
Messages : 37
Points : 3
Points : 3
Maintenant j'obtiens cela : "2011-12-25" à l'affichage avec cette url :

Code :
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
neospirit est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/01/2011, 11h12   #6
Membre Expert
 
Inscription : août 2002
Messages : 1 036
Détails du profil
Informations forums :
Inscription : août 2002
Messages : 1 036
Points : 1 166
Points : 1 166
Pour récupérer la date au format français à partir de la BDD :
Code :
1
2
3
4
5
<?php
  $sql = 'SELECT DATE_FORMAT(laDate,\'%d-%m-%Y\') AS dateFR
          FROM laTable
          WHERE id = 2';
?>
jeca est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/01/2011, 11h24   #7
Invité de passage
 
Inscription : septembre 2009
Messages : 37
Détails du profil
Informations forums :
Inscription : septembre 2009
Messages : 37
Points : 3
Points : 3
Ok mais en fait j'affiche le nom de la variable puis sa valeur comme cela :

Code :
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
neospirit est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/01/2011, 11h46   #8
Membre Expert
 
Inscription : août 2002
Messages : 1 036
Détails du profil
Informations forums :
Inscription : août 2002
Messages : 1 036
Points : 1 166
Points : 1 166
Mon code n'est qu'un exemple. Tu dois l'adapter :
Code :
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.
jeca est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/01/2011, 12h01   #9
Invité de passage
 
Inscription : septembre 2009
Messages : 37
Détails du profil
Informations forums :
Inscription : septembre 2009
Messages : 37
Points : 3
Points : 3
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
neospirit est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 19h19.


 
 
 
 
Partenaires

Hébergement Web