Pb lecture fichier *.sql pour auto install

curator68 Messages postés 27 Date d'inscription dimanche 9 mars 2003 Statut Membre Dernière intervention 2 septembre 2004 - 11 août 2004 à 20:28
cs_GRenard Messages postés 1662 Date d'inscription lundi 16 septembre 2002 Statut Membre Dernière intervention 30 juillet 2008 - 13 août 2004 à 03:10
Salut.

En fait, j'ai un petit probleme. j'aimerai automatisé l'installation du site que je suis entrain de faire. Et pour ça, j'ai créé un fichier table.sql avec toutes les créations de tables. Le seul problème, c'est comment est-ce que je fais piur executer le contenu de ce fichier a partir du page en PHP?? avec mysql_query, mais le probleme c que je n'arrive pas a executer mes requetes de creation, meme apres recuperation du contenu du fichier.
Alors? yaurai-t-il une façon de faire que je ne vois pas??

Merci d'avance
>:) Curator68 >:)
>>> http://www.pcwebmaker.com/

14 réponses

coockiesch Messages postés 2268 Date d'inscription mercredi 27 novembre 2002 Statut Membre Dernière intervention 13 septembre 2013 4
12 août 2004 à 00:07
Salut!
Je suppose que les requetes de créations tiennent sur plusieurs lignes.... Tu est sur que la variable que tu passe à mysql_query est bonnne?

@++

R@f

www.allpotes.ch: Photos, humour, vidéos, gags, ...

"On dit que seulement 10 personnes au monde comprenaient Einstein. Personne ne me comprends. Suis-je un génie???"
0
curator68 Messages postés 27 Date d'inscription dimanche 9 mars 2003 Statut Membre Dernière intervention 2 septembre 2004
12 août 2004 à 00:12
oui, mes requetes de creation tiennent sur plusieurs lignes (d'ailleurs je crée plusieurs tables, mais j'ai testé avec une seule), et je suis sûr de passer la bonne variable, puisque pour debuguer, j'affiche son contenu.

Merci si vous avez des exemples. ou carément la solution!! :)

>:) Curator68 >:)
>>> http://curator.free.fr
0
coockiesch Messages postés 2268 Date d'inscription mercredi 27 novembre 2002 Statut Membre Dernière intervention 13 septembre 2013 4
12 août 2004 à 00:53
Salut!
Tu peux faire:
mysql_query($query) or die(mysql_error())

Et nous donner l'erreur retournée ainsi que la valeur de $query...

@++

R@f

www.allpotes.ch: Photos, humour, vidéos, gags, ...

"On dit que seulement 10 personnes au monde comprenaient Einstein. Personne ne me comprends. Suis-je un génie???"
0
cs_GRenard Messages postés 1662 Date d'inscription lundi 16 septembre 2002 Statut Membre Dernière intervention 30 juillet 2008 1
12 août 2004 à 06:13
Si ton query n'accepte pas que tu lui passes multi-query, tu lis chaque ligne du fichier et tu execute ligne par ligne... c'est un exemple...

PHP Guru
Écoutez les conseils d'un vieux sage ! Ils sont souvent très utiles.
http://www.lookstrike.com
0

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

Posez votre question
cs_Varod Messages postés 15 Date d'inscription mercredi 31 décembre 2003 Statut Membre Dernière intervention 25 août 2004
12 août 2004 à 08:27
Je suis dacc ac GRenard, j'avais eu le mm genre de pb et je l'avais resolu de cette facon...
++
Vince.
0
curator68 Messages postés 27 Date d'inscription dimanche 9 mars 2003 Statut Membre Dernière intervention 2 septembre 2004
12 août 2004 à 09:26
Voila le contenu de mon fichier *.sql:

CREATE TABLE IF NOT EXISTS utilisateurs(
id_utilisateur INT UNSIGNED NOT NULL AUTO_INCREMENT,
login VARCHAR(20) NOT NULL,
password VARCHAR(32) NOT NULL,
user_type VARCHAR(30) NOT NULL,
email VARCHAR(40),
date_enreg DATE NOT NULL,
PRIMARY KEY(id_utilisateur)
);
CREATE TABLE IF NOT EXISTS editorial(
edito TEXT
);
CREATE TABLE IF NOT EXISTS nbvisiteurs(
compteur double DEFAULT '0' NOT NULL,
date date DEFAULT '0000-00-00' NOT NULL,
time int(9) NOT NULL default '0',
duree int(9) NOT NULL default '0',
ip varchar(50) NOT NULL,PRIMARY KEY (ip),
KEY compteur (compteur, date),
KEY ip (ip)
);

Ensuite, j'ai essayé ce que coockiesch m'a dit d'essayé.
Et l'erreur qui m'est renvoyée est celle-ci:

Something is wrong in your syntax près de '; CREATE TABLE IF NOT EXISTS editorial( edito TEXT ); CREATE TA' à la ligne 9

merci d'avance
>:) Curator68 >:)
>>> http://curator.free.fr
0
cs_Varod Messages postés 15 Date d'inscription mercredi 31 décembre 2003 Statut Membre Dernière intervention 25 août 2004
12 août 2004 à 09:58
Kan g d soucis du genre, j'essaie requete par requete dans phpmyadmin. Tu devrais essayer voir si ca fonctionne une par une. Je pense que si tu les separe ca devrait fonctionner :p
++
0
curator68 Messages postés 27 Date d'inscription dimanche 9 mars 2003 Statut Membre Dernière intervention 2 septembre 2004
12 août 2004 à 12:50
ben voila, dans phpmyadmin, j'ai éxécuté chaque requete de creation a part, ça marche nickel. Ensuite j'ai essayé toutes ensembles, cad comme dans mon fichier, ça marche aussi. Alors je sais pas. quand je recupere ce qu'il y a dans mon fichier en PHP et que j'utilise mysql_query, ça marche pas... peut-être un caractère de fin de fichier ou kkchose???
ou bien mysql_query ne permet peut-être pas d'executer plusieurs requetes de creation en meme temps??
Si c'est le cas, qu'est-ce que je dois utiliser??

>:) Curator68 >:)
>>> http://curator.free.fr
0
cs_Varod Messages postés 15 Date d'inscription mercredi 31 décembre 2003 Statut Membre Dernière intervention 25 août 2004
12 août 2004 à 13:13
Dans ton cas, je lirai le fichier caractere par caractere et a chaque fois qu'il y a un ";" je stocke la requete et l'execute. Sinon faudrait essayer de voir si c pas un soucis de "\r\n" <- saut de ligne Win et "\n" saut de ligne d'unix. Peut etre essaie en supprimant tous les retour a la ligne?

++

Vince.
0
cs_GRenard Messages postés 1662 Date d'inscription lundi 16 septembre 2002 Statut Membre Dernière intervention 30 juillet 2008 1
12 août 2004 à 15:55
D'apres php.net :

Note : La requête ne doit pas être terminée par un point-virgule.


Attention en regardant à chaque ;. Si c'est ton fichier tu es au courant de ce qu'il y a dedans, mais si par exemple tu as un insert qui fait ceci
INSERT INTO table VALUE(';');
bah ca va planter avec ta fonction qui vérifie tes ;...
Alors le conseil que je te donne..., c'est que tu mets la création de tes tables sur UNE ligne ;)

PHP Guru
Écoutez les conseils d'un vieux sage ! Ils sont souvent très utiles.
http://www.lookstrike.com
0
cs_Varod Messages postés 15 Date d'inscription mercredi 31 décembre 2003 Statut Membre Dernière intervention 25 août 2004
12 août 2004 à 17:10
C pas bete! Heureusement que j'insere pas d ";" souvent lol :o)

Pas bete ton idée de ligne ... J'pense que c la solution la + adaptée :)
++
Vince.
0
cs_GRenard Messages postés 1662 Date d'inscription lundi 16 septembre 2002 Statut Membre Dernière intervention 30 juillet 2008 1
12 août 2004 à 17:15
Perso, j'utilise ca :

function execute_query($sql,&$db){
$line = split(";",$sql);
for($i=0;$i<count($line);$i++)
$db->sql_query(trim($line[$i]));
}


$db->sql_query provient d'une belle classe que vous pouvez retrouver ici : http://www.phpcs.com/code.aspx?ID=24813

PHP Guru
Écoutez les conseils d'un vieux sage ! Ils sont souvent très utiles.
http://www.lookstrike.com
0
curator68 Messages postés 27 Date d'inscription dimanche 9 mars 2003 Statut Membre Dernière intervention 2 septembre 2004
13 août 2004 à 01:37
J'avais aussi deja essayé de les mettre sur une ligne. mais ça marchai pas non plus. j'aimerai bien ne pas utiliser de classe "exterieures" a celles de base.
Je suis sur que c'est un truc tout con... mais quoi??? :question)

>:) Curator >:)

http://www.pcwebmaker.com/
0
cs_GRenard Messages postés 1662 Date d'inscription lundi 16 septembre 2002 Statut Membre Dernière intervention 30 juillet 2008 1
13 août 2004 à 03:10
Bah ce que j'ai écrit est très bien..., si tu ne veux pas utiliser la classe tu n'as qu'à aller voir en fait ce qu'elle fait... (elle fait simplement un mysql_query() ! )

PHP Guru
Écoutez les conseils d'un vieux sage ! Ils sont souvent très utiles.
http://www.lookstrike.com
0
Rejoignez-nous