problème de recup de date
Stagiaire WDF
Inscrit:
06/01/2005 09:29
Post(s): 13
Bonjour,

j'avais posté il y a qq temps pour savoir comment se connecter a une base de données via odbc.

Ca, c'est fait, et mon programme marche bien.

Cependant, j'ai un problème auquel je ne trouve pas de solution et qui pourtant doit etre tout bete..

tous mes champs sont au format "texte". sauf le dernier qui est une "date".

mon but est de recuperer toutes les données de la table et de les ecrire dans un fichier texte.

et je récupère tout sauf les dates !!

est ce qu'un sait comment proceder ??
dois je les traiter a part? (ce qui serait chiant..)
quel est la syntaxe sql pour preciser que ce champ la est une date??
ma boucle est bonne car quand je convertis ce champ en texte tout se passe bien.

Merci a vous d'eclairer ma lanterne !!! je vous donne mon code si besoin.

Big Brother

Contribution le : 25/01/2005 11:33
_________________
Big Brother
Créer un fichier PDF de la contribution Imprimer


Re: problème de recup de date
Animateur WDF
Inscrit:
26/06/2002 16:24
De wdforge.org
Post(s): 2822
Bonjour, les dates WinDev sont au format suivant sous forme de chaine sur 10 positions : "AAAAMMJJ"
A vous, lors de votre export, d'interpréter ces 'colonnes' selon votre guise...
Je doute qu'en SQL vous puissiez interpréter le type des colonnes HyperFile (genre DESCRIBE...) mais je ne suis non plus un spécialiste en la matière...

PS : effectivement un petit retour illustré de votre utilisation de ADODb pour php avec HyperFile serait utile...

Contribution le : 25/01/2005 12:08
_________________
R&B
Contact, CV.
Créer un fichier PDF de la contribution Imprimer


Re: problème de recup de date
Stagiaire WDF
Inscrit:
06/01/2005 09:29
Post(s): 13
ok, voici le code :
 <?php
//initialisation des variables de connexion	
	$dsn="Gestmac";
	$user="";
	$pwd="";
	$nomdefichier = "..\gestmac\gestmac.txt";

//Connexion
if (!$cx=odbc_connect($dsn,$user,$pwd,SQL_CUR_USE_ODBC))
			{
			echo "Echec de la connexion ODBC";
			exit;
			}  else
				  {
				  echo "<p align=center class=Style59> La connexion ODBC à la source de données $dsn a été établie.</p>";
				  }	
//creation de la requete 
$req1="select caadresse,canumserie,caclasse,cavr,caics,camnemo,calogin,cadate from carte order by caadresse asc";
//$req2="select cadate from carte ";
//destruction d'un éventuel ancien fichier gestmac.txt       
if (file_exists ($nomdefichier)) //presence?
{
unlink ($nomdefichier); //destruction !
}
//initialisations stables 
$lf="\r\n"; 
$sep=";"; //séparateur

//création du fichier texte Gestmac.txt
$hdle=fopen($nomdefichier,'w');

//entete du fichier texte Gestmac.txt
$entete= "[Fichier d'Exportation GestMac]".$lf ; 
fputs ($hdle,$entete);

//exécution de la requête
$res=odbc_exec ($cx,$req1) or die("La requête n'a pas pu être exécutée. ".odbc_errormsg());
//$res=odbc_exec ($cx,$req2) or die("La requête n'a pas pu être exécutée. ".odbc_errormsg());
//compte du nombre de colonne 
$len=odbc_num_fields($res); 

//lecture de la première ligne de resultat
	while($ligne=odbc_fetch_row($res))
		{ 
//$out se vide à chaque nouvelle ligne 
$out=""; 
		for($i=1;$i<=$len;$i++) 
			{
	
	// ajout du ;1; en 7ème colonne ( 5ème séparateur ) correspondant au type "adresse MAC"
	if ($i == 7) $out .= "1".$sep;
	
	// ------- cette partie est destinée à créer le nombre d'espaces nécessaires. --------//
	
	/* //insérer le champ lu en enlevant les caractères en surplus
	$colonne = trim(odbc_result($res,$i)); 
	//calculer le nombre de blanc à remplir (taille définie du champ - taille réelle) 
	//odbc_field_len : retourne la taille définie par le schéma de la base 
	//strlen : mesure la taille selon la valeur contenue réellement dans le champ 
	$nbreBlancs = odbc_field_len($res,$i) - strlen($colonne); 
	$out=$out.$colonne.str_repeat(" ",$nbreBlancs-1).$sep; */
    
	// ---------------------------------------------------------------------------------- //
// incrémentation des données de la ligne sur la variable // ligne à enlever si utilisation du bloc précédent
$out= $out.odbc_result($res,$i).$sep; 
			}	 
//creation de la variable avec la ligne complete
$out2=substr($out,0,strlen($out)-1).$lf;// pour virer le dernier $sep 

//écrire la ligne en cours donc la variable qui a parcouru toute la ligne de resultat
fputs($hdle,$out2); 
		}
//fermeture du fichier
fclose($hdle);
odbc_free_result($res);

//fermeture de la connexion
odbc_close($cx);
?>


voila..donc cela marche très bien qd je convertis les dates en texte. Je vois pas comment transformer ces dates... toute commande directement dans la requete sql me génère des erreurs genre mot ( inattendu etc..
je précise qu'en effet les dates dans ma base sont au format date "float" sous 10 caractères.

Contribution le : 25/01/2005 13:00
_________________
Big Brother
Créer un fichier PDF de la contribution Imprimer


Re: problème de recup de date

Inscrit:
19/11/2002 12:20
Post(s): 390
J'ai crée un projet Windev 9 (je sais, Windev 9, mais bon) avec un fichier Options contenant les champs suivants:
Options.IDOptions
Options.champ_test
Options.champ_date
Options.champ_reel
Options.champ_entier
Options.champ_monetaire
Options.champ_interr
Options.champ_booleen

J'ai déclaré la source de données dans le gestionnaire ODBC de Windows et crée à partir du tien le script PHP suivant:
<html>
<head>
<title>Test ODBC / PHP + Windev</title>
</head>
<body>

<?php
//initialisation des variables de connexion	
//pour créer une connexion:
	//Panneau de config, outils admins, odbc
	//onglet source de données système
	//ajouter, hyperfile 7 (valable pour 8, 9...)
	//donner un nom, utilisé pour dns ensuite, puis path au wdd et path aux fics...

$dsn="test";	//nom de la source de données système
$user="";		//login de la connexion ODBC
$pwd="";		//password de la connexion ODBC


//Connexion à la base de donnée via ODBC
if (!$cx=odbc_connect($dsn,$user,$pwd,SQL_CUR_USE_ODBC))
{
	die("Echec de la connexion ODBC");
}
else
{
	echo("La connexion ODBC à la source de données ".$dsn." a été établie...");
}	

//creation de la requete
	//ici on a un fichier options avec les champs suivants:
		/*
		Options.IDOptions
		Options.champ_test
		Options.champ_date
		Options.champ_reel
		Options.champ_entier
		Options.champ_monetaire
		Options.champ_interr
		Options.champ_booleen
		*/

//on cherche à récupérer tous les champs dans la requête:
$query="select * from options order by champ_test asc";

//exécution de la requête:
$res=odbc_exec($cx,$query) or die("La requête n'a pas pu être exécutée: <br> ".odbc_errormsg());


//nombre de lignes de résultat retournées...
$nb_records=0;
$nb_records=odbc_num_rows($res);

if ($nb_records==0)
{
	die("Pas de résultat à votre requête...");
}


//on boucle sur les records récupérés, ligne par ligne...
while($ligne=odbc_fetch_array($res))
{
	//on affiche benoîtement les résultats :)
	echo("<br><br>");
	echo("Record N°: ".$ligne['IDOptions']."<br>");
	echo("champ_test= ".$ligne['champ_test']."<br>");
	echo("champ_date= ".$ligne['champ_date']."<br>");
	echo("champ_reel= ".$ligne['champ_reel']."<br>");
	echo("champ_entier= ".$ligne['champ_entier']."<br>");
	echo("champ_monetaire= ".$ligne['champ_monetaire']."<br>");
	echo("champ_interr= ".$ligne['champ_interr']."<br>");
	echo("champ_booleen= ".$ligne['champ_booleen']."<br>");
}

//on vidange la requête
odbc_free_result($res);

//fermeture de la connexion ODBC
odbc_close($cx);

//c'est fini ;)
die("That's all Folks ;)");
?>

</body>
</html>


Voici ce que j'obtiens (exactement les données de Windev que j'ai rentrées, à part les "-" pour les dates):
La connexion ODBC à la source de données test a été établie...

Record N°: 1
champ_test= test de champ texte
champ_date= 2005-02-12
champ_reel= 3.4
champ_entier= 4
champ_monetaire= 34.4434
champ_interr= 1
champ_booleen= 1


Record N°: 2
champ_test= test de champ texte 2
champ_date= 2004-12-01
champ_reel= 4.3
champ_entier= 8
champ_monetaire= 9.4
champ_interr= 0
champ_booleen= 0
That's all Folks ;)


Donc aucun soucis de mon côté apparemment...

Contribution le : 28/01/2005 13:33
Créer un fichier PDF de la contribution Imprimer


Re: problème de recup de date
Stagiaire WDF
Inscrit:
06/01/2005 09:29
Post(s): 13
Je comprends pas !!

Je fais la même chose que toi et pourtant...

ce qui me fait vraiment halluciner c'est que par exemple avec un result_all ces dates s'affichent dans un tableau html.
La différence vient peut etre du fait que tu utilises windev9 qui peut être gère beaucoup mieu les échanges de données avec hyperfile et odbc...
Je crois que je vais être obligé de traiter les dates à part en essayant de les formater..

Mais merci !

BB

Contribution le : 31/01/2005 10:19
_________________
Big Brother
Créer un fichier PDF de la contribution Imprimer


Re: problème de recup de date
Anonyme
Je sais pas :)

Sinon, blague à part, pourquoi tu n'essaierais pas Wdscript?
L'avantage de Wdscript c'est que tu peux accéder aux données hyperfile en lecture / écriture avec les commandes hyperfile "normales"...
tu peux les intégrer dans un fichier php ou un fichier HTML.
Le seul truc c'est que ça ne marche que sous windows, et qu'il faut déclarer wdscript comme php dans le serveur Apache (ou autre).

Contribution le : 31/01/2005 17:44
Créer un fichier PDF de la contribution Imprimer


Re: problème de recup de date
Anonyme
Je sais pas :)

Sinon, blague à part, pourquoi tu n'essaierais pas Wdscript?
L'avantage de Wdscript c'est que tu peux accéder aux données hyperfile en lecture / écriture avec les commandes hyperfile "normales"...
tu peux les intégrer dans un fichier php ou un fichier HTML.
Le seul truc c'est que ça ne marche que sous windows, et qu'il faut déclarer wdscript comme php dans le serveur Apache (ou autre).

Contribution le : 31/01/2005 17:46
Créer un fichier PDF de la contribution Imprimer


Re: problème de recup de date

Inscrit:
19/11/2002 12:20
Post(s): 390
Désolé, les deux messages précédents sont de moi...

Contribution le : 31/01/2005 17:47
Créer un fichier PDF de la contribution Imprimer



 Haut   Précédent   Suivant




Enregistrer votre réponse
CompteNom   Mot de passe   Authentification
Message:


Vous ne pouvez pas débuter de nouveaux sujets.
Vous pouvez voir les sujets.
Vous ne pouvez pas répondre aux contributions.
Vous ne pouvez pas éditer vos contributions.
Vous ne pouvez pas effacez vos contributions.
Vous ne pouvez pas ajouter de nouveaux sondages.
Vous ne pouvez pas voter en sondage.
Vous ne pouvez pas attacher des fichiers à vos contributions.
Vous ne pouvez pas poster sans approbation.

[Recherche avancée]


Connexion
Menu
Chercher WDForge
Chercher Web
Partenaires
Visualiser tous les Partenaires...
WinDev, WebDev, WinDev Mobile et HyperFile sont des marques déposées par PCSoft. |  Voter |  Legal |  Contact |   XOOPS 2.0.13.2