Remplir BDD via fichier txt
Bonjour,
Je cherche à remplir ma base de données à partir d'un fichier txt. Ce fichier contient les coordonnées en latitude,longitude et une valeur d'humidité comprise entre 0 et 1.
Dans mon SGBD la table est la suivante : tbl_point : + id (SERIAL), +x_y (POINT), +teta (REAL)
Mon fichier texte est construit comme ceci : 50.686324,4.597381;0.21 sur plusieurs lignes.
je n'arrive pas à remplir ma table tbl_point avec les valeurs extraites du fichiers.
Pouvez vous regarder mon code et me dire ce qui bloc svp :
Code:
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 70 71 72 73 74 75 76 77 78 79
| <?php
include('config.php');
?>
<!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 http-equiv="Content-Type" content="text/html; charset=utf-8" />
<link href="<?php echo $design; ?>/style.css" rel="stylesheet" title="Style" />
<link rel="shortcut icon" type="image/x-icon" href="plus.png" />
<title>Ajouter un chantier</title>
</head>
<body>
<!----------------------- Téléchargement du fichier de points ----------------------------->
<h4> 5ème étape : Téléchargement du fichier de points</h4>
<form method="post" action="existant.php">
<label for="point">Choisir le fichier de points à importer :</label>
<input type="file" name="point" id="point" /><br /><br/><br/>
<input type="submit" name="submit" value="Envoyer" />
</form>
<?php
//on définit le fichier txtque l'on va traiter
$fichier = $_POST['point'];
//on ouvre le fichier en lecture seulement, impossible de modifier le fichier
if (file_exists($fichier))
{
$fp = fopen("$fichier", "r");
}
else // le fichier n'existe pas
{
echo "Fichier introuvable !<br />Importation stoppée.";
exit();
}
while (!feof($fp))
{
//On lit une ligne tant qu'on a pas atteint la fin du fichier
$ligne = fgetc($fp);
//On récupère les champs séparés par ; dans liste
$liste = explode( ";",$ligne);
//On assigne les variables
$coord = $liste[0];
$humidite = $liste[1];
$convert =pg_query("SELECT CAST(point,'$coord');");
//On insère les valeurs dans la table Point
$sql = "INSERT INTO point (x_y,teta,id_parcelle) VALUES('$convert','$humidite',60)";
$result= pg_query($sql);
if(pg_last_error())
{
//On soulève les erreurs lors de la connexion a la base de données
print "Erreur dans la base de données : ".pg_last_error();
print "<br />Importation stoppée.";
exit();
}
else
{
//Tout va bien
print "$coord | $humidite <br />";
//On referme le fichier txt
fclose($fp);
echo '<br /><b>TABLE A JOUR ...</b><br />';
//A la fin
echo '<br /><b>O.K ! ALL DONE.</b><br />';
}
}
?>
</body>
</html> |
Les messages renvoyés sont les suivants :
Citation:
Notice: Undefined offset: 1 in C:\Users\Madeleine\Desktop\test_liste_liee\existant.php on line 46 (correspond à la ligne $humidite = $liste[1];)
Citation:
Warning: pg_query(): Query failed: ERREUR: erreur de syntaxe sur ou près de « , » LINE 1: SELECT CAST(point,'5'); ^ in C:\Users\Madeleine\Desktop\test_liste_liee\existant.php on line 47 (correspond à la ligne $convert =pg_query("SELECT CAST(point,'$coord');");)
Citation:
Warning: pg_query(): Query failed: ERREUR: syntaxe en entrée invalide pour le type point : « » LINE 1: INSERT INTO point (x_y,teta,id_parcelle) VALUES('','',60) ^ in C:\Users\Madeleine\Desktop\test_liste_liee\existant.php on line 50
Erreur dans la base de données : ERREUR: syntaxe en entrée invalide pour le type point : « » LINE 1: INSERT INTO point (x_y,teta,id_parcelle) VALUES('','',60) ^
merci !
La variable ne stocke pas tout ce que je veux
Bonjour,
Merci pour le conseil. Je viens de vérifier et quand j'affiche ce que contient ma variable $coord alors il me retourne '5'. Ce qui est le premier chiffre de ma coordonnée.
Une idée ?
Merci