PostgreSQL La base de donnees la plus sophistiquee au monde.

Forums PostgreSQL.fr

Le forum officiel de la communauté francophone de PostgreSQL

Vous n'êtes pas identifié(e).

#1 Re : PL/pgSQL » stockage et parcourt d'un tableau dynamique » 15/04/2013 15:38:25

Merci bien , je vais tester cela, je suis en 9.1 normalement ça va marcher.

#2 PL/pgSQL » stockage et parcourt d'un tableau dynamique » 15/04/2013 14:53:53

doha-i2m
Réponses : 2

Salut,
est-ce que je peux stocker et parcourir un tableau dynamique en pgsql, si oui comment faire?
par exemple :
je déclare (dans une fonction) un tableau : tab text ARRAY[];
à chaque fois je veux stocker une variable.
puis je fais le parcourt.

Merci d'avance

#4 PHP » intégration d'une fonction stockées Pl/PgSQL dans PHP » 14/04/2013 19:15:26

doha-i2m
Réponses : 2

Salut,
Savez-vous comment appeler une fonction stockée dans postgresql avec php.
Merci.

#5 Re : PgAdmin3 » message d'une fonction trigger » 10/04/2013 13:17:29

Oui, sur mon application je me demande s'il y a une méthode pour tester sur le client_min_messages, fonction de genre "pg_result_error_field " .. ou mettre le message dans un alert script.. bref une fonction qui contient ce message!
Merci

#6 Re : PgAdmin3 » message d'une fonction trigger » 09/04/2013 12:27:19

Merciii , le message s'affiche mais est-ce-que je peux l'afficher dans un messagebox en tant que alert par exemple. En plus je veux tester dans le code php , si le resultat du trigger est une exception alors faire tel chose. y t-il une fonction pour celà?
Merci d'avance

#7 Re : PgAdmin3 » message d'une fonction trigger » 08/04/2013 21:46:45

j'ai cherché dans les documentations comment configurer le client_min_messages mais ce n'est pas clair.Est-ce-que vous avez une idée comment ça se fait!
merci d'avance

#8 PgAdmin3 » message d'une fonction trigger » 07/04/2013 17:13:59

doha-i2m
Réponses : 6

Bonjour,
est-t-il est possible d'afficher les messages d'un trigger (notice et exception) définit dans postgresql sous une interface php ?
Merci

#9 PHP » insertion d'un objet en fonction du nom de la table selectionné » 24/03/2013 23:26:33

doha-i2m
Réponses : 1

Bonjour,
Voici mon problème, je voudrais lister les noms des tables que j'avais dans ma base dans un menu déroulant, l'utilisateur choisi la table dans laquelle il va insérer l'objet, un formulaire sera alors affiché contenant des champs des  attributs de cette table pour les remplir, l'insertion s'effectue. voilà mon code pour le moment:

<?php
echo "<html>";
echo "<body>";
echo "<form name='ajout_obj' action='test1.php' method='post'>";
echo "Classe :";
$dbconn = pg_connect("host=localhost port=5432 dbname=postgis user=user password=root")or die("Connexion impossible");
$result = pg_query ($dbconn, "SELECT cname  FROM classofclasses");
echo " <select name='classe'>";
while ($row = pg_fetch_row($result)) {
echo "<option value='$row[0]' name='$row[0]'> $row[0]</option>";
}
echo "</select>";
echo "<INPUT name='valider' type='submit' value='Valider'>";
echo "</form>";
echo "</body>";
echo "</html>";
?>

<?php
$dbconn = pg_connect("host=localhost port=5432 dbname=postgis user=user password=root")or die("Connexion impossible");

echo "<form name='ajout_obj1' action='test2.php'  method='post'>";

if(isset($_POST['valider'])){

$classe = $_POST['classe'];
echo "classe: $classe <br>";
$res = pg_query ($dbconn, "SELECT *  FROM $classe ");
$i = pg_num_fields($res);
for ($j = 0; $j < $i; $j++) {
     $fieldname = pg_field_name($res, $j);
     echo "$fieldname\n:";
     echo "<input type='text' name=$fieldname>";
     echo "<br>";

echo "<INPUT name='valider1' type='submit' value='Valider'>";
echo "</form>";
echo "</body>";
echo "</html>";
}

Le problème est ici! lors de la récupération et l'insertion des données:

if(isset($_POST['valider1']))
{
$classe = $_POST['classe'];
$res = pg_query ($dbconn, "SELECT *  FROM $classe ");
$i = pg_num_fields($res);
for ($j = 0; $j < $i; $j++) {
     $fieldname[j] = pg_field_name($res, $j);
     }
$id = $_POST['$fieldname[0]'];

$name=$_POST['$fieldname[1]'];


$res=pg_query($dbconn, "INSERT INTO '$classe' VALUES ('$id','$name')");
if (!$res) {
   echo "erreur";
} else {

    echo "insertion effectué";
}
}

Au début tout ça marcha bien , les attributs sont affichés, le problème réside dans le dernier code au niveau du nom de la table ($classe) et au niveau de la récupération des noms des champs!
Je suis débutante :\ heelp plz

#10 PgAdmin3 » nom de l'attribut modifié » 16/03/2013 18:20:40

doha-i2m
Réponses : 1

Salut,
Ben, il faut vous expliquer tout d'abord ce que je suis en train de faire, je veux contrôler la valeur de quelques attributs dans ma base par exemple longueur d'un chemin doit être supérieur à 100 mètres ,salaire d'un employé sup à une valeur X .Pour cela j'ai créer une table qui contient les colonnes (id,table[nom de la table],attribut[nom de l'atribut],relation[sup,inf..],valeur),La fonction tigger que je doit développer va être globale pour toutes modification effectué,donc il faut,quand  une modification est effectué pour un attribut,il faut comparer le nom de l'attribut modifié avec les  noms des attributs figurant dans la table des contraintes pour vérifier la nouvelle valeur si elle respecte la contrainte ou non.
Ma question: Est-ce-que je peux détecter le nom de l'attribut modifié?

#11 Re : PgAdmin3 » interface utilisateur pour PgAdmin3 » 15/03/2013 14:48:24

Merci pour l'aide admins,vous êtes très gentils smile

#12 Re : PgAdmin3 » interface utilisateur pour PgAdmin3 » 15/03/2013 12:53:43

ERREUR: droit refusé pour la relation batiment

#13 Re : PgAdmin3 » interface utilisateur pour PgAdmin3 » 15/03/2013 10:54:36

oué c'est ça le problème, pas de message d'erreur si j'enlève les lignes
if (!$result) {
  echo "Erreur durant la requête.\n";
la page est vide,blanche!!

#14 Re : PgAdmin3 » interface utilisateur pour PgAdmin3 » 15/03/2013 10:06:49

la connexion est établit mais il n'affiche pas les données depuis la base :

<?php
$dbconn = pg_connect("host=localhost port=5432 dbname=postgis user=user password=root");
if(!$dbconn)
echo "connexion non établit.\n";
else
echo "connexion  établit.\n";


$result = pg_query ($conn, "SELECT id,bname  FROM batiment");
if (!$result) {
  echo "Erreur durant la requête.\n";
  exit;
}
while ($row = pg_fetch_row($result)) {
  echo "id: $row[0]  name: $row[1]";
  echo "<br />\n";
}

?>

Pour la connexion il affiche "connexion établit" et pour l'autre requete il affiche ""Erreur durant la requête"
A votre avis c'est quoi le problème?

#15 Re : PgAdmin3 » pgAdmin se bloque! » 13/03/2013 15:23:49

oui, j'ai résolu le problème , c'était un boucle infini dans la fonction. merci

#16 PgAdmin3 » pgAdmin se bloque! » 13/03/2013 10:41:40

doha-i2m
Réponses : 2

Bonjour,
J'ai eu un problème lors de l’exécution de ma requête, dès que je clique sur le bouton vert pour exécuter la requête il se bloque, je ferme la fenêtre sql et je répète parfois ça marche mais la deuxième non  sad connaissez vous c'est quoi le problème! aidez moi SVP

#17 Re : PgAdmin3 » interface utilisateur pour PgAdmin3 » 05/03/2013 00:21:20

effectivement je veux faire moi même cette interface avec php5. Est-ce-que vous avez une idée comment je peux faire la connexion entre le php5 et ma base dans PgAdmin III ?
Merci

#18 Re : PgAdmin3 » interface utilisateur pour PgAdmin3 » 15/02/2013 15:19:54

je travaille avec pgadmin3, j'ai fait une base de données et quelques fonctions et maintenant mon encadreur m'a demandé de faire une interface utilisateur pour interroger cette base.

#19 PgAdmin3 » interface utilisateur pour PgAdmin3 » 14/02/2013 22:19:56

doha-i2m
Réponses : 13

Bonjour,
Je veux faire une interface utilisateur pour la saisie et la mise à jour des données géographiques pour PgAdmin3, a votre avis quel est la meilleure application qui peut se connecter avec la base d'PgAdmin ?
Merci d'avance.

#20 Re : PL/pgSQL » problème de requêtes imbriquées » 11/02/2013 17:38:51

Oui j'ai changé le type c_name au text et ça marche très bien smile
Merciii infiniment pour votre aide.

#21 Re : PL/pgSQL » problème de requêtes imbriquées » 11/02/2013 16:31:28

le problème n'est pas au niveau des enregistrements car ils sont insérés correctement. mais apparemment le type 'record' contient les valeurs avec des parenthèses :

begin
FOR c_name IN SELECT cname FROM classofgeometry WHERE eat = ''-''
LOOP 
  RAISE notice ''Table %'',c_name;
END LOOP;

affiche :NOTICE:  Table (parc_the_geom)
par contre si je met la valeur c_name dans une autre variable de type text:

FOR c_name IN SELECT cname FROM classofgeometry WHERE eat = ''-''
LOOP
   SELECT cname into name FROM classofgeometry WHERE eat = ''-'';
  RAISE notice ''Table %'',name;
END LOOP;

affiche: NOTICE:  Table parc_the_geom

#22 Re : PL/pgSQL » problème de requêtes imbriquées » 11/02/2013 13:24:18

enfin l'exécution marche dans le bon chemin mais le sys cherche la table ayant le nom "(parc_the_geom)" avec les cotes et les parenthèses pas parc_the_geom directement! pourquoi?
ERREUR:  la relation « (parc_the_geom) » n'existe pas
LINE 1: SELECT the_geom FROM "(parc_the_geom)"
                                               ^

#23 Re : PL/pgSQL » problème de requêtes imbriquées » 11/02/2013 12:55:57

j'ai effacé la SELECT devant le EXECUTE , mais une autre erreur apparaissent hmm
ERREUR:  spécificateur de conversion « i » inconnu

je crois qu'il ne comprend pas que le "i" est la valeur de ième c_name !

(désolé si je vous ai bcq dérangé julien)

#24 Re : PL/pgSQL » problème de requêtes imbriquées » 11/02/2013 11:37:24

Bonjour,
merci rjuju mais  il y a une erreur de synthaxe dans votre exemple:
ERREUR:  erreur de syntaxe sur ou près de « ( » au niveau de la ligne "FOR thegeom IN SELECT EXECUTE format('SELECT the_geom FROM %I',c_name)"

"SELECT EXECUTE format" n'est pas accepté.

#25 Re : PL/pgSQL » problème de requêtes imbriquées » 08/02/2013 16:37:33

Moi aussi je suis pas fan des requêtes imbriquées mais c ma seule solution. J'ai fait la sous-requête de la clause from  pour obtenir le nom de la table (classeofgeometry contient des noms de classes), le contexte de cette requête est un boucle "for" chaque classe de la table classofgeometry, on veut accéder à l'attribut "the_geom" de chaque table.(on veut parcourir tous les valeurs de "the_geom" de tous les tables de la bases).

voilà les 2 boucles (un boucle pour parcourir les noms de tables de la base et le 2ème pour parcourir les valeurs de l'attribut "the_geom" que chaque table en contient) :
for rec1 in select cname from classofgeometry where eat='-'
loop
select cname into c_name from classofgeometry where eat='-';
for rec2 in select the_geom from c_name
loop
...

on veut les rendre dans 1 seul boucle parce que le 2ème boucle de rec2 est fausse; c_name détécté du 1er curseur n'est pas un nom de table(pas accépté par le système). Donc la solution est la suivante:
for rec2 in select  the_geom from (select cname from classofgeometry where eat='-')as c_name
loop
....
je ne voit pas que cette requête est fausse, dans sql elle est accéptée, et même dans les tuto pg/sql; il est permis de faire un sous select au niveau de la clause from!

Pied de page des forums

Propulsé par FluxBB