[Cartoweb-users] edit plugin
Claire Chastagnol
chastagnol.claire at wanadoo.fr
Fri Sep 26 08:01:19 EDT 2008
Ok, I just changed a bit the code you gave me and it's working perfectly:
$counter = 1;
foreach ($feature->attributes as $key => $val) {
$val = ($val == '') ? 'NULL' :
sprintf("'%s'", Encoder::decode(Utils::addslashes($val),
'config'));
if (in_array($key, $editableAttributes)) {
$attributesFieldsSql .= "$key";
$attributesValuesSql .= "$val";
if ($counter < sizeof($feature->attributes)) {
$attributesFieldsSql .= ",";
$attributesValuesSql .= ",";
}
}
$counter ++;
}
Thanks!
Claire
> Message du 26/09/08 12:15
> De : "Oliver Christen"
> A : "Claire Chastagnol" , cartoweb-users at lists.maptools.org
> Copie à :
> Objet : Re: [Cartoweb-users] edit plugin
>
> try something like this: $counter = 0;
> foreach ($feature->attributes as $key => $val) {
> $val = ($val == '') ? 'NULL' :
> sprintf("'%s'", Encoder::decode(Utils::addslashes($val),
> 'config'));
> if (in_array($key, $editableAttributes)) {
> $attributesFieldsSql .= "$key";
> $attributesValuesSql .= "$val";
> }
> if ($counter < sizeof($feature->attributes)) {
> $attributesFieldsSql .= ",";
> $attributesValuesSql .= ",";
> }
> $counter ++;
> } ----- Original Message ----- From: Claire Chastagnol To: cartoweb-users at lists.maptools.org Sent: Friday, September 26, 2008 12:08 PM Subject: [Cartoweb-users] edit plugin
> Hi everybody,
>
> I'm trying to extend the edit plugin because I need to update some geographic data with atrributes which come from a different table.
>
>
>
> The sql query generated isn't right : I have some "," problems:
> I have this error message indeed:
>
>
Userinfo: INSERT INTO public.evenements_evolution (id_route, id_ev, id_etat, localisation_pr, date, heure, description, )
> VALUES ('850', '2', '2', 'pr8 pr9', '1 octobre 08', '12h', 'chaussee glissante', ) [nativecode=ERREUR: erreur de syntaxe sur ou près de « ) »
> LINE 1: ..._etat, localisation_pr, date, heure, description, )VALUES ('...
> This is the code I put in my extension for updating:
>
> protected function updateFeature($feature) {
> $db = $this->getDb($this->layer);
>
> $editableAttributes = $this->getEditableAttributes($this->attributes);
>
> $this->editSchema = 'public';
> $this->editTable = $this->getMetadataValueString($this->layer, 'edit_table');
> $editTables = explode(',', $this->editTable);
>
>
> if (isset($feature->attributes) && $feature->attributes) {
> $attributesFieldsSql = $attributesValuesSql = '';
> foreach ($feature->attributes as $key => $val) {
> $val = ($val == '') ? 'NULL' :
> sprintf("'%s'", Encoder::decode(Utils::addslashes($val),
> 'config'));
> if (in_array($key, $editableAttributes)) {
> $attributesFieldsSql .= "$key, ";
> $attributesValuesSql .= "$val, ";
> }
> }
> if ($attributesValuesSql == '')
> $attributesValuesSql = NULL;
> } else {
> $attributesFieldsSql = '';
> $attributesValuesSql = NULL;
> }
> $sql = sprintf ('INSERT INTO %s.%s (%s)' .
> "VALUES (%s) ",
> $this->editSchema,
> $editTables[1],
> $attributesFieldsSql,
> $attributesValuesSql
> );
> $this->log->debug($sql);
> $queryId = $db->query($sql);
>
> Utils::checkDbError($queryId, 'Unable to insert feature in edit database');
> return $queryId;
>
> }
>
> How can I do? (I tried with the substr function but without success...)
>
> Thanks.
> Claire
>
>
>
> >
>
>
_______________________________________________
> Cartoweb-users mailing list
> Cartoweb-users at lists.maptools.org
> http://lists.maptools.org/mailman/listinfo/cartoweb-users
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.maptools.org/pipermail/cartoweb-users/attachments/20080926/11396fec/attachment-0001.html
More information about the Cartoweb-users
mailing list