Précédent   Forum des professionnels en informatique > Bases de données > PostgreSQL
PostgreSQL Forum PostgreSQL. Avant de poster -> F.A.Q PostGreSQL Tutoriels PostGreSQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 19/09/2006, 13h03   #1
Invité de passage
 
Inscription : septembre 2006
Messages : 3
Détails du profil
Informations forums :
Inscription : septembre 2006
Messages : 3
Points : 1
Points : 1
Par défaut Probleme pour rediger ma requete sql

Bonjour a tous,

voila mon probleme:
j'ai la table postgres suivante:
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
-- 
-- PostgreSQL database dump
-- 
 
SET client_encoding = 'UNICODE';
SET check_function_bodies = false;
 
SET SESSION AUTHORIZATION 'postgres';
 
SET search_path = public, pg_catalog;
 
-- 
-- TOC entry 3 (OID 278527)
-- Name: d_ressource_astre; Type: TABLE; Schema: public; Owner: postgres
-- 
 
CREATE TABLE d_ressource_astre (
    ress_id_ext integer NOT NULL,
    astr_id_ext integer NOT NULL,
    ress_astr_prod integer DEFAULT 0 NOT NULL,
    ress_astr_dispo integer DEFAULT 0 NOT NULL,
    ress_astr_stock integer,
    ress_astr_last_up integer,
    ress_astr_synth integer
);
 
 
-- 
-- Data for TOC entry 5 (OID 278527)
-- Name: d_ressource_astre; Type: TABLE DATA; Schema: public; Owner: postgres
-- 
 
COPY d_ressource_astre (ress_id_ext, astr_id_ext, ress_astr_prod, ress_astr_dispo, ress_astr_stock, ress_astr_last_up, ress_astr_synth) FROM stdin;
1   274011   0   1944696270   0   1157193141   0
2   274011   0   774497016   0   1157193141   0
3   274011   0   335398795   0   1157193141   0
5   274011   0   2000000000   0   1157193141   0
6   274011   0   2000000000   0   1157193141   0
4   274011   0   2000000000   0   1157193141   0
5   274016   0   2000000000   0   1157193141   0
4   267912   0   2000000000   0   1157193141   0
3   274015   0   267008954   0   1157193141   0
5   274015   0   2000000000   0   1157193141   0
1   267916   0   1670645309   0   1157193141   0
2   267916   0   627469911   0   1157193141   0
3   267916   0   390363743   0   1157193141   0
6   274015   0   2000000000   0   1157193141   0
5   267916   0   2000000000   0   1157193141   0
6   267916   0   2000000000   0   1157193141   0
1   274015   0   1489780656   0   1157193141   0
2   274015   0   929031759   0   1157193141   0
4   274015   0   2000000000   0   1157193141   0
3   274016   0   140543093   0   1157193141   0
1   274016   0   519767306   0   1157193141   0
2   274016   0   612344012   0   1157193141   0
6   274016   0   2000000000   0   1157193141   0
1   267908   0   875930028   0   1157193141   0
..........
6   261904   22   1999999202   226   1158539354   11
7   261904   22   1999999202   798   1158539354   11
8   261904   22   1999999202   798   1158539354   33
9   261904   0   2000000000   0   1158539354   0
10   261904   0   2000000000   0   1158539354   0
11   261904   0   2000000000   0   1158539354   0
4   265240   1010   2000000000   0   1158616054   0
1   265240   1010   1999998736   1264   1158620561   0
2   265240   1010   1999998736   1264   1158620561   0
3   265240   1010   1999998736   1264   1158620561   0
5   265240   1010   1999998736   1264   1158620561   0
6   265240   1010   1999998736   1264   1158620561   0
7   265240   1010   1999998736   1264   1158620561   0
8   265240   1010   1999998736   1264   1158620561   0
9   265240   1010   1999998736   1264   1158620561   0
10   265240   1010   1999998736   1264   1158620561   0
11   265240   1010   1999998736   1264   1158620561   0
\.
 
 
-- 
-- TOC entry 4 (OID 278764)
-- Name: d_ressource_astre_pkey; Type: CONSTRAINT; Schema: public; Owner: postgres
-- 
 
ALTER TABLE ONLY d_ressource_astre
    ADD CONSTRAINT d_ressource_astre_pkey PRIMARY KEY (astr_id_ext, ress_id_ext);
j'ai creer ma function edit_ress () comme suit:
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
<?PHP
FUNCTION edit_ress() {
 
   $sql_ress = "SELECT DISTINCT ress_id_ext, astr_id_ext, ress_astr_prod, ress_astr_dispo, ress_astr_stock, ress_astr_last_up, ress_astr_synth
               FROM d_ressource_astre WHERE astr_id_ext = "  . $_GET['id'];
   $req_ress = pg_query($sql_ress);
   $res_ress = pg_fetch_all($req_ress);
 
 
   echo '<table>';
   echo '<tr><th>NOM</th><th>Astre ID</th><th>Production</th><th>Dispo</th><th>Stock</th><th>Last Up</th><th>Synth</th></tr>';
   echo '<form name="edit_astre" action="?page=astre_ressource&amp;op=do_edit_ress&amp;id='.$_GET['id'].'" method="POST">';
 
   foreach($res_ress AS $r) {
 
 
      echo '<tr><td><input type="text" name="Nom" value="'.$r['ress_id_ext'].'"></td>';
      echo '<td><input type="text" name="Astre ID" value="'.$r['astr_id_ext'].'"></td>';
      echo '<td><input type="text" name="Production" value="'.$r['ress_astr_prod'].'"></td>';      
      echo '<td><input type="text" name="Dispo" value="'.$r['ress_astr_dispo'].'"></td>';
      echo '<td><input type="text" name="Stock" value="'.$r['ress_astr_stock'].'"></td>';
      echo '<td><input type="text" name="Last Up" value="'.$r['ress_astr_last_up'].'"></td>';
      echo '<td><input type="text" name="Synth" value="'.$r['ress_astr_synth'].'"></td></tr>';
   }
 
   echo '<tr><td></td><td><p><input type="submit" value="Modifier" /></td></tr>';
   echo '</form>';
   echo '<tr><td><p><a href="?page=membres">Retour</a></td></tr>';
   echo'</table>';
}
?>
Le $_GET['id'] et la variable astr_id_ext cela me permet de selectionner uniquement les 11 ress_ext_id de cette astr_id_ext.

je me retrouve donc avec un tableau de 7 colonnes et de 11 lignes
je peux etre ammener a changer une ou plusieurs de ces valeurs.
je recherche donc a creer ma function do_edit_ress().

Comment puis je creer ma requete?

Je ne sais pas si je me suis bien fait comprendre mais j'espere que quelqu'un pourras m'aider.....

Merci a tous.
++
JYM34 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/09/2006, 14h19   #2
Membre Expert
 
Avatar de zooro
 
Inscription : avril 2006
Messages : 922
Détails du profil
Informations personnelles :
Âge : 33
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : avril 2006
Messages : 922
Points : 1 149
Points : 1 149
Bonjour,

Je n'ai pas compris où est le problème.
En lisant ton post, voici ce que j'ai compris:
Un enregistrement de ta table d_ressource_astre est identifié de façon unique par le couple (ress_id_ext,astr_id_ext). Tu peux changer la valeur de n'importe quel champ de n'importe quel enregistrement de ta table.

A mon sens, la seule solution pour éviter des confusions est de faire une requête UPDATE par couple (ress_id_ext,astr_id_ext):
Code :
1
2
3
4
5
6
UPDATE d_ressource_astre 
SET 
   mon_champ_modifié_1 = ma_nouvelle_valeur, 
   mon_champ_2 = ma_nouvelle_valeur2,
   ... 
WHERE ress_id_ext = ress_id AND astr_id_ext = astr_id;
__________________
[alkama] quelqu'un est allé voir la guerre des mondes?
[@Chrisman] j'espère pour spielberg
--- bashfr.org
zooro est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/09/2006, 23h21   #3
Invité de passage
 
Inscription : septembre 2006
Messages : 3
Détails du profil
Informations forums :
Inscription : septembre 2006
Messages : 3
Points : 1
Points : 1
Bonsoir,

Tout d'abord merci pour ta reponse....

Meme avec ta solution cela ne m'a pas permis de resoudre mon probleme.
Voici donc ma function do_edit_ress() actuelle:
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
FUNCTION do_edit_ress() {
 
	$sql_ress = "UPDATE d_ressource_astre SET ress_id_ext = '$_POST[Nom]', astr_id_ext = '$_POST[ID]', ress_astr_prod = '$_POST[Prod]', ress_astr_dispo = '$_POST[Dispo]', ress_astr_stock = '$_POST[Stock]', ress_astr_last_up = '$_POST[LastUp]', ress_astr_synth = '$_POST[Synth]'
					 WHERE astr_id_ext = "  . $_POST['ID'] . " AND ress_id_ext = " . $_POST['Nom'] ;
	$req_ress = pg_query($sql_ress);
	$res_ress = pg_fetch_array($req_ress);
 
 
	echo '<table>';
	echo '<tr><td>Modification du bâtiment terminé</td></tr>';
	echo '<tr><td><p><a href="?page=membres">Retour</a></td></tr>';
	echo'</table>';
 
}
Et voici ma function edit_ress()

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
FUNCTION edit_ress() {
 
	$sql_ress = "SELECT DISTINCT ress_id_ext, astr_id_ext, ress_astr_prod, ress_astr_dispo, ress_astr_stock, ress_astr_last_up, ress_astr_synth
					FROM d_ressource_astre WHERE astr_id_ext = "  . $_GET['id'];
	$req_ress = pg_query($sql_ress);
	$res_ress = pg_fetch_all($req_ress);
 
 
	echo '<table>';
	echo '<tr><th>ID</th><th>Astre ID</th><th>Production</th><th>Dispo</th><th>Stock</th><th>Last Up</th><th>Synth</th></tr>';
 
	foreach($res_ress AS $r) {
 
		echo '<form name="edit_astre" action="?page=astre_ressource&amp;op=do_edit_ress&amp;id='.$r['ress_id_ext'].'" method="POST">';
		echo '<tr><td><input type="text" size="5" name="Nom" value="'.$r['ress_id_ext'].'"></td>';
		echo '<td><input type="text" size="5" name="ID" value="'.$r['astr_id_ext'].'"></td>';
		echo '<td><input type="text" size="10" name="Prod" value="'.$r['ress_astr_prod'].'"></td>';		
		echo '<td><input type="text" size="10" name="Dispo" value="'.$r['ress_astr_dispo'].'"></td>';
		echo '<td><input type="text" size="10" name="Stock" value="'.$r['ress_astr_stock'].'"></td>';
		echo '<td><input type="text" size="15" name="LastUp" value="'.$r['ress_astr_last_up'].'"></td>';
		echo '<td><input type="text" size="10" name="Synth" value="'.$r['ress_astr_synth'].'"></td>';
		echo '<td><input type="submit" value="Modifier" /></td></tr>';
		echo '</form>';
	}
 
	echo '<tr><td><p><a href="?page=membres">Retour</a></td></tr>';
	echo'</table>';
}
Cela me permet donc de modifier ligne par ligne alors que j'aimerai valider le formulaire entier et biensur je me suis dit je n'ai qu'a changer ma balise <form> comme ceci :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
FUNCTION edit_ress() {
 
	$sql_ress = "SELECT DISTINCT ress_id_ext, astr_id_ext, ress_astr_prod, ress_astr_dispo, ress_astr_stock, ress_astr_last_up, ress_astr_synth
					FROM d_ressource_astre WHERE astr_id_ext = "  . $_GET['id'];
	$req_ress = pg_query($sql_ress);
	$res_ress = pg_fetch_all($req_ress);
 
 
	echo '<table>';
	echo '<tr><th>ID</th><th>Astre ID</th><th>Production</th><th>Dispo</th><th>Stock</th><th>Last Up</th><th>Synth</th></tr>';
 
		echo '<form name="edit_astre" action="?page=astre_ressource&amp;op=do_edit_ress&amp;id='.$r['ress_id_ext'].'" method="POST">';
 
	foreach($res_ress AS $r) {
 
 
		echo '<tr><td><input type="text" size="5" name="Nom" value="'.$r['ress_id_ext'].'"></td>';
		echo '<td><input type="text" size="5" name="ID" value="'.$r['astr_id_ext'].'"></td>';
		echo '<td><input type="text" size="10" name="Prod" value="'.$r['ress_astr_prod'].'"></td>';		
		echo '<td><input type="text" size="10" name="Dispo" value="'.$r['ress_astr_dispo'].'"></td>';
		echo '<td><input type="text" size="10" name="Stock" value="'.$r['ress_astr_stock'].'"></td>';
		echo '<td><input type="text" size="15" name="LastUp" value="'.$r['ress_astr_last_up'].'"></td>';
		echo '<td><input type="text" size="10" name="Synth" value="'.$r['ress_astr_synth'].'"></td>';
	}
	echo '<td><input type="submit" value="Modifier" /></td></tr>';
	echo '</form>';
 
	echo '<tr><td><p><a href="?page=membres">Retour</a></td></tr>';
	echo'</table>';
}
Ben non ca marche pô......

Cela paraitra bete mais je suis un noobs
JYM34 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/09/2006, 23h35   #4
Membre chevronné
 
Avatar de Spoutnik
 
Homme
Inscription : octobre 2003
Messages : 668
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 32
Localisation : Etats-Unis

Informations forums :
Inscription : octobre 2003
Messages : 668
Points : 746
Points : 746
Citation:
Envoyé par JYM34
Je ne sais pas si je me suis bien fait comprendre
Bah, à vrai dire .... pas vraiment...
Citation:
Envoyé par JYM34
mais j'espere que quelqu'un pourras m'aider.....
On va essayer, mais :

1) C'est un forum postgresql, donc y a t il un problème spécifique à pg? (ca, c'est pas trop grave)
2) le php n'a jamais servi à faire des requetes SQL, donc, merci de ne plus en mettre. Les balises <tr> <br> et autres ne sont que d'un intéret plus que limité pour comprendre le problème, et surtout empêche une lecture claire et rapide de ton problème.
3) Quel est le problème? (En français, pas en php )

Bon, désolé du message qui n'apporte rien, mais au moins, t'aura une chance d'avoir de l'aide ...

++
__________________
Two beer or not two beer. (Shakesbeer)
Question technique par MP => poubelle!
Spoutnik est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/09/2006, 12h58   #5
Invité de passage
 
Inscription : septembre 2006
Messages : 3
Détails du profil
Informations forums :
Inscription : septembre 2006
Messages : 3
Points : 1
Points : 1
Citation:
Envoyé par Spoutnik
Bah, à vrai dire .... pas vraiment...

On va essayer, mais :

1) C'est un forum postgresql, donc y a t il un problème spécifique à pg? (ca, c'est pas trop grave)
2) le php n'a jamais servi à faire des requetes SQL, donc, merci de ne plus en mettre. Les balises <tr> <br> et autres ne sont que d'un intéret plus que limité pour comprendre le problème, et surtout empêche une lecture claire et rapide de ton problème.
3) Quel est le problème? (En français, pas en php )

Bon, désolé du message qui n'apporte rien, mais au moins, t'aura une chance d'avoir de l'aide ...

++
Merci j'ai trouvé mais pas grace a toi.....
JYM34 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 08h36.


 
 
 
 
Partenaires

Hébergement Web