Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD > PHP & Oracle
PHP & Oracle Forum d'entraide sur Oracle avec PHP. Avant de poster -> FAQ Oracle et Cours Oracle
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 06/11/2006, 15h05   #1
Nouveau Membre du Club
 
Inscription : juin 2005
Messages : 81
Détails du profil
Informations forums :
Inscription : juin 2005
Messages : 81
Points : 37
Points : 37
Par défaut Récupération d'une variable time

Bonjour,

Je cherche à récupérer, via du code php, une variable "time" à partir d'une variables "datetime" dans une base oracle...
Je m'explique, j'ai des variables du type "01/01/1900 hh:mm:ss" dans une base oracle et je veux juste récupérer le temps (hh:mm:ss).

Le seul résultat que j'arrive à avoir c'est 01/01/1900 (meme en faisant juste un echo "$date").
Vu que la date est 1900, je peux pas via le timestamp( malins les DBA...), j'ai aussi essayé avec strlen, explode etc... mais comme de toute facon à aucun moment j'ai réussi à afficher le temps, je ne sais pas comment faire.

Si vous voulez du code, je vous mets juste la requete qui va fouiller dans ma base. Je ne sias pas si ca sera utile mais c'est tout ce que j'ai.

MErci d'avance.

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
if($ses_ot!='vide'){
	$sql=new oracle();
	if($sql->connect()=='ok'){
		$req="SELECT requestdate,requesttime FROM wo WHERE wonum='$ses_ot'";
		$sql->execute($req);
		$r=$sql->nbresults();
		echo"$r";
 
		if($r!=0){
		echo"dans le if";
			for($j=0;$j<$sql->nbresults();$j++){
				$datedemande=$sql->recup($j,"REQUESTDATE");
				$heuredemande=$sql->recup($j,"REQUESTTIME");				
			}
		}
		else {
		echo"dans le else";
			$datedemande='';
			$heuredemande='';
		}

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
function execute($query)
    {
        // Il suffit de mettre en commentaire error_reporting pour faire du
        // débogage - voir quand il n'y a aucun résultat "NO DATA FOUND" par exemple.
        error_reporting(0);
 
        if (($this->verif != "nok") && ($this->verif != "ok"))
        {
            $this->verif = "nok";
        }
        else
        {
            if ($this->cursor = ora_do($this->connection, $query))
            {
                $this->numCols = ora_numcols($this->cursor);
 
                // On met la première ligne dans un tableau
                $row = array();
 
                for ($i=0; $i<$this->numCols; $i++)
                {
                    // On parcours toutes les colonnes
                    $row[ora_columnname($this->cursor, $i)] = ora_getcolumn($this->cursor, $i);
                }
 
                $this->nbresults++;
 
                // On ajoute la ligne $row au tableau results
                array_push($this->results, $row);
 
                // Avec le fetch, on met une à une, les lignes résultantes de la requete
                //dans le tableau $row qui sera ensuite mis dans le tableau $results.
                while(ora_fetch($this->cursor))
                {
                    // On parcours toutes les lignes
                    $row=array();
 
                    for ($i=0; $i<$this->numCols; $i++)
                    {
                        // Pour chaque colonne de chaque ligne
                        $row[ora_columnname($this->cursor, $i)] = ora_getcolumn($this->cursor, $i);
                    }
                    array_push($this->results, $row);
                    $this->nbresults++;
                }
                $this->verif1 = "ok";
            }
            else { $this->verif1 = "nok";   }
        }
        // Le fameux error_reporting. Mettre en commentaire pour voir les NO_DATA_FOUND.
        error_reporting(1);
 
        return $this->verif1;
    }
 
    //RECUPERATION DE LA VALEUR CONTENUE DANS LE CHAMP $champ
    function nbresults()
    {
        return $this->nbresults;
    }
 
    //RECUPERATION DE LA VALEUR CONTENUE DANS LE CHAMP $champ
    function recup($a, $champ)
    {
        return $this->results[$a][$champ];
    }
__________________
Tout ch'ti qui pisse i tient s'biroute din ch'min
La victoire est conservatrice, la défaite est évolutive
gscorpio est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/11/2006, 15h22   #2
Membre du Club
 
Inscription : janvier 2005
Messages : 189
Détails du profil
Informations personnelles :
Âge : 29
Localisation : France

Informations forums :
Inscription : janvier 2005
Messages : 189
Points : 64
Points : 64
Salut,

je sais pas si ca fonctionne sous oracle mais en tout cas avec postgresql tu peux faire un truc du genre :

Code :
1
2
3
 
 
SELECT EXTRACT(DAY FROM Nom_Table.NomChamp) as jour,EXTRACT(YEAR FROM Nom_Table.NomChamp) as annee,EXTRACT(HOUR FROM Nom_Table.NomChamp) as heure...
ensuite tu concataine tes champs en php.

Sinon tu récupere l'ensemble de ton datetime dans ta requete et tu effectue un explode dessu en php
Mat_DZ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/11/2006, 15h39   #3
Nouveau Membre du Club
 
Inscription : juin 2005
Messages : 81
Détails du profil
Informations forums :
Inscription : juin 2005
Messages : 81
Points : 37
Points : 37
Ca a pas l'air de marcher... ou alors je l'utilise mal.

Voila ce que j'ai fait:

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
if($sql->connect()=='ok'){
	$req="SELECT EXTRACT(HOUR FROM wo.requesttime) as heure WHERE wonum='$ses_ot'";
		$sql->execute($req);
		$r=$sql->nbresults();
		echo"$r";
 
		if($r!=0){
		echo"dans le if";
			for($j=0;$j<$sql->nbresults();$j++){	$heure=$sql->recup($j,"heure");
			}
		}
		else {
		echo"dans le else";
			$datedemande='';
			$heuredemande='';
		}
		echo "heure : $heure";
 
	}
mais il rentre meme pas dans le if... donc il trouve rien.

POur le explode j'ai déjà essayé mais j'ai rien réussi à afficher.

j'avais fait un truc du genre :

list($a,$b,$c)=explode(':',$heuredemande);

Merci de ton aide


EDIT : Pas d'enregistrement non plus avec
$req="SELECT EXTRACT(HOUR FROM requesttime) as heure from wo WHERE wonum='$ses_ot'";
__________________
Tout ch'ti qui pisse i tient s'biroute din ch'min
La victoire est conservatrice, la défaite est évolutive
gscorpio est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/11/2006, 16h00   #4
Membre du Club
 
Inscription : janvier 2005
Messages : 189
Détails du profil
Informations personnelles :
Âge : 29
Localisation : France

Informations forums :
Inscription : janvier 2005
Messages : 189
Points : 64
Points : 64
Et si tu execute ta requete directement sous oracle ça te donne quoi?
Mat_DZ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/11/2006, 16h23   #5
Nouveau Membre du Club
 
Inscription : juin 2005
Messages : 81
Détails du profil
Informations forums :
Inscription : juin 2005
Messages : 81
Points : 37
Points : 37
Ca je peux pas... j'ai pas les droits
On m'a juste mis une base de test à disposition,
Je ne suis qu'un pauvre stagiaire.
__________________
Tout ch'ti qui pisse i tient s'biroute din ch'min
La victoire est conservatrice, la défaite est évolutive
gscorpio est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/11/2006, 17h18   #6
Membre du Club
 
Inscription : janvier 2005
Messages : 189
Détails du profil
Informations personnelles :
Âge : 29
Localisation : France

Informations forums :
Inscription : janvier 2005
Messages : 189
Points : 64
Points : 64
Citation:
Envoyé par gscorpio
mais il rentre meme pas dans le if... donc il trouve rien.

POur le explode j'ai déjà essayé mais j'ai rien réussi à afficher.

j'avais fait un truc du genre :

list($a,$b,$c)=explode(':',$heuredemande);
le problème vient sans doute de ton accès à ta bdd.
As-tu essayé d'executer d'autres requetes?
Car si ta requete fonctionne explode devrai fonctionner

Code :
1
2
3
4
 
 
list=explode(" ",$heuredemande);
echo(liste[1]); //renvoi l'heure complète, liste[0] étant la date. Si rien ne s'affiche c'est que ta requete ne renvoi rien et qu'elle n'est peu etre meme pas executée...
Mat_DZ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/11/2006, 08h48   #7
Nouveau Membre du Club
 
Inscription : juin 2005
Messages : 81
Détails du profil
Informations forums :
Inscription : juin 2005
Messages : 81
Points : 37
Points : 37
Oui ya pas de problèmes,

une requete simple comme
Code :
"SELECT requestdate,requesttime FROM wo WHERE wonum='$ses_ot'"
fonctionne parfaitement et j'arrive à récupérer les champs avec

Code :
1
2
3
4
5
6
7
8
9
$sql->execute($req);
		$r=$sql->nbresults();
		echo"$r";
 
		if($r!=0){ 
		echo"dans le if";
			for($j=0;$j<$sql->nbresults();$j++){
				$datedemande=$sql->recup($j,"REQUESTDATE");
				$heuredemande=$sql->recup($j,"REQUESTTIME");


Avec l'explode j'arrive à rien. Il y a un problème au niveau du stockage de la variable.
Bizarrement, de liste[1] à liste[8], il m'affiche caractère par caractère 0 1 - J A N - 0 0. Au delà, il affiche plus rien.

Mais meme sans le transformer (en récupérant le champs "brut") j'ai jamais pu afficher l'heure. (je te rappelle que c'est enregistré au format 01/01/1900 hh:mm:ss).
Est ce que ca pourrait venir de mon $sql-> recup? Il mettrait la date (01/01/1900) dans un tableau, l'heure aussi, et ensuite il me renverrait que la date??

Merci beaucoup
__________________
Tout ch'ti qui pisse i tient s'biroute din ch'min
La victoire est conservatrice, la défaite est évolutive
gscorpio est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 14h37.


 
 
 
 
Partenaires

Hébergement Web