Vous n'êtes pas identifié(e).
Merci bien , je vais tester cela, je suis en 9.1 normalement ça va marcher.
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
Salut,
Savez-vous comment appeler une fonction stockée dans postgresql avec php.
Merci.
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
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
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
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
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
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é?
Merci pour l'aide admins,vous êtes très gentils
ERREUR: droit refusé pour la relation batiment
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!!
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?
oui, j'ai résolu le problème , c'était un boucle infini dans la fonction. merci
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 connaissez vous c'est quoi le problème! aidez moi SVP
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
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.
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.
Oui j'ai changé le type c_name au text et ça marche très bien
Merciii infiniment pour votre aide.
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
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)"
^
j'ai effacé la SELECT devant le EXECUTE , mais une autre erreur apparaissent
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)
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é.
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!