Erreur de conversion !

medaminech Messages postés 4 Date d'inscription mardi 14 avril 2009 Statut Membre Dernière intervention 18 mai 2010 - 17 mai 2010 à 12:41
kohntark Messages postés 3705 Date d'inscription lundi 5 juillet 2004 Statut Membre Dernière intervention 27 avril 2012 - 19 mai 2010 à 08:09
Bonjour toutes et tous,
Voila mon probleme, je travaille sur une application pour gérer les visites extérieures au sein d'une societe. J'ai trouvé un probleme lors de la conversion, j'ai cherché toute la matinée pour une solution mais j'ai pas trouvé ce que je cherchais. Anyway, j'ai besoin d'afficher en premier lieu la date du jour de la visite et après les visites par heure du meme jour et ainsi de suite. J'ai utilisé pour le champ DateHeure le type DateTime (AAAA-MM-JJ HH:MM:SS).
Pour afficher la date du jour, j'ai utilisé : CAST(DateHeure AS CHAR(10)) ce qui marche indépendamment.
Pour le deuxieme celui de choisir la date a partir du datetime, j'ai utilisé :
SUBSTRING(CAST(DateHeure AS CHAR(19)),12,19)


Mais il ne marche pas, ça m'indique des erreurs dans les lignes en gras.

Si Quelqu'un a une idée d'une solution quelconque, partagez-la :) Et merci

Remarques : Il n'y a pas de probleme dans la connexion avec la bases de données puisque d'autres fichiers marchent.

<?php
include("../connect_base.php");
session_start(); ?>
<HTML>

Affichage de toutes les visites :

<?php

$sql = "SELECT CAST(DateHeure AS CHAR(10)) FROM visite";
$req = mysql_query($sql) or die('Erreur !');

while($data=mysql_fetch_object($req))
{

echo '',$data->DateHeure,'
';
echo '----
DateHeure, NomPrénom, Société, Objet, Service, ';

$sql2 = \"SELECT SUBSTRING(CAST(DateHeure AS CHAR(19)),12,19), NomPrenom, Societe, Objet, Service FROM visite WHERE DateHeure LIKE '\".$data->DateHeure.\"%' ORDER BY DateHeure DESC \";
$req2 = mysql_query($sql2) or die('Erreur 2 !');

while ($data2=mysql_fetch_object($req2))
{
echo '----
', $data2->DateHeure, ', ', $data2->NomPrenom, ', ', $data2->Societe, ', ', $data2->Objet, ', ', $data2->Service, ', ';
}
echo '

';
}

?>

</html>

6 réponses

medaminech Messages postés 4 Date d'inscription mardi 14 avril 2009 Statut Membre Dernière intervention 18 mai 2010
17 mai 2010 à 12:46
Désolé je les ai pas mis en gras. Voila les lignes :

echo '<table width=100%>',$data->DateHeure,'
';

$sql2 = "SELECT SUBSTRING(CAST(DateHeure AS CHAR(19)),12,19), NomPrenom, Societe, Objet, Service FROM visite WHERE DateHeure LIKE '".$data->DateHeure."%' ORDER BY DateHeure DESC ";

echo '<TR><td width=15%>', $data2->DateHeure, '</td><td width=25%>', $data2->NomPrenom, '</td><td width=20%>', $data2->Societe, '</td><td width=20%>', $data2->Objet, '</td><td>', $data2->Service, '</td></TR>';
0
kohntark Messages postés 3705 Date d'inscription lundi 5 juillet 2004 Statut Membre Dernière intervention 27 avril 2012 30
17 mai 2010 à 14:19
Salut,

Je n'ai rien regardé, mais :
Mais il ne marche pas, ça m'indique des erreurs

Ah bon, lesquelles ?
... c'est tout de même plus simple de le préciser, non ?

Bon, je ne vois pas bien pourquoi tu fais un CAST / SUBSTRING, mais bon, je n'ai rien regardé


Kohntark -
0
medaminech Messages postés 4 Date d'inscription mardi 14 avril 2009 Statut Membre Dernière intervention 18 mai 2010
18 mai 2010 à 00:14
Merci pour le passage en tt cas,
j'ai indiqué les erreurs dans mon deuxieme post, j'ai oublié de les indiké au debut.
J'ai fait un substring(cast) parce que j'ai essayé un cast tout seul et j'ai eu une erreur, donc j'ai conclu que puisk c'est une date on ne peut faire la souschaine.
Si tu as une solution qui omet tout ça, n'hesite pas
0
kohntark Messages postés 3705 Date d'inscription lundi 5 juillet 2004 Statut Membre Dernière intervention 27 avril 2012 30
18 mai 2010 à 03:29
j'ai indiqué les erreurs dans mon deuxieme post

Non, tu as indiqué les lignes concernées, pas les messages d'erreurs exacts qui te sont renvoyées. Faire un copié / collé de ces erreurs en précisant clairement la ligne concernée évite de trop chercher, voire de répondre à côté de la plaque.

Concernant :
La fonction SUBSTRING() prend en troisième paramètre la longueur de la chaîne à récupérer à partir de la position donnée par le second paramètre.
En l'occurrence 19 ne correspond plus à rien (il eu fallu mettre 8)

Mais bon, inutile de passer par là : tu as toute une tripotée de fonctions sur les dates pour cela (je te laisse voir la doc), par exemple :
$sql2 = "SELECT DATE_FORMAT(DateHeure, '%H:%i:%s'), ...

Cordialement,

Kohntark -
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
medaminech Messages postés 4 Date d'inscription mardi 14 avril 2009 Statut Membre Dernière intervention 18 mai 2010
18 mai 2010 à 16:20
Ouii, merci de l'avoir indiqué, je vais lire la doc complete concernant les dates (http://php.net/manual/fr/function.date.php) et essayer ce que je trouve.
Merci
0
kohntark Messages postés 3705 Date d'inscription lundi 5 juillet 2004 Statut Membre Dernière intervention 27 avril 2012 30
19 mai 2010 à 08:09
la doc complete concernant les dates (http://php.net/manual/fr/function.date.php)

Je parlais plutôt de celle-ci :
http://dev.mysql.com/doc/refman/5.0/fr/date-and-time-functions.html

En SQL donc !!

L'exemple en bleu que je te donnais est en principe fonctionnel, ... enfin si ce que tu recherches est bien de retirer les "heure:minute:seconde"


Cordialement,

Kohntark -
0
Rejoignez-nous