Salut,
Pour pouvoir réaliser un upload il faut l'indiquer dans la déclration du formulaire (par exemple): <form action="traitement.php" method="post"
enctype="multipart/form-data">
le paramètre en gras est ce qui permet l'upload.
Globalement il y a des "erreurs" de débutant dans ton code :
- ne jamais présumer de l’existence de variables issue d'un formulaire
par exemple pour savoir si l'upload c'est bien réalisé :
if (is_uploaded_file($_FILES['fichier_u'][tmp_name']))
A partir de la tu peut réaliser la lecture du fichier et le traitement particulier.
pour cela j'utiliserais plutôt file et foreach.
Il faut aussi éviter de faire autant de requête insert que de de ligne dans le fichier sur un serveur mutualisé, s'il y a trop de requête a la suite y a des chances que l'hébergeur n'apprécie pas !
Pour cela on peu utiliser la syntaxe suivante : insert into nomdetable (nom, des, champs) values(premier,couple,de valeur), (deuxième,couple, de valeur),(troisème,couple, de valeur), .......
- d'où provient $action ? (1ère ligne de php) si c'est bien du formulaire il faut utiliser $_POST['action']. L'auto déclaration des variables issues de formulaire ou d'url (etc...) n'est plus faites par défaut avec php5. De plus cela permet une meilleur lisibilitée du code (ou sait rapidement d'où vient la variable.
idem pour $creertable, $bbs etc...
les @ devant les fonctions, pourquoi pas dans un script mise en "production" mais la il faut éviter pour débugguer facilement et ainsi avoir des messages d'erreur facilement et les corriger.
- tu a plusieurs case à cocher "creertable" tu ne peut faire la différence entre chaque, si une est décochée impossible de le savoir ! pour cela il faut utiliser un "value".
il pourrait être intéressant de vérifier si la table existe avant de lancer la requête de création et d'avoir un message d'erreur (avec if not exists par exemple).
je modifierais ton code ainsi (non testé).
<html>
<head>
<title>Importer un fichier texte dans une bdd MySQL</title>
</head>
<body>
<h2>Importer un fichier texte dans une bdd MySQL</h2>
<?php
if (isset($_POST['action']) && ($_POST['action']== 'ajouter')) {
/* LECTURE ET AJOUT DES DONNEES DANS LA TABLE */
/* Variables */
$bdd = "prévision"; /* Base de données */
$host= "localhost"; /* Hote (localhost en principe) */
$user= "root"; /* Utilisateur */
$pass= ""; /* Mot de passe */
/* Connexion bdd */
mysql_connect($host,$user,$pass) or die("Impossible de se connecter à la base de données");
mysql_select_db($bdd);
/* On cree la table */
if (isset($_POST['creertable'])){
// d'où sort $bbs ?
$query = "CREATE TABLE if not exists $bss( rtch_attempts varchar(24) NOT NULL,rtch_successfully_seized varchar(24) NOT NULL,rtch_traffic_offered varchar(24) NOT NULL,rtch_erlang_busy_hour varchar(24) NOT NULL,sdcch_attempts varchar(24)NOT NULL, PRIMARY KEY (rtch_attempts))";
$result = mysql_query($query);
}
if (is_uploaded_file($_FILES['fichier_u']['tmp_name'])) {
$fp = fopen("$fichier", "r");
}
else{ /* le fichier n'existe pas */
echo "Fichier introuvable !<br>Importation stoppée.";
//exit(); <= non non un pbeau message d'erreur et l'affichage de la page complete
}
$file = file($_FILES['fichier_u']['tmp_name']);
foreach ($file as $liste){
/* On récupère les champs séparés par ; dans liste*/
$liste = explode( ";",$ligne);
/* On assigne les variables */
$rtch_attempts = $liste[0];
$rtch_successfully_seized = $liste[1];
$rtch_traffic_offered = $liste[2];
$rtch_erlang_busy_hour = $liste[3];
$sdcch_attempts = $liste[4];
/* Ajouter un nouvel enregistrement dans la table */
$query = "INSERT INTO $bss VALUES('$rtch_attempts','$rtch_successfully_seized','$rtch_traffic_offered','$rtch_erlang_busy_hour','$sdcch_attempts')";
$result= mysql_query($query); //en minuscule
if($result === false)
{ /* Erreur dans la base de donnees, surement la table qu'il faut créer */
print "Erreur dans la base de données : ".mysql_error().'<br />avec la requete '.$query;
print "<br>Importation stoppée.";
//exit();
}
else /* Tout va bien */
print "$rtch_attempts $rtch_successfully_seized $rtch_traffic_offered $rtch_erlang_busy_hour $sdcch_attempts <br>";
}
echo "<br>Importation terminée, avec succès.";
mysql_close();
}
/* FORMULAIRE DE CHOIX D'IMPORTATION */
else {
echo <<<EOT
<form method="post" action="" enctype="multipart/form-data">
Cocher les cellules à importer
<table border="0" cellspacing="0" cellpadding="3">
<tr>
<td>Table :</td>
<td> <input type="text" name="table"> </td>
</tr>
<tr>
<td>Fichier :</td>
<td> <input type="file" name="fichier"> </td>
</tr>
<tr>
<tr>
<td>rtch_attempts :</td>
<td> <input type="checkbox" name="creertable" checked> </td>
</tr>
<tr>
<tr>
<td>rtch_successfully_seized:</td>
<td> <input type="checkbox" name="creertable" checked> </td>
</tr>
<tr>
<tr>
<td>rtch_traffic_offered</td>
<td> <input type="checkbox" name="creertable" checked> </td>
</tr>
<tr>
<tr>
<td>rtch_erlang_busy_hour</td>
<td> <input type="checkbox" name="creertable" checked> </td>
</tr>
<tr>
<tr>
<td>sdcch_attempts</td>
<td> <input type="checkbox" name="creertable" checked> </td>
</tr>
<tr>
<td></td>
<td> <input type="submit" name="submit" value="Importer !"> </td>
</tr>
</table>
<input type="hidden" name="action" value="ajouter">
</form>
EOT;
}
?>
</body>
</html>
pour load data infile =>
http://dev.mysql.com/doc/refman/5.1/fr/load-data.html
@+