Bonjour,
n'ayant pas tous les droits chez mon hébergeur pour envoyer un fichier facilement qui mettra à jour une base de données j'avais opté pour une commande pour contourner le problème.
formulaire d'envoi de fichier qui est donc uploadé dans un dossier. puis le fichier est décortiqué et met à jour la table.
le hic j'ai 2 formulaires d'envoi de fichiers différents dans la même page web. autant le 1er fonctionne correctement (le fichier est bien envoyé dans le dossier) et la BDD est mise à jour.
pour le 2ème formulaire (j'ai fait un copié collé de l'ensemble du code en modifiant le nom des variables (avec un 2 en plus) et les champs de formulaire)
>> le fichier ne s'uploade pas et je n'ai pas de message d'erreur.
en collant via le ftp le fichier dans le dossier, il est bien décortiqué et la BDD bien écrite (hormis le fait qu'il me rajoute une ligne 0 à l'affichage du tableau dans la page web ou je l'affiche) mais c'est gênant mais pas très grave...
je vous mets le code complet ci-dessous je ne vois pas où j'ai pu faire une erreur (rappel , je suis un débutant !!)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69 <div class="instructions5"> 5) Choisir un fichier à envoyer pour mettre à jour la liste des concours <br /><br /> <?php if(isset($_FILES2['fichier2'], $_POST2['envoyer2'])) { //on efface la table compta avant d'inscrire les données $sql2="TRUNCATE concours"; $result2=mysql_query($sql2); $dossier2 = 'filec/'; $fichier2 = basename($_FILES2['fichier2']['name']); $taille_maxi2 = 100000; $taille2 = filesize($_FILES2['fichier2']['tmp_name']); $extensions2 = array('.csv', '.txt'); $extension2 = strrchr($_FILES2['fichier2']['name'], '.'); //Début des vérifications de sécurité... if(!in_array($extension2, $extensions2)) //Si l'extension n'est pas dans le tableau { $erreur2 = 'Vous devez uploader un fichier de csv...'; } if($taille2>$taille_maxi2) { $erreur2 = 'Le fichier est trop gros...'; } if(!isset($erreur2)) //S'il n'y a pas d'erreur, on upload { //On formate le nom du fichier ici... $fichier2 = strtr($fichier2, 'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ', 'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy'); $fichier2 = preg_replace('/([^.a-z0-9]+)/i', '-', $fichier2); if(move_uploaded_file($_FILES2['fichier2']['tmp_name'], $dossier2 . $fichier2)) //Si la fonction renvoie TRUE, c'est que ça a fonctionné... { echo 'Upload effectué avec succès !'; } else //Sinon (la fonction renvoie FALSE). { echo 'Echec de l\'upload !'; } } else { echo $erreur2; } } //Le chemin d'acces au fichier sur le serveur $fichier2 = fopen("filec/concours.csv", "r"); //tant qu'on est pas a la fin du fichier : while (!feof($fichier2)) { // On recupere toute la ligne $uneLigne2 = fgets($fichier2, 1024); //On met dans un tableau les differentes valeurs trouvés (ici séparées par un ';') $tableauValeurs2 = explode(';', $uneLigne2); // On crée la requete pour inserer les donner (ici il y a 8 champs donc de [0] a [7]) $sql2="REPLACE INTO concours VALUES ('".$tableauValeurs2[0]."', '".$tableauValeurs2[1]."', '".$tableauValeurs2[2]."', '".$tableauValeurs2[3]."', '".$tableauValeurs2[4]."', '".$tableauValeurs2[5]."', '".$tableauValeurs2[6]."', '".$tableauValeurs2[7]."')"; $req2=mysql_query($sql2); // la ligne est finie donc on passe a la ligne suivante (boucle) } ?> <form method="POST" action="" enctype="multipart/form-data"> <div class="bouton2"> <label for="fichier2">Choix fichier:</label><input type="file" name="fichier2" value="" id="fichier2" /><br /><br /> <input type="submit" value="Envoyer Fichier 2" name="envoyer2" id="envoyer2" /> </div> </form> </div>
pour l'autre partie qui elle fonctionne (et qui est dans la même page, c'est important je pense)
voici le code qui est peu ou prou identique.
n'hésitez pas si vous avez l'oeil pour voir ou j'ai cafouillé, car là je m'arrache les cheveux !
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69 <div class="instructions4"> 4) Choisir un fichier à envoyer pour mettre à jour la page comptabilité <br /><br /> <?php if(isset($_FILES['fichier'], $_POST['envoyer'])) { //on efface la table compta avant d'inscrire les données $sql="TRUNCATE compta"; $result=mysql_query($sql); $dossier = 'file/'; $fichier = basename($_FILES['fichier']['name']); $taille_maxi = 100000; $taille = filesize($_FILES['fichier']['tmp_name']); $extensions = array('.csv', '.txt'); $extension = strrchr($_FILES['fichier']['name'], '.'); //Début des vérifications de sécurité... if(!in_array($extension, $extensions)) //Si l'extension n'est pas dans le tableau { $erreur = 'Vous devez uploader un fichier de csv...'; } if($taille>$taille_maxi) { $erreur = 'Le fichier est trop gros...'; } if(isset($erreur)) //S'il n'y a pas d'erreur, on upload { //On formate le nom du fichier ici... $fichier = strtr($fichier, 'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ', 'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy'); $fichier = preg_replace('/([^.a-z0-9]+)/i', '-', $fichier); if(move_uploaded_file($_FILES['fichier']['tmp_name'], $dossier . $fichier)) //Si la fonction renvoie TRUE, c'est que ça a fonctionné... { echo 'Upload effectué avec succès !'; } else //Sinon (la fonction renvoie FALSE). { echo 'Echec de l\'upload !'; } } else { echo $erreur; } } //Le chemin d'acces au fichier sur le serveur $fichier = fopen("file/compta.csv", "r"); //tant qu'on est pas a la fin du fichier : while (!feof($fichier)) { // On recupere toute la ligne $uneLigne = fgets($fichier, 1024); //On met dans un tableau les differentes valeurs trouvés (ici séparées par un ';') $tableauValeurs = explode(';', $uneLigne); // On crée la requete pour inserer les donner (ici il y a 4 champs donc de [0] a [3]) $sql="REPLACE INTO compta VALUES ('".$tableauValeurs[0]."', '".$tableauValeurs[1]."', '".$tableauValeurs[2]."', '".$tableauValeurs[3]."')"; $req=mysql_query($sql); // la ligne est finie donc on passe a la ligne suivante (boucle) } ?> <form method="POST" action="" enctype="multipart/form-data"> <div class="bouton"> <label for="fichier">Choix fichier:</label><input type="file" name="fichier" value="" id="fichier" /><br /><br /> <input type="submit" value="Envoyer Fichier 1" name="envoyer" id="envoyer" /> </div> </form> </div>
merci d'avance.
Bruno
Partager