Page 1 sur 1

A non well formed numeric value encountered

Posté : 25 janv. 2014, 12:09
par dogmongo
Bonjour,

Bon et bien je n'aurai pas mis longtemps à rencontrer un autre problème de transition à PDO
tout ce passe plutôt bien sauf que je rencontre une nouvelle erreur au niveau format date

voici l'erreur

Code : Tout sélectionner

A non well formed numeric value encountered
la structure de ma table est

Code : Tout sélectionner

port_date - date- 0000-00-00
$query = 'SELECT port_id, port_valide, port_url, port_nom, port_texte, port_cat, port_date, port_parain, port_photo FROM source;';

$prep = $db->prepare($query);
$prep->execute();
	
while($lignes=$prep->fetch(PDO::FETCH_OBJ))
{ 
		echo date('j',$lignes->port_date);
}
merci de votre aide

Re: A non well formed numeric value encountered

Posté : 25 janv. 2014, 12:12
par xTG
Tu lui passes une date alors que la fonction attend un format : http://fr2.php.net/manual/en/datetime.format.php

Re: A non well formed numeric value encountered

Posté : 25 janv. 2014, 12:20
par dogmongo
merci pour la réponse
désolé j'ai envoyé trop vite je réedite, donc;
while($lignes=$prep->fetch(PDO::FETCH_OBJ))
{ 
		$date = $lignes->port_date;
		echo date('j',strtotime("$date")); // aucun problème 
                echo  date_format('Y',$lignes->port_date); // erreur 
}
je suis donc obligé de codé ainsi
mais alors pourquoi faire un champ MySQL date si je peu pas l'utilisé en format date ? :roll:
il y a un truc que je ne suis pas 8-|

Re: A non well formed numeric value encountered

Posté : 25 janv. 2014, 13:17
par yann18
la fonction date_format() attend en paramètre un objet de type DateTimeInterface (donc un type DateTime) et un format :
while($lignes=$prep->fetch(PDO::FETCH_OBJ))
{
            
            $date = date_create($lignes->port_date);
            echo date_format($date, 'Y');
               
}
Tu peux le faire aussi en sql avec la fonction YEAR() pour extraire l'année, DAY() pour extraire le jour...:
$sql = "SELECT YEAR(port_date),  MONTH(port_date) FROM MaTable";//selectionne l'année, le mois de la date date_port

Re: A non well formed numeric value encountered

Posté : 25 janv. 2014, 13:26
par dogmongo
merci pour cette info, je trouve ca plutôt intéressant de pouvoir faire le trie directement dans la requête

du coup je vais peu être poser une question stupide mais, quel avantage j'ai à utiliser une structure date plutôt qu'une structure INT qui fonctionne avec mon code sans créer d'erreur ?

Re: A non well formed numeric value encountered

Posté : 25 janv. 2014, 15:06
par moogli
Calcul, tri sur les dates par exemple.

Si c'est pour de l'affichage c'est sûrement plus performant de la faire en sql.

Pis faut prendre les bon outils :)

@+

Re: A non well formed numeric value encountered

Posté : 25 janv. 2014, 16:09
par dogmongo
uniquement pour de l'affichage pour l'instant :) ok merci pour la réponse