Bonjours,
Je voudrais inserer des données provenant d'un fichier TXT dans une base de donnée MySQL a traver un formulaire que j'ai crée qui contient un champ de type FILE.
Merci
http://retrouvetout.com/recette/index.php[/url]
Version imprimable
Bonjours,
Je voudrais inserer des données provenant d'un fichier TXT dans une base de donnée MySQL a traver un formulaire que j'ai crée qui contient un champ de type FILE.
Merci
http://retrouvetout.com/recette/index.php[/url]
De rien!
C'est gentil de nous informer de tes intentions.
faudrait que tu dise ton problème... sinon ca va être difficile de répondre...Citation:
Envoyé par agencep
Il y a un truc qui ne marche pas :
ps -> stopée s'écrit stoppée.Citation:
test.txtFichier introuvable !
Importation stopée.
En gros tu veux insérer le contenu du fichier dans un champs ?
Avec file_get_contents peut-être ?
http://fr.php.net/manual/fr/function.file-get-contents.php
ce serait meilleur si tu nous donnais plus d'indication sur le sujet!!
Oui en quelque sorte,
le fichier texte est composé champs séparer par des ;
voici un bout de code que j'ai crée:
en sachant que userfile est le champ parcourir.[/b]Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 $fp=fopen("$userfile","r"); while (!feof($fp)) { $ligne=fgets($fp,4096); $liste=explode(";",$ligne); $id=$liste[0]; $title=$liste[1]; $info=$liste[2]; $title=addslashes($title); $info=addslashes($info); $query="INSERT INTO `recette` VALUES('','$title','$info')"; $result=mysql_query($query)or die (mysql_error()); print '<h2>Importation terminée, avec succès.</h2>'; fclose($fp); } mysql_close();
ça marche mais quand le fichier existe déjà est sur le serveur
Mais il n'y aurait plus aucun suspens !!! 8)Citation:
Envoyé par ouatmad
c'est vrai que c'est sympa de deviner les problèmes de gens et d'élaborer une réponse a partir d'aucun élément :lol:
Un genre de reverse engineering ?
oki je :arrow:
Dans ton cas il faut que tu upload ton fichier avant non ?
Voir l'enctype de ton formulaire et la superglobale $_FILES.
?? ca se mange ??Citation:
Envoyé par macbook
@macbook: tu te moque de moi :lol:Citation:
Envoyé par macbook
au fait dit tu voudrai q le script puisse marché meme si le fichier n'existe pas?? :?:
non mais j'ai un formlaire qui sert a uploder le script
mon fichier txt est composé comme sui:
id;titre;description;
ca correspand au champ de la BDD
vous pouvez voir actuellement sur le site c'est quoi l'erreur qu'il fait si il n'y a pas de fichier sur le serveur. et biensûr quand j'utilise le formulaire pour l'upload. ca ne marche pas.
http://retrouvetout.com/recette
qu'est ce que vous volais dire par superglobal $_FILES ??Citation:
Envoyé par macbook
Tu peux nous mettre le code de http://retrouvetout.com/recette/scr.php car j'ai l'impression que tu tombe dans une boucle infinie.
infinie je sais pas mais moi j'ai 3 lignes d'erreur écrites un millier de fois... les boucles infinies en général ca fait plutôt une erreur request timeout...
le code ca pourrait nous aider oui.
sinon si j'ai compris tu veux uploader un fichier texte, et ton script doit le convertir en un enregistrement mysql ?
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 <? #LECTURE ET AJOUT DES DONNEES include ('config.inc.php'); #ON VERIFIE SI LE FICHIER EXIST SUR LE SERVEUR if (file_exists($userfile)) { $fp=fopen("$userfile","r"); while (!feof($fp)) { $ligne=fgets($fp,4096); $liste=explode(";",$ligne); $id=$liste[0]; $title=$liste[1]; $info=$liste[2]; $title=addslashes($title); $info=addslashes($info); $query="INSERT INTO `recette` VALUES('','$title','$info')"; $result=mysql_query($query)or die (mysql_error()); print '<h2>Importation terminée, avec succès.</h2>'; fclose($fp); } mysql_close(); exit(); } else { #ON UPLOAD LE FICHIER $split = explode(".", $userfile_name); $largefile = "$userfile_name"; move_uploaded_file($_FILES['userfile']['tmp_name'], './'.$largefile); exit(); } ?>
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 <? #LECTURE ET AJOUT DES DONNEES include ('config.inc.php'); #ON VERIFIE SI LE FICHIER EXIST SUR LE SERVEUR if (file_exists($userfile)) { $fp=fopen("$userfile","r"); while (!feof($fp)) { $ligne=fgets($fp,4096); $liste=explode(";",$ligne); $id=$liste[0]; $title=$liste[1]; $info=$liste[2]; $title=addslashes($title); $info=addslashes($info); $query="INSERT INTO `recette` VALUES('','$title','$info')"; $result=mysql_query($query)or die (mysql_error()); print '<h2>Importation terminée, avec succès.</h2>'; fclose($fp); } mysql_close(); exit(); } else { #ON UPLOAD LE FICHIER $split = explode(".", $userfile_name); $largefile = "$userfile_name"; move_uploaded_file($_FILES['userfile']['tmp_name'], './'.$largefile); exit(); } ?>
<?Citation:
Envoyé par Gimmly
#LECTURE ET AJOUT DES DONNEES
include ('config.inc.php');
#ON VERIFIE SI LE FICHIER EXIST SUR LE SERVEUR
if (file_exists($userfile))
{
$fp=fopen("$userfile","r");
while (!feof($fp))
{
$ligne=fgets($fp,4096);
$liste=explode(";",$ligne);
$id=$liste[0];
$title=$liste[1];
$info=$liste[2];
$title=addslashes($title);
$info=addslashes($info);
$query="INSERT INTO `recette` VALUES('','$title','$info')";
$result=mysql_query($query)or die (mysql_error());
print '<h2>Importation terminée, avec succès.</h2>';
fclose($fp);
}
mysql_close();
exit();
}
else
{
#ON UPLOAD LE FICHIER
$split = explode(".", $userfile_name);
$largefile = "$userfile_name";
move_uploaded_file($_FILES['userfile']['tmp_name'], './'.$largefile);
exit();
}
?>
1. tu es conscient que l'id du fichier texte ne sert à rien puisque tu ne l'uilise pas ?
2. une fonction doit avoir ses parenthèses a coté d'elle pas séparé d'un espace .... ton die (mysql_error()); risque de merder.
3. tu peux m'expliquer quesqu'il renvoie comme erreur ??
Il y a beaucoup de chose à revoir là !
Déjà le $userfile sort d'où ?
Sort le
de ta boucle sinon tu ferme le fichier à chaque itération !!!Code:
1
2 print '<h2>Importation terminée, avec succès.</h2>'; fclose($fp);
Que deviens $split ?Code:$split = explode(".", $userfile_name);
Les guillemets sont inutiles et je suppose que tu parles de$_FILES['userfile']['name'] ???Code:$largefile = "$userfile_name";
a premiere vue:Citation:
Envoyé par Gimmly
1 - le fichier que je veux uploder ne se fait pas
2 - Erreur:
En boucle biensurCitation:
Importation terminée, avec succès.
Warning: feof(): 3 is not a valid stream resource in d:\www\retrouvetout.com\htdocs\recette\scr.php on line 8
Warning: fgets(): 3 is not a valid stream resource in d:\www\retrouvetout.com\htdocs\recette\scr.php on line 10
$userfile c'est le champ FILE FILED dans le formulaire qui sert à selection le fichier à uploder.Citation:
Envoyé par macbook
soit la fonction feof ou fgets n'existe pas, peu probable...
soit $userfile n'existe pas, ce qui a l'air d'être le cas.
fait echo $userfile, et dis moi si il affiche qq chose.
Voici le code de mon formulaire d'upload:
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 <link href="style.css" rel="stylesheet" type="text/css"> <form method="post" action=scr.php enctype="multipart/form-data"> <table width="110" border="1" align="center"> <tr> <td colspan="2">Importation</td> </tr> <tr> <td>Fichier:</td> <td><input name="userfile" type="file" id="userfile"></td> </tr> <tr> <td> </td> <td><input type="submit" name="Submit" value="ET HOP!"> </tr> </table> </form>
Déjà il faudrait uploader AVANT de faire un test sur l'existence du fichier non ?
au faites, dans mon script:
Je teste l'existance du fichier
si oui, j'execute la fontion d'insertion,
si non, j'upload le fichier.
Basiquement pour uploader :
Citation:
<?php
    if ( isset ( $_FILES['userfile']['name'] ) && is_array ( $_FILES ) && $_FILES['userfile']['error'] == 0 ) 
    { 
        if ( !empty ( $_FILES['userfile']['tmp_name'] ) )
        {
            if ( move_uploaded_file ( $_FILES['userfile']['tmp_name'] , './' . $_FILES['image_']['name'] ) )
            {
            echo '<h2>Upload terminé, avec succès.</h2>' ;
            }
        }
    }
?>
Phpsyntaxcolor powered by decabodi
mon echo me renvoie:Citation:
Envoyé par Gimmly
Citation:
d:\www\php\htdocs\tmp\php13AA.tmp
au lieu de $userfile, si tu utilisais un $_FILE['userfile'] ca ne marcherait pas meiux ? :wink:
je vais ré-ecrire mon script
et je le remet en ligne
mais comment faire pour verifié l'existance du fichier selectioné sur le serveur ??
Bonne idée. On attends.Citation:
Envoyé par agencep
je suis pas expert en fichiers mais si tu utilise une variable qui n'existe pas, a mon avis c'est normal que ca merde un tantinet...
ok maintenant la partie UPLOAD fonctionne
passons à la partie INERTION
:cry: bon c'est déjà ca...
quel est le nouveau problème ?
voila mon nouveau script il manque seulement la partie INSERTION
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 <? # LECTURE ET AJOUT DES DONNEES include ('config.inc.php'); # ON VERIFIE SI LE FICHIER EXIST SUR LE SERVEUR if ( isset ( $_FILES['userfile']['name'] ) && is_array ( $_FILES ) && $_FILES['userfile']['error'] == 0 ) { if ( !empty ( $_FILES['userfile']['tmp_name'] ) ) { if ( move_uploaded_file ( $_FILES['userfile']['tmp_name'] , './' . $_FILES['userfile']['name'] ) ) { echo '<h2>Upload terminé, avec succès.</h2>' ; } } } else { print 'procédure d\'insertion'; } ?>
pour insérer les données du fichier tu l'ouvre avec fopen('chemin du fichier','r')
ensuite tu lis le fichier, tu explode les ;
mais tout ca tu l'as fait dans ton script au dessus, quesqui ne marche pas ?
donc normalement je continue avec ELSE { ma procèdure }Citation:
Envoyé par Gimmly
c'est ça ??
Oui. C'est un fichier CSV c'est ça ?
un fichier texte je crois :lol: