Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD
PHP & SGBD Forum d'entraide sur les SGBD avec PHP. Avant de poster : FAQ BDD, toutes les FAQ PHP, cours BDD et sources BDD
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 07/11/2006, 18h05   #1
Membre à l'essai
 
Inscription : février 2006
Messages : 145
Détails du profil
Informations forums :
Inscription : février 2006
Messages : 145
Points : 24
Points : 24
Par défaut [SQLLite] Lecture des données dans un fichier .db

Bonjour,

Dans le cadre d'un projet, je dois, en PHP5, lire un fichier .db qui contient une base de données SQLITE. Ce fichier, que je nomme ici toto.db, a est initialement géré sous WinCE; et on me l'envoie sous forme brute. J'ai déjà une base MySQL5, dans laquelle j'ai créé les mêmes tables que celles de la base SQLITE et je dois maintenant remplir ma base MySQL à partir des données SQLITE.

Le pb, c'est que sous WAMP 1.6.3, SQLITE Manager n'arrive pas à lire le fichier toto.db...probablement parce qu'il a été généré sous WinCE. Du coup, je sais pas comment commencer, quel outil utiliser pour manipuler mon toto.db et en extraire ses données.

Voilà, si vous pouvez m'aider, ben ça serait hyper cool!

En plus, quand j'ouvre le toto.db avec le blocnotes, c'est une sorte de mélange de SQL et d'HTML...assez incompréhensible...pour moi du moins.

Merci de votre aide.
PedroBD est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/11/2006, 14h44   #2
Membre du Club
 
Inscription : juillet 2003
Messages : 41
Détails du profil
Informations forums :
Inscription : juillet 2003
Messages : 41
Points : 45
Points : 45
Bonjour,
Tout simple doc php.net
Code :
1
2
3
4
5
6
7
8
9
 
<?php
if ($db = sqlite_open('toto.db', 0666, $sqliteerror)) {
  $result = sqlite_query($db,'select * from nom.table');
  var_dump(sqlite_fetch_array($result));
} else {
  die ($sqliteerror);
}
?>
Tu devrais avoir ce qu'il faut comme ça.
Sinon, vérifie les versions de Sqlite que tu as installé partout.
davidbo5 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/11/2006, 08h32   #3
Membre à l'essai
 
Inscription : février 2006
Messages : 145
Détails du profil
Informations forums :
Inscription : février 2006
Messages : 145
Points : 24
Points : 24
Citation:
Envoyé par davidbo5
Bonjour,
Tout simple doc php.net
Code :
1
2
3
4
5
6
7
8
9
 
<?php
if ($db = sqlite_open('toto.db', 0666, $sqliteerror)) {
  $result = sqlite_query($db,'select * from nom.table');
  var_dump(sqlite_fetch_array($result));
} else {
  die ($sqliteerror);
}
?>
Tu devrais avoir ce qu'il faut comme ça.
Sinon, vérifie les versions de Sqlite que tu as installé partout.
Merci de ta réponse.

Il doit être sauvé où sur le disque le fichier toto.db?

Ca correpond à quoi le "nom" de "nom.table"?

Mon fichier db et SQLITE de wamp sont tous les deux en version 3 sinon.
PedroBD est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/11/2006, 09h24   #4
Membre du Club
 
Inscription : juillet 2003
Messages : 41
Détails du profil
Informations forums :
Inscription : juillet 2003
Messages : 41
Points : 45
Points : 45
Citation:
Envoyé par PedroBD
Merci de ta réponse.

Il doit être sauvé où sur le disque le fichier toto.db?
A l'endroit ou stocké ton fichier .php
Citation:
Envoyé par PedroBD
Ca correpond à quoi le "nom" de "nom.table"?
Au nom de la table que tu veux voir.
Citation:
Envoyé par PedroBD
Mon fichier db et SQLITE de wamp sont tous les deux en version 3 sinon.
Et la version WinCE, c'est laquelle ?

Cordialement,
David
davidbo5 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/11/2006, 10h56   #5
Membre à l'essai
 
Inscription : février 2006
Messages : 145
Détails du profil
Informations forums :
Inscription : février 2006
Messages : 145
Points : 24
Points : 24
Citation:
Envoyé par davidbo5
A l'endroit ou stocké ton fichier .php

Au nom de la table que tu veux voir.

Et la version WinCE, c'est laquelle ?

Cordialement,
David
Merci de ta réponse.

C'est la version 5.0 de WinCE.

Autre chose, quand je veux immporter ma base depuis SQLITEmanager, ça plante en m'affichant simplement le rectangle TABLE vide. Et quand je me mets en mode debug, j'ai l'erreur:

Code :
Fatal error: Call to a member function fetchColumn() on a non-object in C:\Program Files\wamp\sqlitemanager\include\sqlite3.class.php on line 140
Voilà, je sais pas quoi faire, je sais que je peux lire mon fichier db avec un utilitaire DOS, mais pas en php...une idée?
PedroBD est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/11/2006, 11h01   #6
Membre du Club
 
Inscription : juillet 2003
Messages : 41
Détails du profil
Informations forums :
Inscription : juillet 2003
Messages : 41
Points : 45
Points : 45
As tu essayé le petit bout de code que je t'ai donné ?

Et dis moi ce qu'il te raconte.

Cordialement.
davidbo5 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/11/2006, 11h19   #7
Membre à l'essai
 
Inscription : février 2006
Messages : 145
Détails du profil
Informations forums :
Inscription : février 2006
Messages : 145
Points : 24
Points : 24
Citation:
Envoyé par davidbo5
As tu essayé le petit bout de code que je t'ai donné ?

Et dis moi ce qu'il te raconte.

Cordialement.
Oui, je l'ai essayé. J'ai une petite interface d'importation de fichier en php.

Voici mon code de lecture du fichier sélectionné:

Code :
1
2
3
4
5
6
7
8
9
10
<?php
if($db = sqlite_open($_FILES["fichier"]["name"], 0666, $messageerreur)) {
 
$result = sqlite_query($db,'select * from nom.table');
  var_dump(sqlite_fetch_array($result));
 
} else {
  die ($messageerreur);
}
?>
Que je mette $_FILES["fichier"]["name"] ou 'toto.db', j'ai toujours le message

NULL à l'écran. Je me suis mis en mode debug et j'ai pas de message d'erreur.

Par contre sous SQLITE manager, quand j'importe la base, j'ai le message décrit dans mon post précédent.
PedroBD est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/11/2006, 11h36   #8
Membre du Club
 
Inscription : juillet 2003
Messages : 41
Détails du profil
Informations forums :
Inscription : juillet 2003
Messages : 41
Points : 45
Points : 45
Citation:
Envoyé par PedroBD
Oui, je l'ai essayé. J'ai une petite interface d'importation de fichier en php.

Voici mon code de lecture du fichier sélectionné:

Code :
1
2
3
4
5
6
7
8
9
10
<?php
if($db = sqlite_open($_FILES["fichier"]["name"], 0666, $messageerreur)) {
 
$result = sqlite_query($db,'select * from nom.table');
  var_dump(sqlite_fetch_array($result));
 
} else {
  die ($messageerreur);
}
?>
Je vois que tu n'as pas changé nom.table par le nom de ta table que tu veux importer.
Connais-tu la structure de ta table ?

Je te redonne le code complet mais tu le changes par tes propres valeurs ou tu essayes celui-là
Code :
1
2
3
4
5
6
7
8
9
10
<?php
if ($db = sqlite_open('tata.db', 0666, $sqliteerror)) {
    sqlite_query($db,'CREATE TABLE foo (bar varchar(10))');
    sqlite_query($db,"INSERT INTO foo VALUES ('fnord')");
    $result = sqlite_query($db,'select bar from foo');
    var_dump(sqlite_fetch_array($result));
} else {
    die ($sqliteerror);
}
?>
Cordialement
davidbo5 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/11/2006, 12h12   #9
Membre à l'essai
 
Inscription : février 2006
Messages : 145
Détails du profil
Informations forums :
Inscription : février 2006
Messages : 145
Points : 24
Points : 24
Citation:
Envoyé par davidbo5
Je vois que tu n'as pas changé nom.table par le nom de ta table que tu veux importer.
Connais-tu la structure de ta table ?

Je te redonne le code complet mais tu le changes par tes propres valeurs ou tu essayes celui-là
Code :
1
2
3
4
5
6
7
8
9
10
<?php
if ($db = sqlite_open('tata.db', 0666, $sqliteerror)) {
    sqlite_query($db,'CREATE TABLE foo (bar varchar(10))');
    sqlite_query($db,"INSERT INTO foo VALUES ('fnord')");
    $result = sqlite_query($db,'select bar from foo');
    var_dump(sqlite_fetch_array($result));
} else {
    die ($sqliteerror);
}
?>
Cordialement
Merci bcp de ton aide. J'avais déjà essayé avant de remplacer "nom.table" par la "Tests", une des tables de ma base que je désire importer. Le message est le même, toujours "NULL"
PedroBD est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/11/2006, 12h21   #10
Membre à l'essai
 
Inscription : février 2006
Messages : 145
Détails du profil
Informations forums :
Inscription : février 2006
Messages : 145
Points : 24
Points : 24
Citation:
Envoyé par PedroBD
Merci bcp de ton aide. J'avais déjà essayé avant de remplacer "nom.table" par la "Tests", une des tables de ma base que je désire importer. Le message est le même, toujours "NULL"
Par contre, ton code marche très bien, voici ce que j'obtiens:

Code :
array(2) { [0]=> string(5) "fnord" ["bar"]=> string(5) "fnord" }
Ce doit être mon fichier .db qui est incompatible, non?

C'est quand même bizarre que j'arrive à accéder aux données sous DOS avec le prog Sqlite.exe (version 3.3.8)
PedroBD est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/11/2006, 12h54   #11
Membre du Club
 
Inscription : juillet 2003
Messages : 41
Détails du profil
Informations forums :
Inscription : juillet 2003
Messages : 41
Points : 45
Points : 45
Citation:
Envoyé par PedroBD

Ce doit être mon fichier .db qui est incompatible, non?

C'est quand même bizarre que j'arrive à accéder aux données sous DOS avec le prog Sqlite.exe (version 3.3.8)
Est-ce que phpinfo(); dans la section Sqlite parle bien de la version 3 ? Et non de la 2.8 comme en standard
Sinon tu faire ça en command dos :
echo '.dump' | sqlite toto.db | gzip -c >toto.dump.gz
ou
echo '.dump' | sqlite toto.db >toto.sql

pour ne pas le récupérer compressé.

Tu auras comme ça toute la structure de la table en format SQL

Cordialement
davidbo5 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/11/2006, 13h35   #12
Membre à l'essai
 
Inscription : février 2006
Messages : 145
Détails du profil
Informations forums :
Inscription : février 2006
Messages : 145
Points : 24
Points : 24
Citation:
Envoyé par davidbo5
Est-ce que phpinfo(); dans la section Sqlite parle bien de la version 3 ? Et non de la 2.8 comme en standard
Sinon tu faire ça en command dos :
echo '.dump' | sqlite toto.db | gzip -c >toto.dump.gz
ou
echo '.dump' | sqlite toto.db >toto.sql

pour ne pas le récupérer compressé.

Tu auras comme ça toute la structure de la table en format SQL

Cordialement
Voilà ce que me marque phpinfo() dans SQLITE:

SQLite version 2.8.17 - 3.2.8undefined / PHP version 5.1.6

Ca veut dire que j'ai la version 3, non?

Comment me la procurer sinon?
PedroBD est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/11/2006, 13h35   #13
Membre à l'essai
 
Inscription : février 2006
Messages : 145
Détails du profil
Informations forums :
Inscription : février 2006
Messages : 145
Points : 24
Points : 24
Citation:
Envoyé par PedroBD
Voilà ce que me marque phpinfo() dans SQLITE:

SQLite version 2.8.17 - 3.2.8undefined / PHP version 5.1.6

Ca veut dire que j'ai la version 3, non?

Comment me la procurer sinon?
Et comment l'installer aussi, vu que j'utilise la dernière version de WAMP
PedroBD est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/11/2006, 14h00   #14
Membre du Club
 
Inscription : juillet 2003
Messages : 41
Détails du profil
Informations forums :
Inscription : juillet 2003
Messages : 41
Points : 45
Points : 45
Citation:
Envoyé par PedroBD
Et comment l'installer aussi, vu que j'utilise la dernière version de WAMP
* in php.ini:

add (or update) the following line in php.ini:

extensions = sqlite3.dll

il faut la dll sqlite3.dll aussi dans le répertoire php/extensions/

Tu as ceci dans ton php.ini.

sinon le dump ne te suffit pas pour extraire tes données et les renvoyer dans phpmyadmin?
davidbo5 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/11/2006, 09h44   #15
Membre à l'essai
 
Inscription : février 2006
Messages : 145
Détails du profil
Informations forums :
Inscription : février 2006
Messages : 145
Points : 24
Points : 24
Citation:
Envoyé par davidbo5
* in php.ini:

add (or update) the following line in php.ini:

extensions = sqlite3.dll

il faut la dll sqlite3.dll aussi dans le répertoire php/extensions/

Tu as ceci dans ton php.ini.

sinon le dump ne te suffit pas pour extraire tes données et les renvoyer dans phpmyadmin?
Bon j'ai récupéré la dll php_sqlite3.dll. Je l'ai installée depuis le php.ini et j'ai redémarré wamp. le dump me renvoie toujours null quand je veux lire le fichier .db à l'aide d'une petite interface de lecture d'un fichier sur le disque dur. Où dois-je stocker mon fichier dans wamp pour pouvoir le lire en tapant:

Code :
sqlite_open('Base_sqlite.db', 0666, $sqliteerror)
P.S: "Où" = dans quel répertoire.
PedroBD est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/11/2006, 10h01   #16
Membre à l'essai
 
Inscription : février 2006
Messages : 145
Détails du profil
Informations forums :
Inscription : février 2006
Messages : 145
Points : 24
Points : 24
Citation:
Envoyé par PedroBD
Bon j'ai récupéré la dll php_sqlite3.dll. Je l'ai installée depuis le php.ini et j'ai redémarré wamp. le dump me renvoie toujours null quand je veux lire le fichier .db à l'aide d'une petite interface de lecture d'un fichier sur le disque dur. Où dois-je stocker mon fichier dans wamp pour pouvoir le lire en tapant:

Code :
sqlite_open('Base_sqlite.db', 0666, $sqliteerror)
P.S: "Où" = dans quel répertoire.
Y a du mieux maintenant, quand je lis le fichier que j'importe depuis mon interface, j'ai le message "File is encrypted or not a database"

Bon, c'est pas encore ça, mais ça s'approche. Vous pourriez m'aider à lire le fichier? Merci
PedroBD est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/11/2006, 10h03   #17
Membre du Club
 
Inscription : juillet 2003
Messages : 41
Détails du profil
Informations forums :
Inscription : juillet 2003
Messages : 41
Points : 45
Points : 45
Citation:
Envoyé par PedroBD
Bon j'ai récupéré la dll php_sqlite3.dll. Je l'ai installée depuis le php.ini et j'ai redémarré wamp. le dump me renvoie toujours null quand je veux lire le fichier .db à l'aide d'une petite interface de lecture d'un fichier sur le disque dur. Où dois-je stocker mon fichier dans wamp pour pouvoir le lire en tapant:

Code :
sqlite_open('Base_sqlite.db', 0666, $sqliteerror)
P.S: "Où" = dans quel répertoire.
php_sqlite3.dll, tu l'as bien renommé sqlite3.dll car c'est le nom que tu as mis dans ton php.ini

Tu dois placer ton fichier Base_sqlite.db à la racine www ou htdocs
davidbo5 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/11/2006, 10h18   #18
Membre à l'essai
 
Inscription : février 2006
Messages : 145
Détails du profil
Informations forums :
Inscription : février 2006
Messages : 145
Points : 24
Points : 24
Citation:
Envoyé par davidbo5
php_sqlite3.dll, tu l'as bien renommé sqlite3.dll car c'est le nom que tu as mis dans ton php.ini

Tu dois placer ton fichier Base_sqlite.db à la racine www ou htdocs
Merci de ta réponse. Voici un extrait de mon php. ini:

Code :
1
2
3
4
5
6
7
8
9
10
11
extension=php_pdo_sqlite.dll
;extension=php_pdo_firebird.dll
;extension=php_pdo_mssql.dll
;extension=php_pdo_mysql.dll
extension=php_pdo_oci.dll
;extension=php_pdo_oci8.dll
;extension=php_pdo_odbc.dll
;extension=php_pdo_pgsql.dll
extension=php_sqlite.dll
extension=php_sqlite3.dll
extension=sqlite3.dll
Il s'agit des 11 dernières lignes. Je suis allé chercher les fichiers php_sqlite3.dll et sqlite3.dll sur le net et je les ai copiés dans le php/ext de wamp. Quand j'ouvre mon fichier et que je veux le lire avec dump j'ai maintenant le message:

"File is encrypted or not a database"
PedroBD est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/11/2006, 10h25   #19
Membre du Club
 
Inscription : juillet 2003
Messages : 41
Détails du profil
Informations forums :
Inscription : juillet 2003
Messages : 41
Points : 45
Points : 45
Citation:
Envoyé par PedroBD
Merci de ta réponse. Voici un extrait de mon php. ini:
De rien, tu essayes d'y arriver aussi de ton côté.

Code :
1
2
3
4
 
;extension=php_sqlite.dll
;extension=php_sqlite3.dll
extension=sqlite3.dll
Essayes comme ça, n'oublie de relance apache après les modifications.

Et vérifie ton phpinfo();
davidbo5 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/11/2006, 10h36   #20
Membre à l'essai
 
Inscription : février 2006
Messages : 145
Détails du profil
Informations forums :
Inscription : février 2006
Messages : 145
Points : 24
Points : 24
Citation:
Envoyé par davidbo5
De rien, tu essayes d'y arriver aussi de ton côté.

Code :
1
2
3
4
 
;extension=php_sqlite.dll
;extension=php_sqlite3.dll
extension=sqlite3.dll
Essayes comme ça, n'oublie de relance apache après les modifications.

Et vérifie ton phpinfo();
Ok, ya du mieux et du...disons moins mieux!

Le mieux c'est que maintenant j'ai la version 3.2.8 de SQLITE dans le phpinfo() de sqlitemanager. Le moins mieux c'est que php me renvoie l'erreur:

Citation:
Fatal error: Call to undefined function sqlite_open() in C:\Program Files\wamp\www\gma\connexion_sqlite.php on line 5
En gros, il reconnait plus la fonction sqlite_open()

Je vais essayer en activant en plus php_sqlite.dll

Peut-être que j'ai pas le bon sqlite3.dll?
PedroBD 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 14h47.


 
 
 
 
Partenaires

Hébergement Web