Bonsoir à toutes et à tous,
je n'aime pas trop ta façon d'écrire les accès au fichier. Voici un lien qui explique cela :
http://www.commentcamarche.net/contents/php/phpfich.php3
J'ai repris ton exemple et voici le code HTML contenant le code php. Remarque : FP veut dire "F"ile "P"ointer.
<!doctype html>
<html>
<head>
<title>Nombre décimaux</title>
</head>
<body>
<? p h p
/*-----------------------------------------------------*/
/* Informations pour la connexion à la base de données */
/*-----------------------------------------------------*/
$nom_du_serveur ="localhost";
$nom_de_la_base ="My_BDD";
$nom_utilisateur ="root";
$passe ="";
/*----------------------*/
/* Connexion au Serveur */
/*----------------------*/
$link = mysql_connect("$nom_du_serveur","$nom_utilisateur","$passe") or die('Connexion au serveur impossible : ' . mysql_error());
/*--------------------------------*/
/* Connexion à la base de données */
/*--------------------------------*/
$db = mysql_select_db("$nom_de_la_base") or die("Connexion à la base de données impossible : " . mysql_error());
/*-----------------------*/
/* Traitement du fichier */
/*-----------------------*/
$fp = fopen("fichier.csv", 'r');
if (!$fp)
{
echo "Impossible d'ouvrir le fichier 'fichier.csv'.";
exit(-1);
}
else
{
$nbre = 0;
while (!feof($fp))
{
$data = fgetcsv($fp, 1000, ";");
if ($data[0] != "")
{
echo $data[0] . " --- " . $data[1] . " --- " . $data[2] . "<br />";
$query = "INSERT INTO consommation (type_conso, date_conso, val_conso) VALUES ('$data[0]','$data[1]','$data[2]')";
$result = mysql_query($query) or die("Problème requête 1 :" . mysql_error());
$nbre++;
if ($nbre > 1000)
{
$nbre = 0;
$query = "COMMIT";
$result = mysql_query($query) or die("Problème requête 2 :" . mysql_error());
}
}
}
$query = "COMMIT";
$result = mysql_query($query) or die('Problème requête 3 :' . mysql_error());
if (!fclose($fp))
{
echo "Impossible de fermer le fichier \"fichier.csv\".";
exit(-2);
}
}
/*-------------*/
/* Déconnexion */
/*-------------*/
mysql_close($link);
?>
</body>
</html>
Et voici le fichier "fichier.csv" que j'ai créé spécialement avec EXCEL. Tu ne le vois pas mais il y a quatre lignes. La quatrième est sans informations.
Article 1;2007/07/31 12:00:00;1.123456
Article 2;2008/11/25 15:31:00;255.120000
Article 3;2009/03/15 09:22:00;121.541000
J'ai fait le test et tout fonctionne correctement.
Et voici le vidage de la table "consommation" après le test.
-- phpMyAdmin SQL Dump
-- version 3.3.9
-- http://www.phpmyadmin.net
--
-- Serveur: localhost
-- Généré le : Mer 03 Août 2011 à 18:01
-- Version du serveur: 5.5.8
-- Version de PHP: 5.3.5
SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;
--
-- Base de données: `my_bdd`
--
-- --------------------------------------------------------
--
-- Structure de la table `consommation`
--
-- Création: Mer 03 Août 2011 à 19:21
-- Dernière modification: Mer 03 Août 2011 à 20:01
--
DROP TABLE IF EXISTS `consommation`;
CREATE TABLE IF NOT EXISTS `consommation` (
`type_conso` varchar(30) NOT NULL,
`date_conso` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`val_conso` decimal(20,6) NOT NULL,
PRIMARY KEY (`type_conso`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
--
-- Contenu de la table `consommation`
--
INSERT INTO `consommation` (`type_conso`, `date_conso`, `val_conso`) VALUES
('Article 3', '2009-03-15 09:22:00', '121.541000'),
('Article 2', '2008-11-25 15:31:00', '255.120000'),
('Article 1', '2007-07-31 12:00:00', '1.123456');
@+
Modifié par Artemus24 (03 Aug 2011 - 20:15)