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).

#2 Re : PL/pgSQL » Utilisation de RETURNING » 12/06/2012 22:22:33

Donc si je fais

<?php

$dbconnect=pg_connect("host=localhost dbname=Stanhome user=postgres password=ifesuh2m");


    $num_cli=$_POST['num_client'];
    $total=$_POST['total_ht'];
   
    $insert_commandes="INSERT INTO commandes (num_com, total_com, num_pers) VALUES (DEFAULT,'".$total."','".$num_cli."') RETURNING  num_com"; // ?????

     $result=pg_query($dbconnect, $insert_commandes);

    while ($row = pg_fetch_array($result)) {
    echo $row['num_com'];
        }


      
    $insert_ok=true;
   
foreach($_POST['num_produit'] as $cle=>$numproduit){
   
        $qteproduit    = $_POST['qte_produit'][$cle];
       
        $insert_composer="INSERT INTO composer VALUES ('".$qteproduit."', '".$row['num_com']."','".$numproduit."')";

        if(!$insert_composer) {$insert_ok=false;}



    //}
}
    pg_query($dbconnect, $insert_composer);
//message
     if($insert_ok){
        echo "Commande enregistrée";
    }else{
        echo "PB Commande non enregistrée";
    }   
?>

Cela fonctionne ? J'ai un peu de mal à comprendre l'idée là.

#3 PL/pgSQL » Utilisation de RETURNING » 12/06/2012 21:15:13

Kevfou
Réponses : 5

Bonjour,

J'essaie, en vain, de faire une double requête d'insertion avec pour la 2éme la récupération de la clé primaire créer dans la 1ere requête.

Je m'explique avec un exemple:

<?php

$dbconnect=pg_connect("host=localhost dbname=Stanhome user=postgres password=.....");

$num_cli=$_POST['num_client'];
$total=$_POST['total_ht'];

$insert_commandes="INSERT INTO commandes (num_com, total_com, num_pers) VALUES (DEFAULT,'".$total."','".$num_cli."') RETURNING num_com";

pg_query($dbconnect, $insert_commandes);

$insert_ok=true;

foreach($_POST['num_produit'] as $cle=>$numproduit){

$qteproduit    = $_POST['qte_produit'][$cle];
$insert_composer="INSERT INTO composer VALUES ('".$qteproduit."', num_com,'".$numproduit."')";

if(!$insert_composer) {$insert_ok=false;}

}
pg_query($dbconnect, $insert_composer);
if($insert_ok){
echo "Commande enregistrée";
}else{
echo "PB Commande non enregistrée";
}   
?>

Donc l'idée, dans la première requête:

$insert_commandes="INSERT INTO commandes (num_com, total_com, num_pers) VALUES (DEFAULT,'".$total."','".$num_cli."') RETURNING num_com";

Je dois insérer ceci dans ma bdd et récupérer (avec RETURNING ???) la clé primaire auto-incrémenté' (avec le DEFAULT) pour ensuite l'insérer dans la 2éme requête:

Citation:

$insert_composer="INSERT INTO composer VALUES ('".$qteproduit."',ICI,'".$numproduit."')";

Hors comment faire cela ?
Merci de votre aide smile

#4 Re : Installation » "L'initialisation du cluster de bases de données à échoué" » 30/01/2012 13:57:43

Aucun soucis.
Au final cela fonctionne donc tout vas bien. smile

Je profites en même temps de ton aide pour une derniere chose (je l'espères)
J'essaie de faire une restauration d'une .backup mais en vain.

1/ Je crées une base de données.
2/ Clique droit sur celle-ci "Restaurer"
3/ Je choisis le format "personnalisé ou tar"
4/ je sélectionne mon fichier .backup
5/ Je ne peux pas cliquer sur le bouton restauration, pourquoi ?

Ceci doit être mon dernier problème je penses, je n'ai jamais eu à faire de restauration de BDD sous pgAdmin auparavant.

#5 Re : Installation » "L'initialisation du cluster de bases de données à échoué" » 30/01/2012 13:00:19

pgAdmin fonctionne parfaitement bien avec l'utilisateur machine.

Merci beaucoup rjuju, je vais enfin pouvoir travailler sur ma BDD.
Je n'aurai pas réussi sans aide !

#7 Re : Installation » "L'initialisation du cluster de bases de données à échoué" » 30/01/2012 12:43:17

Port 5432
Adresse ?

Il y a un service PostgreSQL en cours d'éxécution.

#8 Re : Installation » "L'initialisation du cluster de bases de données à échoué" » 30/01/2012 12:27:39

c:\data contient beaucoup de choses:

dossiers:
base
global
pg_clog
pg_multixact
pg_notify
pg_serial
pg_stat_tmp
pg_subtrans
pg_tblspc
pg_twophase
pg_xlog

fichiers:
pg_hba.conf
pg_ident.conf
pg_version
postgresql.conf
postmaster.opts
postmaster.pid

Dans le rapport des Applications je me retrouves avec des dizaines de lignes erreur PostgreSQL à cause de l'erreur cité au dessus concernant le rôle inexistant.

#9 Re : Installation » "L'initialisation du cluster de bases de données à échoué" » 30/01/2012 12:20:03

Oui le -D était bien "C:\data\".
J'utilise PgAdmin pour gérer mes BDD, pas les lignes de commandes.

Je n'ai pas de fichier pg_log dans c:\data

#10 Re : Installation » "L'initialisation du cluster de bases de données à échoué" » 30/01/2012 12:12:44

Oui, toujours le même message.
Quand je lances dans la commande pg_config --bindir je n'ai aucun résultat.

#11 Re : Installation » "L'initialisation du cluster de bases de données à échoué" » 30/01/2012 11:59:43

Toujours rien, je n'arrives pas effectuer un ajout de serveur sous pgAdmin.Toujours le message suivant:
Error connecting to the server: FATAL: le rôle "Postgresql"' n'éxiste pas.

#12 Re : Installation » "L'initialisation du cluster de bases de données à échoué" » 30/01/2012 11:33:59

je le vois bien mais:
Erreur 1069: l'échec d'une ouverture de session a empêché  le démarrage du service.

C'est bien compliqué là....

Jai donc modifié le type de compte à utiliser en choisissant l'autre solution et là il démarre.

Quand je lances PgAdmin et que je clique sur l'icône en forme de prise électrique

je rentres:
nom: localhost
hôte: localhost
port: 5432
service:
base maintenance: postgres
nom utilisateur: Postgresql
mdp: monmdp

et....:
Error connecting to the server: FATAL: le rôle "Postgresql"' n'éxiste pas.
or le service porte se nom là, et aucun autres utilisateurs ne fonctionnent.

#13 Re : Installation » "L'initialisation du cluster de bases de données à échoué" » 30/01/2012 11:25:38

Je viens d'effectuer la manip avec cmd en administrateur.
Je ne sais pas si cela à fonctionner, je n'ai aucun message sur la commande lors de l'éxécution, j'arrive de suite à une nouvelle ligne.

en faisant pg_ctl.exe status -D "C:\data\" => aucun serveur en cours d'éxécution

#14 Re : Installation » "L'initialisation du cluster de bases de données à échoué" » 30/01/2012 11:17:01

@ Marc Cousin: Oui j'ai bien tout les dossiers créer lors de l'instal

@Rjuju: j'ai effectué la 1ère tâche initdb.exe avec succès.

En revanche pour pg_ctl je n'arrives pas à l'effectuer.
Pourtant je suis bien dans le bon dossier
C:\wamp\apps\bin > pg_ctl.exe register -N Postgresql -U postgres -P monmdp -D"C:\data\" => pg_ctl n'a pas pu ouvrir le gestionnaire de services.


La BDd n'est pas au même endroit que l'install, cela n'a posé aucun soucis lors de l'utilisation de initdb.exe.

#15 Re : Installation » "L'initialisation du cluster de bases de données à échoué" » 26/01/2012 17:53:36

"Si lors de l'installation vous avez bien les fichiers binaires installés" => Les fichiers binaires ?

Je comprends pas vraiment, je suis pas un grand fan de l'invite de commande mais je ne rebuts pas à l'utiliser si vous expliquez un chouilla plus en détail smile

#16 Re : Installation » "L'initialisation du cluster de bases de données à échoué" » 26/01/2012 11:27:42

Arf, bizarre car à la maison sur un anti-virus Avira l'installation fonctionnait très bien.
Je vais essayé de voir avec l'admin réseaux de l'entreprise.
Merci de votre aide

#17 Re : Installation » "L'initialisation du cluster de bases de données à échoué" » 26/01/2012 10:59:45

Malheureusement je ne pas faire cette manipulation.
Je suis en entreprise, les PC fonctionnent sous Kaspersky licence payante.
il est donc hors de question de le désinstaller....

#18 Installation » "L'initialisation du cluster de bases de données à échoué" » 26/01/2012 10:54:20

Kevfou
Réponses : 43

Bonjour,

J'essaie en vain d'installer PG sur cette ordinateur mais à chaque fois j'ai le message suivant:
"Problem running post-install step. Installation may not complete correctly. l'initalisation du cluster de bases de donnée à échoués".

Je lances pourtant l'installation en mode administrateur, je suis admin du pc.

Si je fais continuer, je peux bien accéder a PGadmin mais aucun serveur n’existe.

Chose étrange, j'ai réussi à l'installer correctement il y a 3 mois sur un autre ordinateur.

J'ai fait des recherches sur ce forum et sur internet mais je n'ai trouvé aucune solution, c'est pourquoi je me tournes vers vour.

Windows 7 64 bits

Bonne journée
Merci smile

Pied de page des forums

Propulsé par FluxBB