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Ă© ?

#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: 10053
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: 1566

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: 1566

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: 1566

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: 1566

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

Copyright Association GeoRezo