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 24/03/2013 23:26:33

doha-i2m
Membre

insertion d'un objet en fonction du nom de la table selectionné

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

Hors ligne

#2 25/03/2013 00:05:02

gleu
Administrateur

Re : insertion d'un objet en fonction du nom de la table selectionné

Ne pas utiliser de guillemets simples autour du nom de la table. Ne pas utiliser de guillemets simples pour les valeurs entières.

Cette fois-ci, c'était simple. La prochaine fois, pensez à donner le message d'erreur pour qu'on n'ait pas à jouer aux devinettes.


Guillaume.

Hors ligne

Pied de page des forums