[RESOLU] A non well formed numeric value encountered

Mammouth du PHP | 804 Messages

25 janv. 2014, 12:09

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

ViPHP
xTG
ViPHP | 7331 Messages

25 janv. 2014, 12:12

Tu lui passes une date alors que la fonction attend un format : http://fr2.php.net/manual/en/datetime.format.php

Mammouth du PHP | 804 Messages

25 janv. 2014, 12:20

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-|

Mammouth du PHP | 571 Messages

25 janv. 2014, 13:17

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

Mammouth du PHP | 804 Messages

25 janv. 2014, 13:26

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 ?

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

25 janv. 2014, 15:06

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 :)

@+
Il en faut peu pour être heureux ......

Mammouth du PHP | 804 Messages

25 janv. 2014, 16:09

uniquement pour de l'affichage pour l'instant :) ok merci pour la réponse