Page 1 sur 1
upload fichiers
Posté : 21 mars 2012, 17:19
par rolly2520
Bonjour,
Le code suivant fonctionne avec FireFox et pas avec IE ?
Est ce que qq a une idée ?
<form id="fCsv" method="post" enctype="multipart/form-data" action="/Acc_Abs/PHP/importCsv.php"></form>
<?php
include "connexion.php";
//Connection à la base
$db=connect("localhost","root","","oscar");
for($x=1;$x<7;$x++){
if (!$_FILES['avecBo02'.$x]['error']== UPLOAD_ERR_NO_FILE){
$chemin=$_FILES["avecBo02".$x]['tmp_name'];
//Remplace les antislash du chemin du fichier téléchargé par des slash
$cheminfinal=str_replace('\\','/',$chemin);
//editionde la requete
$requete="LOAD DATA INFILE '$cheminfinal' INTO TABLE `accabsbo` FIELDS TERMINATED BY ';' ENCLOSED BY '\"' LINES TERMINATED BY '\r\n' IGNORE 1 LINES";
//exécute la requête SQL
$reponse=mysql_query($requete,$db) or die (mysql_error());
}//else{echo 'le fichier 02'.$x.' n\'existe pas';}
}
for($y=1;$y<7;$y++){
if (!$_FILES["avecssBo02".$y]['error']== UPLOAD_ERR_NO_FILE){
$chemin=$_FILES["avecssBo02".$y]['tmp_name'];
//Remplace les antislash du chemin du fichier téléchargé par des slash
$cheminfinal=str_replace('\\','/',$chemin);
//editionde la requete
$requete="LOAD DATA INFILE '$cheminfinal' INTO TABLE `accabsssbo` FIELDS TERMINATED BY ';' ENCLOSED BY '\"' LINES TERMINATED BY '\r\n' IGNORE 1 LINES";
//exécute la requête SQL
$reponse=mysql_query($requete,$db) or die (mysql_error());
}//else{echo 'le fichier 02'.$x.' n\'existe pas';}
}
?>
Re: upload fichiers
Posté : 21 mars 2012, 19:02
par moogli
Salut,
Vu l'étendu du code html, et le ça marche pas peux significatif je dirais qu'il s'agit tas de JS qui ne fait pas sont travail ?
Dans cas rien a voir avec c'est un problème du à la non normalisation du JS dans les navigateurs.
@+
Re: upload fichiers
Posté : 22 mars 2012, 11:36
par rolly2520
Voici en parti mon code HTML
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta content="text/html; charset=utf-8" http-equiv="Content-Type">
<meta content="no-cache" http-equiv="Pragma">
<meta content="no-cache, must-revalidate" http-equiv="Cache-Control">
<meta content="0" http-equiv="Expires">
<title>Releve du Jour</title>
<script src="Javascript/Requete_Export_Text.js" type="text/javascript" language="javascript">
<link href="CSS/style.css" type="text/css" rel="stylesheet">
</head>
<body id="corp">
Inscrire la date de la veille (AAAA-MM-JJ):
<br>
<br>
<input id="date_Rel" type="text" value="2011-04-01" name="date_Rel">
<br>
<br>
<input id="Csv" type="button" onclick="cEstParti('021')" value="Generer les Csv">
<div id="Csv2">
<div id="Csv3">
<form id="fCsv" method="post" enctype="multipart/form-data" action="/Acc_Abs/PHP/importCsv.php">
<input id="csvFileBo021" class="formeFile" type="file" name="avecBo021">
<input id="csvFilesansBo021" class="formeFile" type="file" name="avecssBo021">
<input id="csvFileBo022" class="formeFile" type="file" name="avecBo022">
<input id="csvFilesansBo022" class="formeFile" type="file" name="avecssBo022">
<input id="csvFileBo023" class="formeFile" type="file" name="avecBo023">
<input id="csvFilesansBo023" class="formeFile" type="file" name="avecssBo023">
<input id="csvFileBo024" class="formeFile" type="file" name="avecBo024">
<input id="csvFilesansBo024" class="formeFile" type="file" name="avecssBo024">
<input id="csvFileBo025" class="formeFile" type="file" name="avecBo025">
<input id="csvFilesansBo025" class="formeFile" type="file" name="avecssBo025">
<input id="csvFileBo026" class="formeFile" type="file" name="avecBo026">
<input id="csvFilesansBo026" class="formeFile" type="file" name="avecssBo026">
<input id="envoyerBo" type="submit">
</form>
</div>
</body>
</html>
Re: upload fichiers
Posté : 22 mars 2012, 12:15
par Mazarini
Reste le "ca ne marche pas" assez peu explicite.
Détail un peu ce qui se passe, ce qui devrait se passer et ce que tu fais.
Moogli pourra alors peut être voir quelque chose parce que moi et le javascript...
Re: upload fichiers
Posté : 22 mars 2012, 12:25
par rolly2520
Voici le code erreur :
Notice: Undefined index: avecBo021 in C:\Users\Public\applications\EasyPHP5.2.10\www\Acc_Abs\PHP\importCsv.php on line 8
Notice: Undefined index: avecBo021 in C:\Users\Public\applications\EasyPHP5.2.10\www\Acc_Abs\PHP\importCsv.php on line 9
File 'C:\Users\Public\APPLIC~1\EASYPH~1.10\mysql\data\oscar\' not found (Errcode: 2)
Par contre je vois pas pourquoi cela viendrait du JS, vu qu'il ne sert a générer le code HTML?
Re: upload fichiers
Posté : 22 mars 2012, 12:56
par Mazarini
Je te conseille d'ajouter en début de script :
var_dump($_FILES);
Ca te permettra de voir ce que contient $_FILES et d'adapter les index de ce tableau.
(par habitude, j'utilise les mêmes valeurs pour id et name)
Re: upload fichiers
Posté : 22 mars 2012, 13:12
par rolly2520
Voilà ce que contient $_FILES :
sous IE : array(0) { }
sous FireFox:
array(12) { ["avecBo021"]=> array(5) { ["name"]=> string(10) "Query1.csv" ["type"]=> string(24) "application/vnd.ms-excel" ["tmp_name"]=> string(58) "C:\Users\Public\applications\EasyPHP5.2.10\tmp\phpAC80.tmp" ["error"]=> int(0) ["size"]=> int(424) }
C'est vraiment allucinant, c'est bien le meme script sauf que sous IE mon name "avecBo021" n'existe pas !
Re: upload fichiers
Posté : 22 mars 2012, 14:59
par Mazarini
Tu as choisi XHTML comme type de document. Il faut donc fermer les balises input (ainsi que les autres).
Pas sur que ca explique ton problème, mais c'est à vérifier.
Re: upload fichiers
Posté : 22 mars 2012, 15:55
par rolly2520
Désolé, mais serais tu me dire comment créer mon input avec une balise fermé dynamiquement ?
nouveauInputFile('avecBo'+Centre, 'avecBo'+Centre, 'file', 'fCsv', 'formeFile');
function nouveauInputFile(id, nom, typebal, zone, cName)
{
var zoneFile = document.getElementById(zone);
var nFile = document.createElement('input');
nFile.type = typebal;
nFile.id = id;
nFile.name = nom;
nFile.className = cName
zoneFile.appendChild(nFile);
}
Re: upload fichiers
Posté : 22 mars 2012, 16:20
par Mazarini
D'après ce que je vois, il y a un problème dans le html que tu montres dans le premier message en utilisant
http://validator.w3.org/ tu peux voir les problèmes.
Re: upload fichiers
Posté : 22 mars 2012, 16:48
par rolly2520
Oui effectivement il y a un problème, j'ai passé mon code dans le W3C, il pointe bien sur les balise input et br qui ne sont pas fermé.
Le probleme est comment générer un <input /> en JS avec Var nFile = document.createElement('input');
Re: upload fichiers
Posté : 22 mars 2012, 17:39
par AB
Désolé, mais serais tu me dire comment créer mon input avec une balise fermé dynamiquement ?
nouveauInputFile('avecBo'+Centre, 'avecBo'+Centre, 'file', 'fCsv', 'formeFile');
function nouveauInputFile(id, nom, typebal, zone, cName)
{
var zoneFile = document.getElementById(zone);
var nFile = document.createElement('input');
nFile.type = typebal;
nFile.id = id;
nFile.name = nom;
nFile.className = cName
zoneFile.appendChild(nFile);
}
Pour donner des attributs essaies avec setAttribute()
Sinon je vois que tu utilises LOAD DATA INFILE. Faits attention car si cela marche en local il est peut probable que cela fonctionne en distant sur un serveur mutualisé car il faut avoir le droit mysql d'écriture sur les fichiers.
Re: upload fichiers
Posté : 22 mars 2012, 18:33
par moogli
Je suis loin d'être calé en JS mais :
- le formulaire est generé par
JAVASCRIPT, c'est du moins ce que montée ton code JS !
- php n'a rien a voir avec Javascript
- tu sais que le code php fonctionne vue que tu a fait des upload, à priori correct, via firefox.
À faire
- coder le formulaire complet en dure et voir s'il fonctionne sur tout les navigateurs (sans toucher au code php). Tu pourra ainsi valider le principe de fonctionnement et valider les fioritures après.
- debugger le JS pour qu'il fonctionne avec IE. Qui par essence ne fait que ce qu'il souhaite et de préférence pas. Olmert les autres.
Tu peux utiliser une extension comme firebug (ou la console du web de chrome) pour voir. E Ue fait exactement le JS (chrome permet même de le debugage avec des points d'arrêts !).
Use et abusé de la fonction var_dump et pas seulement sur $_FILES, (à fait sur GET et post aussi)
Je te conseillerais aussi d'utiliser l'extension xdebug qui, bien configurées, pourra te montrer "le scope" de variable.
Au passage tu n'a pas de balise form dans ton code, copier collé foireux ? Si ce n'est pas le cas peut être que simplement c'est IE qui ne fait pas n'importe quoi
@+