banniere

Le portail francophone de la géomatique


Toujours pas inscrit ? Mot de passe oublié ?
Nom d'utilisateur    Mot de passe              Toujours pas inscrit ?   Mot de passe oublié ?

Annonce

Rencontres QGIS 2025

L'appel à participation est ouvert jusqu'au 19 janvier 2025!

#1 Fri 25 January 2013 22:55

abdoudiouck
Participant occasionnel
Lieu: RENNES
Date d'inscription: 19 Aug 2010
Messages: 17

Formulaire PHP : Probleme d'insersion de données dans postgis

Voila j ai crée un formulaire PHP  pour rajouter de la donnée attributaire et géométrique  voici la requête

Code:

  
<?php
$db = pg_connect("host=localhost port=5432 dbname=postgres user=postgres password=postgres");
$parcelles="'parcelles'.comm"; 
$query = "INSERT INTO $parcelles (gid,id,nom,the_geom) VALUES ('$_POST[gid]','$_POST[id]','$_POST[nom]','$_POST[the_geom]')";
pg_query($db,$query); 
?>

sauf que la requête de php me renvoie la réponse suivante

Code:

 
Warning: pg_query() [function.pg-query]: Query failed: ERROR: invalid input syntax for integer: "" LINE 1: INSERT INTO "parcelles".comm VALUES ('','','') ^ in /Applications/XAMPP/xamppfiles/htdocs/php/php/insert.php on line 5

Hors ligne

 

#2 Sat 26 January 2013 12:27

Yves
Membre du bureau
Lieu: Aix-les-Bains
Date d'inscription: 22 Mar 2006
Messages: 9869
Site web

Re: Formulaire PHP : Probleme d'insersion de données dans postgis

Bonjour,

Ta requête est fausse, tu dois avoir un entier quelque part, probablement pour les champs gid et/ou id :

Code:

$query = "INSERT INTO $parcelles (gid,id,nom,the_geom) VALUES ($_POST[gid],$_POST[id],'$_POST[nom]','$_POST[the_geom]')";

Y.


Yves Jacolin, bénévole de l'association GeoRezo.net, agit au nom et pour le compte de l'association - Partageons ce qui nous départage !!  - GeoRezo vous aide ? Aidez GeoRezo !

Hors ligne

 

#3 Mon 28 January 2013 10:13

sigdu80
Participant actif
Date d'inscription: 2 Sep 2010
Messages: 112

Re: Formulaire PHP : Probleme d'insersion de données dans postgis

Bonjour,

en complément de Yves, je dirai qu'il faut également vérifier que tes variables POST soient bien remplies, surtout concernant ceux qui doivent être placés dans des colonnes NOT NULL dans ta table SQL.

Code:

<?php
if(empty($_POST[gid]) || empty($_POST[id]) || empty($_POST[nom]) || empty($_POST[the_geom]) )
   exit("Paramètres incorrects.");

$db = pg_connect("host=localhost port=5432 dbname=postgres user=postgres password=postgres");
$parcelles="'parcelles'.comm"; 
$query = "INSERT INTO $parcelles (gid,id,nom,the_geom) VALUES ('$_POST[gid]','$_POST[id]','$_POST[nom]','$_POST[the_geom]')";
pg_query($db,$query); 
?>

Le champ gid n'est pas de type serial ?

Dernière modification par sigdu80 (Mon 28 January 2013 10:14)

Hors ligne

 

#4 Mon 28 January 2013 10:52

Nicolas Ribot
Membre
Lieu: Toulouse
Date d'inscription: 9 Sep 2005
Messages: 1554

Re: Formulaire PHP : Probleme d'insersion de données dans postgis

Bonjour,

Je vous invite fortement à ne pas fabriquer de requetes SQL en concaténant des valeurs recues depuis des formulaires Web.
Votre code devient sensible à de l'injection SQL.

Vous pouvez, a la place, utiliser des prepared statements qui permettent d'eviter ce risque et de rendre l'ecriture des requetes plus robuste aux différentes valeurs (http://php.net/manual/en/function.pg-prepare.php).

Nicolas

Hors ligne

 

#5 Wed 30 January 2013 17:16

abdoudiouck
Participant occasionnel
Lieu: RENNES
Date d'inscription: 19 Aug 2010
Messages: 17

Re: Formulaire PHP : Probleme d'insersion de données dans postgis

Bonjour et merci pour vos réponses
Alors pour Yves, en effet le probleme venait du gid en integer du coup  je l'ai changé et j ai  réussi a integrer les données mais je suis contraint de laisser mon gid en serial et ca bloque a ce niveau et je vais l'enlever dans la requete ou le mettre par default .
Pour sigdu80 et Nicolas Ribot merci pour votre eclairage je suis entrain de revoir les codes je vous tiendrai au courant

Hors ligne

 

#6 Thu 31 January 2013 09:33

abdoudiouck
Participant occasionnel
Lieu: RENNES
Date d'inscription: 19 Aug 2010
Messages: 17

Re: Formulaire PHP : Probleme d'insersion de données dans postgis

Bonjour alors pour tester j ai modifié le code qui marche pour  remplir le formulaire. La ou ca coince c est l'ajout de la géométrie sachant que
pour le code que j ai utilisé pour créer les point geom est la suivante:

UPDATE mdshema1.ville SET geom = ST_GeomFromText('POINT ('||longitude||' '||latitude||')',4326);


Et enfin voici le code PHP

Code:

<?php
//Header de type texte pour l'encodage des accents
    header('Content-type: text/html; charset=UTF-8');     
// Parametre de  connection 
$pg_connect = pg_connect("host=localhost  port=5432 dbname=postgres user=postgres     password=bacspace"); 

$schema = '"mdshema1".ville'; 

$geom = "ST_Transform(GeomFromText('".$_GET['geom']."',900913), 4326)";  
 
$query2 = "INSERT INTO $schema (id,code,nom,geom) VALUES(DEFAULT,'".$_POST['id']."','".$_POST['nom']."','.$geom.')";

$result = pg_query($pg_connect ,$query2); 
?>

Hors ligne

 

#7 Thu 31 January 2013 13:37

Dof
Participant assidu
Lieu: Grenoble
Date d'inscription: 28 Oct 2009
Messages: 317
Site web

Re: Formulaire PHP : Probleme d'insersion de données dans postgis

Bonjour,
Comme l'a dit Nicolas, essayez avec des requêtes paramétrées, il est possible que cela vienne de la requête finale avec les apostrophes etc...
pouvez vous nous donner la valeur de $query2 ?

Hors ligne

 

#8 Thu 31 January 2013 14:08

Cornet Jérémie
Participant assidu
Lieu: Nouméa
Date d'inscription: 6 Apr 2008
Messages: 229

Re: Formulaire PHP : Probleme d'insersion de données dans postgis

Bonjour,

Code:

$query2 = "INSERT INTO $schema (code,nom,geom) VALUES('".$_POST['id']."','".$_POST['nom']."',$geom.)";

Pas besoin d'insérer la colonne id si c'est pour mettre la valeur par default.
Il ne faut pas mettre entre guillemet l'appel des fonction postgis ($geom).

Par ailleurs, comme le disait  Nicolas, votre code est extrêmement vulnérable aux injections SQL.
Il faut échapper toutes les variables provenant de l'utilisateur (POST et encore plus GET) avec les fonction php dédiées (pg_escape_string notamment).
C'est vraiment la base de la base de la sécurité web. Tel quel avec en plus une connexion postgresql administrateur un pirate débutant a accès à tout ce qu'il veut sur votre base (y compris en suppression, insertion, modification).

Dernière modification par Cornet Jérémie (Thu 31 January 2013 14:09)

Hors ligne

 

#9 Thu 31 January 2013 20:49

abdoudiouck
Participant occasionnel
Lieu: RENNES
Date d'inscription: 19 Aug 2010
Messages: 17

Re: Formulaire PHP : Probleme d'insersion de données dans postgis

Bonsoir je suis debutant en php
j ai deja preparé des securités sur le code mais pour l'instant j essaye d'avancer sur l'intégration de la géométrie c ' est la ou ca bug
Alors le code avec if... exit.. ca me donne l'erreure  Paramètre incorrectes

mais sans cette verification et sans la géométrie les données sont bien insérées

Code:

$schema = '"mdshema1".ville'; 

$geom = "ST_Transform(GeomFromText('".$_GET['geom']."',900913), 4326)";  
//Verification des champs: or die(print_r($query ->errorInfo())  
// Protection des données
$id = pg_escape_string($id);
$code = pg_escape_string($code);
$nom = pg_escape_string($nom);

$query = "INSERT INTO $schema (id,code,nom) VALUES(DEFAULT,'{$code}','{$nom}')" or die(print_r($query ->errorInfo()));

$result = pg_query($pg_connect ,$query);

Hors ligne

 

#10 Thu 31 January 2013 22:15

michel56
Participant assidu
Lieu: Lorient
Date d'inscription: 14 Jul 2012
Messages: 474

Re: Formulaire PHP : Probleme d'insersion de données dans postgis

Bonsoir,

je ne comprends pas cette ligne de code:

$schema = '"mdshema1".ville';

elle te revoie: 'mdshema1'.ville

tu devrais remplacer par:

Code:

$schema ="mdshema1.ville";

pour récupérer correctement le nom de ta base + la table: mdshema1.ville


Cordialement.

Dernière modification par michel56 (Thu 31 January 2013 22:54)


Opérateur cartographique & DAO & PHP.

Hors ligne

 

#11 Fri 01 February 2013 10:50

sigdu80
Participant actif
Date d'inscription: 2 Sep 2010
Messages: 112

Re: Formulaire PHP : Probleme d'insersion de données dans postgis

Bonjour,

les préventions niveau sécurité sont intéressantes, mais il faudrait en parler seulement quand il aura déjà réussi à avoir son code qui fonctionne.

Je suis d'accord avec Michel56.
Sinon, fais un echo de ton INSERT INTO pour voir la ligne finale. Quitte à la copier coller dans ton pgAdmin ensuite pour voir ce qu'il faudrait rectifier et corriger ton code en conséquence.

Quand cela fonctionnera, rediscute des éléments de sécurité et montre ton code à nouveau.

Hors ligne

 

#12 Fri 01 February 2013 11:54

Nicolas Ribot
Membre
Lieu: Toulouse
Date d'inscription: 9 Sep 2005
Messages: 1554

Re: Formulaire PHP : Probleme d'insersion de données dans postgis

Bonjour,

Pas tout a fait d'accord concernant les préconisations de sécurité:

1- On peut tres facilement oublier de revenir sur du code SQL qui marche lorsqu'on avance dans le dev de son application et qu'on rencontre potentiellement d'autres difficultés.
2- La bonne pratique peut parfois éviter des tâtonnements, comme ici avec la gestion des parametres.

Ceci dit, oui, il faut etre pragmatique et avancer wink

Code:

<?php
//Header de type texte pour l'encodage des accents
    header('Content-type: text/html; charset=UTF-8');     
// Parametre de  connection 
$pg_connect = pg_connect("host=localhost  port=5432 dbname=postgres user=postgres     password=bacspace"); 

$schema = '"mdshema1".ville';

$query2 = "INSERT INTO $schema (code,nom,geom) VALUES($1,$2,ST_Transform(GeomFromText($3,900913), 4326))";

$result = pg_prepare($dbconn, "myQuery", array($_POST['code'], $_POST['nom'], $_GET['geom']));

// attention ici: la valeur prise pour le champ 'code' etait POST['id']. Est-ce bien voulu ? 

$result = pg_execute($pg_connect, "myQuery", $query2); 
?>

Dans le contexte présent, il me semble que les prepared statements rendent le code plus clair, notamment en permettant de construire l'INSERT en une seule requete et en identifiant bien le parametre qui est recu du client: la geoemtrie sous forme textuelle.

Nico

Hors ligne

 

#13 Fri 01 February 2013 11:56

Dof
Participant assidu
Lieu: Grenoble
Date d'inscription: 28 Oct 2009
Messages: 317
Site web

Re: Formulaire PHP : Probleme d'insersion de données dans postgis

Sous quelle forme récupérez vous la géométrie?
Est-ce en WKT? (de ce style : POINT( 12 34) )
Si c'est le cas, essayez cela dans un premier temps

Code:

<?php
try
{
    $bdd = new PDO('pgsql:host=localhost;port=5432;dbname=ma_db;user=root;password=mypass');
}
catch(Exception $e)
{
        die('Erreur : '.$e->getMessage());
}
 
$ma_geom_wkt = 'POINT(45 5)';
 
$req = $bdd->prepare('INSERT INTO :schema(code,nom,geom) VALUES(:code, :nom,:geom)');
$req->execute(array(
    'schema' => 'mdshema1.ville',
    'code' => $code,
    'nom' => $nom,
    'geom' => "ST_GeomFromText('" .$ma_geom_wkt. "',4326)";

    ));
    
?>

Hors ligne

 

#14 Fri 01 February 2013 12:06

abdoudiouck
Participant occasionnel
Lieu: RENNES
Date d'inscription: 19 Aug 2010
Messages: 17

Re: Formulaire PHP : Probleme d'insersion de données dans postgis

Bonjour et merci pour ces renseignements
Pour michel56 le code est du php et ca ne change rien c étais juste pour stocker la table dans une variable . Sous pgadmin elle fonctionne tres bien la requete

voici l'erreur que j ai avec mon code

Code:

Warning: pg_query() [function.pg-query]: Query failed: ERROR: parse error - invalid geometry LINE 1: ...1".ville (id,code,nom,geom) VALUES(DEFAULT,'','', 'ST_Transf... ^ HINT: "ST" <-- parse error at position 2 within geometry in /Applications/XAMPP/xamppfiles/htdocs/php/requetteprep.php on line 30

L'erreure vient de la variable $geom  j'ai testé ces deux la en vain

Code:

$geom = "ST_Transform(ST_GeomFromText('".$_POST['geom']."',900913), 4326)"; 
$geom1 ="ST_Transform(ST_GeomFromText('POINT('||latitude||' '||longitude||')',4326))";

Hors ligne

 

#15 Fri 01 February 2013 12:38

sigdu80
Participant actif
Date d'inscription: 2 Sep 2010
Messages: 112

Re: Formulaire PHP : Probleme d'insersion de données dans postgis

J'ai du mal à suivre.

Tu dis :

abdoudiouck a écrit:

Bonjour et merci pour ces renseignements
... Sous pgadmin elle fonctionne tres bien la requete

voici l'erreur que j ai avec mon code

Code:

Warning: pg_query() [function.pg-query]: Query failed: ERROR: parse error - invalid geometry LINE 1: ...1".ville (id,code,nom,geom) VALUES(DEFAULT,'','', 'ST_Transf... ^ HINT: "ST" <-- parse error at position 2 within geometry in /Applications/XAMPP/xamppfiles/htdocs/php/requetteprep.php on line 30


Dans pgadmin, ta requête fonctionne, mais pas dans ton code ?
Peux-tu nous montrer le résultat d'un echo ?


Nicolas Ribot a écrit:

1- On peut tres facilement oublier de revenir sur du code SQL qui marche lorsqu'on avance dans le dev de son application et qu'on rencontre potentiellement d'autres difficultés.


Je suis d'accord avec toi MAIS (car il y a souvent un MAIS wink ), il dit être débutant en php. C'est pour çà que je réagis différemment par rapport à çà.
Je pensais donc à : faisons en sorte que cela fonctionne PUIS sécurisons. Pour le prochain script qu'il fera, il faudrait essayer de raisonner comme ce que tu disais (même si cela va être dur au début comme il débute).

A moins que quand tu es commencé à apprendre le php, tu écrivais des choses super sécurisées dès le début, tu comprenais la syntaxe, les astuces et en plus toutes les subtilités pour pouvoir faire de la sécurité dès tes 1ers scripts ! Si c'est le cas je m'incline smile

Hors ligne

 

#16 Fri 01 February 2013 13:16

Nicolas Ribot
Membre
Lieu: Toulouse
Date d'inscription: 9 Sep 2005
Messages: 1554

Re: Formulaire PHP : Probleme d'insersion de données dans postgis

sigdu80 a écrit:

A moins que quand tu es commencé à apprendre le php, tu écrivais des choses super sécurisées dès le début, tu comprenais la syntaxe, les astuces et en plus toutes les subtilités pour pouvoir faire de la sécurité dès tes 1ers scripts ! Si c'est le cas je m'incline smile


Oh que non, hélas big_smile

Hors ligne

 

#17 Fri 01 February 2013 13:26

michel56
Participant assidu
Lieu: Lorient
Date d'inscription: 14 Jul 2012
Messages: 474

Re: Formulaire PHP : Probleme d'insersion de données dans postgis

Bonjour,

je pense que tu dois absolument mettre: $schema ="mdshema1.ville";

mais une question: quel est le nom de ta base de donnée?

dans ton code de connexion elle s’appelle "postgres" (dbname=postgres)
et après tu l'appelles "mdshema1"

Je pense que "mdshema1" est un schéma que tu as créé mais peut-on l'utiliser pour se connecter avec PHP?
teste avec:

Code:

$schema ="postgres.ville";

si ta base s'appelle réellement "postgres"


et pour faire une insertion tu n'es pas obligé de remettre le nom de la base de donnée. (elle est sélectionnée avec les paramètres de connexion)

Code:

$schema ="ville";

regarde cette doc sur les schémas: http://docs.postgresql.fr/9.0/ddl-schemas.html


Bon courage.

Dernière modification par michel56 (Fri 01 February 2013 14:12)


Opérateur cartographique & DAO & PHP.

Hors ligne

 

#18 Fri 01 February 2013 17:17

abdoudiouck
Participant occasionnel
Lieu: RENNES
Date d'inscription: 19 Aug 2010
Messages: 17

Re: Formulaire PHP : Probleme d'insersion de données dans postgis

Voici le code que j utilise

Code:

<?php
//Header de type texte pour l'encodage des accents
    header('Content-type: text/html; charset=UTF-8');    
    
// Parametre de  connection  
$host = 'localhost';
$database = 'postgres';
$column = 'geom';
$user = 'postgres';
$pass = 'bacspace';
 
$pg_connect = pg_connect("host=$host dbname=$database user=$user password=$pass");

// Acces a la table ville  
$schema = '"mdshema1".ville'; 
// Transformation géométrique
$geom = "ST_Transform(ST_GeomFromText('".$_POST['geom']."',900913), 4326)"; 
$geom1 ="ST_Transform(ST_GeomFromText('POINT('||latitude||' '||longitude||')',4326))";
//Verification des champs: or die(print_r($query ->errorInfo())  
// Protection des données
$id = pg_escape_string(utf8_encode($_POST['id'])); 
$code = pg_escape_string(utf8_encode($_POST['code'])); 
$nom = pg_escape_string(utf8_encode($_POST['nom'])); 
 

 
//Requete d'insertion
$query = "INSERT INTO $schema (id,code,nom) VALUES(DEFAULT,'{$code}','{$nom}')" or die(print_r($query ->errorInfo())); 
$result = pg_query($pg_connect ,$query); 

// echo "INSERT INTO mdshema1.ville (id,code,nom) VALUES(DEFAULT,'{$code}','{$nom}')";


?>

Alors pour répondre a la question de $schema  c est juste une variable pour acceder a la table qui contient les donnees ville
Je suis sur mac et pour eviter les problemes de quote dans ma requete j'ai appeler ca schema
sinon l'erreur est la suivante 

Code:

Warning: pg_query() [function.pg-query]: Query failed: ERROR: relation "ville" does not exist LINE 1: INSERT INTO ville (id,code,nom) VALUES(DEFAULT,'','') ^ in /Applications/XAMPP/xamppfiles/htdocs/webmapping/appli/villephp/requetteprep.php on line 30

En incluant echo insert ca me donne ca

Code:

INSERT INTO mdshema1.ville (id,code,nom) VALUES(DEFAULT,'','')

En rajoutant la géometrie comme ca

Code:

<?php
//Header de type texte pour l'encodage des accents
    header('Content-type: text/html; charset=UTF-8');    
    
// Parametre de  connection  
$host = 'localhost';
$database = 'postgres';
$column = 'geom';
$user = 'postgres';
$pass = 'bacspace';
 
$pg_connect = pg_connect("host=$host dbname=$database user=$user password=$pass");

// Acces a la table ville  
$schema = '"mdshema1".ville'; 
// Transformation géométrique
$geom = "ST_Transform(ST_GeomFromText('".$_POST['geom']."',900913), 4326)"; 
$geom1 ="ST_Transform(ST_GeomFromText('POINT('||latitude||' '||longitude||')',4326))";
//Verification des champs: or die(print_r($query ->errorInfo())  
// Protection des données
$id = pg_escape_string(utf8_encode($_POST['id'])); 
$code = pg_escape_string(utf8_encode($_POST['code'])); 
$nom = pg_escape_string(utf8_encode($_POST['nom'])); 
 

 
//Requete d'insertion
$query = "INSERT INTO $schema (id,code,nom,geom) VALUES(DEFAULT,'{$code}','{$nom}',$geom)" or die(print_r($query ->errorInfo())); 
$result = pg_query($pg_connect ,$query); 

// echo "INSERT INTO mdshema1.ville (id,code,nom) VALUES(DEFAULT,'{$code}','{$nom}')";


?>

j ai cette erreur

Code:

Warning: pg_query() [function.pg-query]: Query failed: ERROR: parse error - invalid geometry HINT: "" <-- parse error at position 1 within geometry in /Applications/XAMPP/xamppfiles/htdocs/webmapping/appli/villephp/requetteprep.php on line 29

Hors ligne

 

#19 Fri 01 February 2013 17:39

Cornet Jérémie
Participant assidu
Lieu: Nouméa
Date d'inscription: 6 Apr 2008
Messages: 229

Re: Formulaire PHP : Probleme d'insersion de données dans postgis

Une question bête mais ce script est bien appelé par un formulaire en méthode POST (d'ailleurs il y a un GET aussi dans votre script) ?

Merci de rajouter provisoirement

Code:

print_r($_POST); echo "<br />";print_r($_GET);

en tout début de script et de poster ce que ça affiche.

Hors ligne

 

#20 Fri 01 February 2013 17:39

Nicolas Ribot
Membre
Lieu: Toulouse
Date d'inscription: 9 Sep 2005
Messages: 1554

Re: Formulaire PHP : Probleme d'insersion de données dans postgis

La valeur $geom doit probablement etre vide.

Il faudrait que vous debuggiez toutes les variables utilisées dans votre script.

Nico

Hors ligne

 

#21 Fri 01 February 2013 18:03

abdoudiouck
Participant occasionnel
Lieu: RENNES
Date d'inscription: 19 Aug 2010
Messages: 17

Re: Formulaire PHP : Probleme d'insersion de données dans postgis

En fin sinon en ecrivant meme INSERT INTO mdschema1.ville la requette marche mais c est juste geom qui pose probleme

Hors ligne

 

#22 Fri 01 February 2013 18:58

michel56
Participant assidu
Lieu: Lorient
Date d'inscription: 14 Jul 2012
Messages: 474

Re: Formulaire PHP : Probleme d'insersion de données dans postgis

J'ai essayé de simplifier le code au minimum:


Code:

<?php
// Parametre de  connection  
$host = 'localhost';
$database = 'postgres';
$user = 'postgres';
$pass = 'bacspace';
 
$pg_connect = pg_connect("host=$host port=5432 dbname=$database user=$user password=$pass");

// Transformation géométrique
$geom = "ST_Transform(ST_GeomFromText(".$_POST['geom'].",900913), 4326)"; 

// Protection des données
$id = pg_escape_string(utf8_encode($_POST['id'])); 
$code = pg_escape_string(utf8_encode($_POST['code'])); 
$nom = pg_escape_string(utf8_encode($_POST['nom'])); 
  
//Requete d'insertion
$query = "INSERT INTO ville (id,code,nom,geom) VALUES($id, $code , $nom , $geom)";

pg_query($pg_connect ,$query);
?>

Je vois pas à quoi correspond "mdshema1"

Cordialement.

Dernière modification par michel56 (Fri 01 February 2013 19:05)


Opérateur cartographique & DAO & PHP.

Hors ligne

 

#23 Fri 01 February 2013 19:06

abdoudiouck
Participant occasionnel
Lieu: RENNES
Date d'inscription: 19 Aug 2010
Messages: 17

Re: Formulaire PHP : Probleme d'insersion de données dans postgis

Merci je viens de le tester et ca me renvoie l'erreur suivante je vais essayer de voir la biblio php et postgis

Code:

Warning: pg_query() [function.pg-query]: Query failed: ERROR: syntax error at or near "," LINE 1: INSERT INTO ville (id,code,nom,geom) VALUES(, , , ST_Trans... ^ in /Applications/XAMPP/xamppfiles/htdocs/webmapping/appli/villephp/requetteprep2.php on line 21

Hors ligne

 

#24 Fri 01 February 2013 19:21

michel56
Participant assidu
Lieu: Lorient
Date d'inscription: 14 Jul 2012
Messages: 474

Re: Formulaire PHP : Probleme d'insersion de données dans postgis

regarde comme ça:

Code:

<?php
// Parametre de  connection  
$host = 'localhost';
$database = 'postgres';
$user = 'postgres';
$pass = 'bacspace';
 
$pg_connect = pg_connect("host=$host port=5432 dbname=$database user=$user password=$pass");

// Transformation géométrique
$geom = "ST_Transform(ST_GeomFromText(".$_POST['geom'].",900913), 4326)"; 

// Protection des données
$id = pg_escape_string(utf8_encode($_POST['id'])); 
$code = pg_escape_string(utf8_encode($_POST['code'])); 
$nom = pg_escape_string(utf8_encode($_POST['nom'])); 
echo $_POST['geom']."1<br />";
echo $_POST['id']."2<br />";
echo $_POST['code']."3<br />";
echo $_POST['nom']."4<br />";
echo $id."5<br />";
echo $code."6<br />";
echo $nom."7<br />";
echo $geom."8<br />";
exit;
//Requete d'insertion
$query = "INSERT INTO ville (id,code,nom,geom) VALUES($id, $code , $nom , $geom)";

pg_query($pg_connect ,$query);
?>

Dernière modification par michel56 (Fri 01 February 2013 21:46)


Opérateur cartographique & DAO & PHP.

Hors ligne

 

#25 Sat 02 February 2013 14:21

abdoudiouck
Participant occasionnel
Lieu: RENNES
Date d'inscription: 19 Aug 2010
Messages: 17

Re: Formulaire PHP : Probleme d'insersion de données dans postgis

Merci pour cette eclerage michel56 Je viens de tester votre code en fait ca me donne le resultat suivant : 1

Code:

1
2
3
4
5
6
7
ST_Transform(ST_GeomFromText(,900913), 4326)8

et si j énleve echo c est une erreur de syntax je vais essayer de creuser ca

Code:

Warning: pg_query() [function.pg-query]: Query failed: ERROR: syntax error at or near "," LINE 1: INSERT INTO ville (id,code,nom,geom) VALUES(, , , ST_Trans... ^ in /Applications/XAMPP/xamppfiles/htdocs/webmapping/appli/villephp/requetteprep2.php on line 29

Hors ligne

 

#26 Sat 02 February 2013 15:28

michel56
Participant assidu
Lieu: Lorient
Date d'inscription: 14 Jul 2012
Messages: 474

Re: Formulaire PHP : Probleme d'insersion de données dans postgis

il y a surement un problème sur le formulaire qui envoie les données.
Tu les envoies bien en POST et non en GET et mis le même nom à tes champs.

et dans le code

Code:

ST_GeomFromText(".$_POST['geom'].",900913)

il manque le type de géométrie. (à moins que tu l'envoies avec ton formulaire)

Dernière modification par michel56 (Sat 02 February 2013 15:45)


Opérateur cartographique & DAO & PHP.

Hors ligne

 

Pied de page des forums

Powered by FluxBB