PHP / POSTGRES : manipulation de données

Petit nouveau ! | 5 Messages

05 août 2005, 11:55

Bonjour,

Je cherche à insérer des données dans une table (PostGres) mais en utilisant une boucle via un script php(plutot qu'un auto_increment), pour numéroter les lignes de 1 à n. Mais cela ne marche pas. Quelqu'un pourrait-il m'éclairer ? MERCI

<?php
pg_connect...

//creation table :
pg_exec ($conn_db, CREATE TABLE ma_table
(numero INT,
(titre VARCHAR (20))");

//maj de la table :
for ($j=1; $j<10; $j++);
pg_exec ($con_db, "INSERT INTO $ma_table[numero] VALUES ($j)");
pg_close...

?>

Mammouth du PHP | 19672 Messages

05 août 2005, 12:44

Qu'est-ce que t'empèche d'utiliser un champ en auto-increment ?
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Petit nouveau ! | 5 Messages

05 août 2005, 12:54

Rien ne m'empeche d'utiliser l'auto_increment (bien plus simple...). Simplement il s'agit là d'un exercice pour me familiariser avec l'utilisation des boucles pour php/postgres (je suis une novice).

Mammouth du PHP | 19672 Messages

05 août 2005, 13:02

Ok, t'exite pas sur le bouton d'envoi de message, ça répète l'opération pour rien.

Pour ton problème, il s'agit alors de récupérer le dernier numéro enregistré pour ne pas risquer d'enregistrer un doublon, ce qui louperait puisque, si c'est une clé primaire, ton SGBD va te jeter en refusant le doublon.

Une fois que tu as ce numéro, il te suffit de l'incrémenter et d'insérer ta nouvelle ligne.

Où est la difficulté ?
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Petit nouveau ! | 5 Messages

05 août 2005, 13:59

Sorry, pour le double envoi.

En fait, il s'agit d'une table ne contenant aucun enregistrement. Je ne peux donc pas récupérer le dernier numéro enregistré.

Eléphant du PHP | 147 Messages

05 août 2005, 14:08

Si ta table est vide tu prend comme numero d'index 1 sinon tu cherche le numero du dernier

Invité
Invité n'ayant pas de compte PHPfrance

05 août 2005, 14:25

J'ai bien pris 1 comme point de départ. Mais la boucle ne fonctionne pas.
J'ai en retour le message d'erreur suivant : "parse error near or at 10"


//maj de la table :
for ($j=1; $j<10; $j++);
pg_exec ($con_db, "INSERT INTO $ma_table[numero] VALUES ($j)");
pg_close...

Mammouth du PHP | 1029 Messages

07 août 2005, 20:11

attention sur Postgres (je viens d'avoir le problème), si tu as fais des insertions dans le bdd et puis si tu les as effacer, postgres ne recommence pas à 0, à vérifier!

MaitrePylos