Page 1 sur 1

ORACLE date et format...

Posté : 18 août 2005, 11:01
par Tuio
Bonjour,
Je suis en train de créer une page générique capable de lire n'importe quelle table. Problème, lors de la restitution des données, mes dates qui sont au format dd/mm/yyyy apparraissent au format dd/mm/yy
Quelqu'un connait'il une solution pour restituer le bon format ?
PS : Je suis en PhP 4

Posté : 18 août 2005, 11:07
par Cyrano
Le problème est dans ton code de récupération: sans le voir, difficile de te répondre.

Posté : 18 août 2005, 11:13
par Tuio
Mouais logique... quand on est un boulet, on reste un boulet :oops:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Afficheur des données</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<?php
include "common.php";
$conn = ora_plogon($login.'@'.$db, $pwd) or die ('Error : '.ora_error().'<br>');
$v_open = ora_open($conn) or die ('Could not connect. '.ora_error().'<br>');
?>
<body>
<table width="100%"  border="1" cellspacing="0000" cellpadding="0">
  <tr>
<?php
echo $_POST['table'];
$table = $_POST['table'];
$query="SELECT * FROM $table";
$v_parse = ora_Parse($v_open,$query) or die ('Error : select '.ora_error());
$v_execute = ora_Exec($v_open) or die ('Execution not made. '.ora_error());
$i = 0;
$nbcolums = ora_numcols($v_open);
while ($i!=$nbcolums) {
        printf("<td><b>%s",ora_columnname($v_open,$i));
        printf("</b><br>%s",ora_columntype($v_open,$i));
        printf("(%s)</td>",ora_columnsize($v_open,$i));
        $i+=1;
}
?>
  </tr>
<?php
$j = 0;
while ($j<=100 && Ora_Fetch($v_open)) {
        echo "<tr>";
        $i=0;
        while ($i!=$nbcolums) {
                printf("<td>%s</td>",ora_getcolumn($v_open,$i));
                $i+=1;
        }
        echo "</tr>";
        $j+=1;
}
?>
</table>

</body>
</html>
EDIT : le code n'a pas encore été adapté à mon site et donc si vous connaissez un minimum php.net vous y trouverez quelques ressemblances :P

Posté : 18 août 2005, 11:19
par Cyrano
Malheureusement, ce code ne m'avance pas vraiment. Le SELECT * non plus du reste. Est-tu bien certain que tes dates sont enregistrées avec des années sur 4 chiffres dans la base ? Il me paraît anormal que le retour en coupe deux...

Posté : 18 août 2005, 11:27
par roadruner
si tu passes directement par sqlplus, le format de la date est-il correct ?

Posté : 18 août 2005, 11:29
par Tuio
Ben lorsque je lis les données avec Toad, j'ai bien des dates au format :
dd/mm/yyyy
J'ai pensé au début que c'était ma configuration de PhP mais je n'ai rien trouvé :?

Pour ce qui est du SELECT, je vais avoir du mal à le modifier car ce script doit être le plus générique possible (il affiche des tables différentes et surtout qui peuvent être modifiées souvent)

Je ne connais rien sur les colonnes avant la ligne 25
        printf("</b><br>%s",ora_columntype($v_open,$i));
Mais je vais essayer de faire quelque chose :
* faire un deuxième SELECT avec l'ensemble des noms des champs à la place de * et mettre un
to_char(madata, 'DD/MM/YYYY')
pour chaque date...

Je voulais éviter de refaire une requête sur la base mais ca me parait assez difficile là :?

Posté : 18 août 2005, 11:34
par Cyrano
Tu peux peut-être monter un système testant un valeur "nom_de_table_a_afficher" et dns un switch ajuster des requêtes spécifiques, mais si la base doit être modifiée, le coté générique va en prendre un coup. :?

Posté : 18 août 2005, 11:34
par Tuio
Bien vu ! Toad ne donne pas le bon format des dates !!!
sous SQLplus (moins permissif) mes dates ont ce format :
01-JAN-00
sous Toad :
01/01/1900
et avec mon script PhP :
01/01/00

Bon va falloir revoir la base...