8795 sujets

Développement web côté serveur, CMS

Bonjour

Avec la donnée d’une colonne date (par ex. : 03/05/2008), je construis en Php la donnée $date1 d’une colonne date1 (2008-05-03) ; j’ai 7000+ lignes comme ça.

Dans mon code Php, je mets des Print qui vérifient que les valeurs de ma donnée $date1 sont bien construites.

Mon code :

$requete = "SELECT * FROM compteur";
$result = mysql_query ($requete, $connexion);

while ($myrow = mysql_fetch_row($result)) 
	{
	if($myrow[2] > 0)
		{
		$date1 = substr($myrow[2],6,4)."-".substr($myrow[2],3,2)."-".substr($myrow[2],0,2);

		$requete2 = "UPDATE compteur SET date1='$date1' ";
		$result2 = mysql_query ($requete2, $connexion);
		}
	}	
 

La colonne date1 est définie : varchar, 10, null=oui.

Résultat : chaque ligne de la colonne date1 = la date du jour (2008-06-05), ce qui n’est évidemment pas ce que j’attend.

Je n’ai pas mis de clause Where puisque je transforme chaque ligne, sauf celles où date est vide; j’ai essayé différentes variantes, sans succès.

Merci par avance de vos conseils.

Francois
La question: pourquoi le champs date1 est-il = à la date du jour sur les 7000+ lignes?

A l'envers, pourquoi n'est-il = la valeur transformée du champ date?

Francois
Administrateur
Quelque chose m'échappe dans l'explication, mais s'il s'agit juste de remplir un champ avec un autre :

UPDATE compteur
SET date1 = concat(substring(date,7,4), '-', substring(date,4, 2) , '-', substring(date,1,2))
WHERE date!=''
Salut Smiley cligne ,

j'étais en train de répondre mais dew m'a devancé !

J'ajouterais quand même que :

1) c'est une drôle d'idée d'avoir un champ qui représente une date en varchar(10) alors que le type date est fait pour ça Smiley rolleyes ! Et d'ailleurs il me semble bien que c'est la raison qui t'a poussé à faire ce drôle de script (peut-être pour pouvoir justement trier par date ?) Smiley langue !

2) à partir du moment où tu ne mets pas de clause where tous les enregistrements seront mis à jour et donc la dernière "date" trouvée écrasera la valeur présente dans tous les enregistrements Smiley eek ! Il me semble donc que tu es bien obligé de renseigner l'id de ton enregistrement dans la clause where...

A+


PS : ça me rappelle un beau discours Smiley biggol et surtout quelques liens intéressants !
bonjour et merci de vos réponses.

Oui, il s'agit juste, dans chaque enregistrement, de transformer date pour renseigner date1; en deuxième étape, je supprimerai la colonne date.

Effectivement, mon problème à l'origine était que les tris sur date étaient mauvais.

Bon, je vais essayer avec la clause Where que vous m'indiquez.

Et, plus tard, passerai date1 en format DATE, c'est promis.

Je vous tiendrai au courant.

Francois