View Full Version : [DBTAGS] Sto facendo delle query, ma ho problemi col fetch dei risultati
Matrixbob
28-06-2005, 11:40
... qualcuno sa essere così cortese da seguirmi?!
Per la sintassi faccio riferimento qui:
Jakarta Project: DBTags Tag library (http://jakarta.apache.org/taglibs/doc/dbtags-doc/dbtags-1.0/index.html)
In pratica vorrei mettere il risultato di una colonna della riga ottenuta dalla query di SELECT in una variabile da riutilizzare nella query seguente INSERT INTO.
Questo perchè utilizzo dei campi AUTO-INCREMENTANTI come chiave di una tabella e voglio recuperare appunto questo campo.
Matrixbob
28-06-2005, 11:45
Parte del codice che ho "partorito":
<sql:statement id="statement1" conn="conn1">
<sql:query>
INSERT INTO conferenza (conferenza_id, argomento)
VALUES ('','<%=request.getParameter("argomento")%>')
</sql:query>
<sql:execute ignoreErrors="true" />
</sql:statement>
<sql:statement id="statement3" conn="conn1">
<sql:query>
INSERT INTO evento (evento_id, conferenza_id, nome, luogo, tipo, data, posti_disponibili, costo)
VALUES ('', 1,
'<%=request.getParameter("nome")%>', '<%=request.getParameter("luogo")%>',
'<%=request.getParameter("tipo")%>', '<%=request.getParameter("data")%>',
'<%=request.getParameter("posti_disponibili")%>', '<%=request.getParameter("costo")%>')
</sql:query>
<sql:execute ignoreErrors="true" />
</sql:statement>
<table border=1 align="center">
<thead><th>conferenza_id</th><th>argomento</th></thead>
<tbody>
<sql:statement id="statement4" conn="conn1">
<sql:query> SELECT * FROM conferenza ORDER BY conferenza_id </sql:query>
<sql:resultSet id="rs2">
<tr>
<td><sql:getColumn position="1"/></td>
<td><sql:getColumn position="2"/></td>
</tr>
</sql:resultSet>
<sql:execute ignoreErrors="true" />
</sql:statement>
</tbody>
</table>
è quel "conferenza_id" che mi occorre a causa dei "VINCOLI DI CHIAVE STRANIERA" :(
NB
"evento_id" è nuovamente un campo AUTO-INCREMENTANTE, che a differenza del PHP mi tocca inserirlo come stringa vuota.
In PHP non lo cagavo nemmeno. :)
Matrixbob
28-06-2005, 12:24
Ho provato a modificare così, inserendo uno statement:
<sql:statement id="statement1" conn="conn1">
<sql:query>
INSERT INTO conferenza (conferenza_id, argomento)
VALUES ('','<%=request.getParameter("argomento")%>')
</sql:query>
<sql:execute ignoreErrors="true" />
</sql:statement>
<sql:statement id="statement2" conn="conn1">
<sql:query> SELECT * FROM conferenza
WHERE argomento='<%=request.getParameter("argomento")%>'
</sql:query>
<sql:resultSet id="rs2">
<sql:getColumn position="1" to="conferenza_id" scoop="page" />
</sql:resultSet>
<sql:execute ignoreErrors="true" />
</sql:statement>
<sql:statement id="statement3" conn="conn1">
<sql:query>
INSERT INTO evento (evento_id, conferenza_id, nome, luogo, tipo, data, posti_disponibili, costo)
VALUES ('', conferenza_id,
'<%=request.getParameter("nome")%>', '<%=request.getParameter("luogo")%>',
'<%=request.getParameter("tipo")%>', '<%=request.getParameter("data")%>',
'<%=request.getParameter("posti_disponibili")%>', '<%=request.getParameter("costo")%>')
</sql:query>
<sql:execute ignoreErrors="true" />
</sql:statement>
<table border=1 align="center">
<thead><th>conferenza_id</th><th>argomento</th></thead>
<tbody>
<sql:statement id="statement4" conn="conn1">
<sql:query> SELECT * FROM conferenza ORDER BY conferenza_id </sql:query>
<sql:resultSet id="rs4">
<tr>
<td><sql:getColumn position="1"/></td>
<td><sql:getColumn position="2"/></td>
</tr>
</sql:resultSet>
<sql:execute ignoreErrors="true" />
</sql:statement>
</tbody>
</table>
... ma il risultato è solamente quello in allegato, l'evento non viene inserito :(
Lo statement 2 e lo statement 3 sono praticamente dei fantasmi!!! :muro:
PS
Ho allegato perchè http://www.imageshack.us è irraggiungibile.
Matrixbob
28-06-2005, 12:46
Siiii, sto venendo, come segue funziona:
<sql:statement id="statement1" conn="conn1">
<sql:query>
INSERT INTO conferenza (conferenza_id, argomento)
VALUES ('','<%=request.getParameter("argomento")%>')
</sql:query>
<sql:execute ignoreErrors="true" />
</sql:statement>
<sql:statement id="statement2" conn="conn1">
<sql:query> SELECT * FROM conferenza
WHERE argomento='<%=request.getParameter("argomento")%>'
</sql:query>
<sql:resultSet id="rs2">
<sql:getColumn position="1" to="conferenza_id" scope="page" />
</sql:resultSet>
<sql:execute ignoreErrors="true" />
</sql:statement>
<sql:statement id="statement3" conn="conn1">
<sql:query>
INSERT INTO evento (evento_id, conferenza_id, nome, luogo, tipo, data, posti_disponibili, costo)
VALUES ('', <%= pageContext.getAttribute("conferenza_id") %>,
'<%=request.getParameter("nome")%>', '<%=request.getParameter("luogo")%>',
'<%=request.getParameter("tipo")%>', '<%=request.getParameter("data")%>',
'<%=request.getParameter("posti_disponibili")%>', '<%=request.getParameter("costo")%>')
</sql:query>
<sql:execute ignoreErrors="true" />
</sql:statement>
<table border=1 align="center">
<thead><th>conferenza_id</th><th>argomento</th></thead>
<tbody>
<sql:statement id="statement4" conn="conn1">
<sql:query> SELECT * FROM conferenza ORDER BY conferenza_id </sql:query>
<sql:resultSet id="rs4">
<tr>
<td><sql:getColumn position="1"/></td>
<td><sql:getColumn position="2"/></td>
</tr>
</sql:resultSet>
<sql:execute ignoreErrors="true" />
</sql:statement>
</tbody>
</table>
Matrixbob
28-06-2005, 12:47
Spero che la mia esperienza serva a molti altri e che continuate a seguire questo 3D in caso mi servisse ulteriore aiuto, che avviamente resterà anche buono x i posteri!
Matrixbob
29-06-2005, 09:37
DOMANDONE:
posso sostituire nel metodo del form GET il POST?!
cosa cambierebbe nella mia pagina?!
uso sempre getParameter?!
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.