PDA

View Full Version : import de fichier txt vers bdd mysql


bargio
9 décembre 2003, 14h45
Salut à tous,

Je suis en train de mettre à jour un de mes sites de partitions de chansons de JJG... Sur la vieille version j'avais stocké les tablatures dans des fichiers txt.

Je cherche donc à faire l'import du contenu des fichiers txt dans ma bdd...

Mais ça coince et ça ne fonctionne pas... Apparemment c'est juste "l'update" qui ne fonctionne pas, vu que si je fais un echo $buffer avant l'update, j'ai bien ce que je cherche à avoir dans la variable... Si vous avez une idée...

Voici le code :



$query="select id, fichier from jjgtab_morceaux";
$succes = mysql_query($query,$db) or die("argh !!!");
while($a_row = mysql_fetch_array($succes)) {
$id = $a_row[id];
$fichier = $a_row[fichier];

$inF = fopen($fichier,"r");
while(!feof($inF))
{

$buffer=fgets($inF, 4096);
$buffer=addslashes($buffer);

$sql = "UPDATE jjgtab_morceaux SET tab='$buffer' where id=\"$id\"" ;
$succes2 = mysql_query($sql,$db) or die("argh !!!");

}

fclose($inF);

}


Merci beaucoup :)

Seb

fonji
9 décembre 2003, 16h08
Déjà à la place de faire argh dans tes or die(), fais plutot un mysql_error();
Ensuite, mets des \' à la place des ', php risque de ne pas interprêter ta variable.

bargio
9 décembre 2003, 16h17
Merci pour ta réponse !

J'ai testé les erreurs, et il n'y en a pas... Je n'ai pas mis ça dans le code, pour ne pas vous gonfler à le lire (parce que je sais que c'est pénible de se plonger dans le code de quelqu'un d'autre ;)

Le problème se situe au moment de l'update en fait...

Surtout que, je ne sais pas pourquoi, mais pour deux chansons sur les 116 il y a deux vers (au milieu de la chanson en plus) qui sont updatés... Donc, vraiment je ne comprends pas !!!

Seb

bargio
9 décembre 2003, 16h28
Bon, en fait, je crois que j'ai trouvé d'où vient le problème...

Je lis ligne après ligne et donc j'affiche ligne après ligne...

Si je fais ça :


while($a_row = mysql_fetch_array($succes)) {
$id = $a_row[id];
$fichier = $a_row[fichier];

$inF = fopen($fichier,"r");
while(!feof($inF))
{

$buffer=fgets($inF, 4096);

}

$buffer=addslashes($buffer);
echo $buffer;
echo test;


J'obtiens : "test" et c'est tout et donc $buffer est vide !!!

JE COMPRENDS PLUUUUUUUUUUUUUS !!!! :(

Seb

fonji
9 décembre 2003, 20h12
Euh déjà faut faire $buffer.=fgets($inF, 4096);
si ca marche toujours pas, essaye d'utiliser un fread() à la place d'un fgets(), théoriquement ca devrait à peu près rien changer, mais j'ai toujours utilisé fread() qui m'a toujours retourné tout le fichier...

Tu devrais aussi tester si ton fopen il marche très bien et avec ton fgets() pareil, du genre :
if(!$inF = fopen($fichier,"r") {
echo "Ya un blem";
}
et
if(!$buffer=fgets($inF, 4096)){
echo"autre blem";
}

bargio
9 décembre 2003, 20h16
Bon, j'ai bossé dessus toute l'après midi, mais en fait tu as raison, il y avait bel et bien un problème dans le fget, je ne choppais qu'une ligne à la fois et j'écrasais ce qu'il y avait avant... Le resultat me semblait vide, mais en fait c'était juste la dernière ligne...

Bon par contre j'ai une autre question...

Pour passer d'une page à l'autre j'utilise un index.php?album=$album

problème : lorsque le titre de l'album fait plus d'un mot. Pour l'instant je m'en sors avec un like $album% mais c'est pas top. Comment faire pour passer les espaces (en %20) dans l'url ?

Merci beaucoup Fonji !

Seb

fonji
9 décembre 2003, 20h20
Bon, j'ai bossé dessus toute l'après midi, mais en fait tu as raison, il y avait bel et bien un problème dans le fget, je ne choppais qu'une ligne à la fois et j'écrasais ce qu'il y avait avant... Le resultat me semblait vide, mais en fait c'était juste la dernière ligne...


Ca c'est le petit "." qu'on oublie quand c'est pas le ";", et c'est plus |¢§°¬§°# pask y a pas d'erreur ;)

Bon par contre j'ai une autre question...

Pour passer d'une page à l'autre j'utilise un index.php?album=$album

problème : lorsque le titre de l'album fait plus d'un mot. Pour l'instant je m'en sors avec un like $album% mais c'est pas top. Comment faire pour passer les espaces (en %20) dans l'url ?


euh... y a une super fonction hypergéniale qui s'appelle urlencode($string);


Merci beaucoup Fonji !

Seb

Y a pas de quoi, mais pour moi c'est l'inverse de LeMoi, y a pas de majuscule stp ;)

bargio
9 décembre 2003, 20h44
Ca c'est le petit "." qu'on oublie quand c'est pas le ";", et c'est plus |¢§°¬§°# pask y a pas d'erreur ;)
Oh oui !!!


euh... y a une super fonction hypergéniale qui s'appelle urlencode($string);
Oui, mais en fait si j'ai :

$album=Non Homologué

a href... index.php3?album=$album

Dans l'url de la page suivante j'ai index.php3?album=Non

Et j'aimerai avoir un truc du style index.php3?album=Non%20Homologué


Y a pas de quoi, mais pour moi c'est l'inverse de LeMoi, y a pas de majuscule stp ;)
Ah oui ;) Pardon :) Je suis d'autant plus désolé, que je refuse, comme toi la majuscule à bargio ;)

Seb

LeMoi
9 décembre 2003, 21h17
Y a pas de quoi, mais pour moi c'est l'inverse de LeMoi, y a pas de majuscule stp ;)lol, je savais pas que c'était aussi important pour d'autres personnes :p:D

fonji
10 décembre 2003, 12h04
lol, je savais pas que c'était aussi important pour d'autres personnes :p:D
y a pour stan aussi que c'est important ;)

Sinon bargio ce qu'il te faut faire c'est :
$album=urlencode("Non homologué");
et tu vas te retrouver avec Non%20homologu&Emachin dans $album.... C'est exactement ce qu'il te faut !

Ou alors tu fais
$album = "non homologué";
$album = urlencode($album);

Et après ca joue...

bargio
10 décembre 2003, 13h36
Merci fonji ;)

Mais finalement je me suis débrouillé autrement, j'ai fait une table de liaison et j'ai collé un numéro à chaque album. Et je me sers de ce numéro du coup. C'est plus propre... :)

Seb

fonji
10 décembre 2003, 17h39
Merci fonji ;)

Mais finalement je me suis débrouillé autrement, j'ai fait une table de liaison et j'ai collé un numéro à chaque album. Et je me sers de ce numéro du coup. C'est plus propre... :)

Seb
Yapadkouaw :)

Effectivement c'est nettement plus mieux, mais le jour ou tu seras obligé de transformer un string pour le passer par l'url ben tu sauras quelle fonction utiliser ;)

bargio
10 décembre 2003, 18h22
Yep ! Merci encore !


Seb