OVH Cloud OVH Cloud

prendre un fichier texte genre csv et le donner a manger a mysql

4 réponses
Avatar
octane
Bonjour,

je souhaite que des utilisateurs nourrissent une base de donnees via un
formulaire web.

Avec php, on peut demander a charger des fichiers, OK.

Les fichiers que les utilisateurs vont donner sont de la forme:

une ligne commencant par la lettre T:
T date heure_debut increment
et ensuite une succession de lignes:
valeur1 valeur2 valeur3 ... valeur12 (valeurs separees par des espaces)

Le but etant d'envoyer a mysql le tout sous la forme:
date, heure de mesure, valeur1, valeur2 ... valeur12

En php est-ce possible de faire ca? Existe t'il un code qui puisse
faire ca?

Merci

4 réponses

Avatar
Olivier Miakinen
Bonjour,


[ explications de ce que tu veux faire ]

En php est-ce possible de faire ca?


Oui, certainement.

Où est-ce que tu coinces ? Si c'est sur l'algorithme, ta question serait
mieux à sa place sur fr.comp.algorithmes. Si c'est sur le code PHP, il
faudrait que tu nous dises ce que tu as déjà fait et ce qui ne marche
pas. Enfin si c'est sur les requêtes à la base de données, la question
serait plus en charte sur fr.comp.applications.sgbd.

Dans le cas numéro 2 (code PHP), est-il nécessaire que je rappelle
encore une fois les adresses de la doc et de la FAQ ?

Existe t'il un code qui puisse faire ca?


Aucune idée. Dans la FAQ tu as une liste de liens vers des sites
regroupant des bibliothèques de scripts.

--
Olivier Miakinen

Avatar
Denis Beauregard
Le 25 Jul 2006 16:03:33 GMT, écrivait dans
fr.comp.lang.php:

Les fichiers que les utilisateurs vont donner sont de la forme:

une ligne commencant par la lettre T:
T date heure_debut increment
et ensuite une succession de lignes:
valeur1 valeur2 valeur3 ... valeur12 (valeurs separees par des espaces)

Le but etant d'envoyer a mysql le tout sous la forme:
date, heure de mesure, valeur1, valeur2 ... valeur12

En php est-ce possible de faire ca? Existe t'il un code qui puisse
faire ca?


La fonction explode sépare une ligne en tableau. Il suffit
ensuite de construire une requête pour insérer chaque élément
dans la table SQL.

Si le nombre de valeurs varie, on peut faire un implode
avec seulement les valeurs.


Denis

Avatar
Alain Brillant
a écrit dans le message de news:


Le but etant d'envoyer a mysql le tout sous la forme:
date, heure de mesure, valeur1, valeur2 ... valeur12


J'ai eu besoin de faire un truc similaire, copier dans une table Mysql
le contenu d'un tableau Excel sauvegardé au format CSV.
Voici le code que j'ai écris :

<?
require_once("connexion.php");
$fic = fopen('STATIONS.csv','rb');
for($champ = fgetcsv($fic, 1024, ';'); ! feof($fic); $champ =
fgetcsv($fic, 1024, ';'))
{
$ligne = $champ[0];
$ordre = $champ[1];
$station = $champ[2];
$station = addslashes($station);
$requete = "insert into lignes values ('$ligne', '$ordre', '$station')";
$resultat = mysql_query($requete, $mysql_link);
if($resultat != 1)
{
print("<b>ERREUR : $ligne $ordre $station NON AJOUTES</b><br>");
print("$requete<br>");
}
else
{
print("$ligne $ordre $station AJOUTES<br>");
}
}
?>

A noter que dans mon exemple les champs sont séparés par des ; dans le
fichier CSV.
Si ça peut t'aider :o)

Avatar
jpll
Le Tue, 25 Jul 2006 16:03:33 +0000, octane a écrit :

Bonjour,

je souhaite que des utilisateurs nourrissent une base de donnees via un
formulaire web.

Avec php, on peut demander a charger des fichiers, OK.

Les fichiers que les utilisateurs vont donner sont de la forme:

une ligne commencant par la lettre T: T date heure_debut increment
et ensuite une succession de lignes:
valeur1 valeur2 valeur3 ... valeur12 (valeurs separees par des espaces)

Le but etant d'envoyer a mysql le tout sous la forme: date, heure de
mesure, valeur1, valeur2 ... valeur12

En php est-ce possible de faire ca? Existe t'il un code qui puisse faire
ca?

Merci


oui tu transformes chaque $ligne, valeur1 valeur2 valeur3 ... valeur12,
avec explode(' ',$ligne) en un tableau $tab_data. Ensuite tu fais un
mysql_query("INSERT ta table VALUES('{$tab_data[0]}','{$tab_data[1]}',etc....

J'espère que tu n'as pas de "trous" dans ce qui remonte de ton formulaire ;)