32 messaggi dal 25 settembre 2003
Salve, vediamo se potete aiutarmi a risolvere questo problemino.

Ho necessità di inserire in un DB un elenco di articoli divisi per categoria. Fin qui ttutto OK. Il mo problema sorge quando devo vedere gli articoli in quanto, conoscendo poco, o meglio meno che poco asp e usando Dreamnweaver questo non consente di fare, almeno credo, ciò di cui ho bisogno ed io non ho ancora quella conoscenza di asp che mi possa consentire di risolvere il problema. Poichè, come dicevo prima, gli articoli sono divisi per categoria, finchè voglio vedere solo gli articoli di una determinata categortia, OK, ma se voglio vedere tutto l'elenco senza che per ogni voce mi appaia la categoria, ma solo per la prima, non so come fare.

Mi spiego meglio con un esempio:

Sport - pallone...........
Sport - pantaloncino.....
Sport - maglietta.......

Computer - stampante....
Computer - Hard disk...

e così via. Ciò che mi serve è che Sport, o quant'altro, non debba essere ripetuto ogni volta, ma solo relativamente alla prima voce di Sport dell'elenco. E poi, quando comincia Computer, dovrebbe apparire la nuova categoria, ma solo nella prima voce. E così via.

Come si fa ??

Ripeto, io di ASP ne so proprio pochissimo, e quindi da solo no riesco a cavarmela.

Chi mi aiuta??

Grazie. e ciao

daniele
11.886 messaggi dal 09 febbraio 2002
Contributi

Ripeto, io di ASP ne so proprio pochissimo, e quindi da solo no riesco a cavarmela.

mmhm dovresti comprare un manuale, oppure segui spesso il forum. Il rischio è che ti potresti trovare in situazioni "d'emergenza" e non riuscire a risolvere perchè Dreamweaver non ti da una mano... bene...

siccome stai estraendo una lista di articoli dal database, presumo tu abbia un ciclo simile a questo:

while not rs.Eof
Response.write rs("categoria") & " - " & rs("nomearticolo") & "<br>"
rs.Movenext
wend


dove rs è il nome del tuo recordset che contiene i risultati.
Il response.write come vedi, ti invia la categoria per ogni articolo. Quello che devi fare è verificare se la categoria è uguale a quella dell'articolo precendente. Se lo è, non la stampare.
Ti servirà una variabile per memorizzare il nome della categoria precedente. Quindi il ciclo qua sopra diventa

categoria_prec = ""
while not rs.Eof
'qui scrivo la categoria solo se è DIVERSA dalla precedente
if categoria_prec <> rs("categoria") then Response.write rs("categoria") & "<br>"
categoria_prec = rs("categoria")
Response.write rs("nomearticolo") & "<br>"
rs.Movenext
wend

ciao

Enjoy learning and just keep making
32 messaggi dal 25 settembre 2003
Grazie innanzi tutto. Io il manuale l'ho comprato, ma non riesco mai a trovere il tempo per studiarmenlo con attenzione. Fortunatamante ho dei lavori da fare e quindi Dreamweave mi dà una grossa mano, tranne che in situazioni particolari.

Ora non posso provare, ma appena provo e dovessi trovare dei problemi, ti riposto. Ti farò comunque sapere come è andata.

Ciao

daniele
32 messaggi dal 25 settembre 2003
Ho un problema. Quando Dreamweaver scrive il codice, non usa Response.write e quindi, considerando sempre la mia ignominiosa ignoranza in asp, non mi ci raccapezzo e non so come fare a integrare il codice che fa il confronto per stabilire o meno la condizione.
Quindi ti posto il codice generato da DW, sperando che tu possa darmi un'indicazione più precisa:

<%
Dim menu
Dim menu_numRows

Set menu = Server.CreateObject("ADODB.Recordset")
menu.ActiveConnection = MM_sabatino_STRING
menu.Source = "SELECT categoria, dettaglio, tipo, prezzo  FROM menu  WHERE dettaglio  ORDER BY categoria ASC, dettaglio"
menu.CursorType = 0
menu.CursorLocation = 2
menu.LockType = 1
menu.Open()

menu_numRows = 0
%>
<%
Dim Repeat1__numRows
Dim Repeat1__index

Repeat1__numRows = -1
Repeat1__index = 0
menu_numRows = menu_numRows + Repeat1__numRows
%>
<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Documento senza titolo</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
</head>

<body>
<table width="80%" border="0" cellspacing="0" cellpadding="0">
  <tr>
    <td>Categoria</td>
    <td>Piatto</td>
    <td>Prezzo</td>
  </tr>
  <% 
While ((Repeat1__numRows <> 0) AND (NOT menu.EOF)) 
%>
  <tr> 
    <td><%=(menu.Fields.Item("categoria").Value)%></td>
    <td><%=(menu.Fields.Item("dettaglio").Value)%></td>
    <td>&nbsp;</td>
  </tr>
  <% 
  Repeat1__index=Repeat1__index+1
  Repeat1__numRows=Repeat1__numRows-1
  menu.MoveNext()
Wend
%>
</table>
</body>
</html>
<%
menu.Close()
Set menu = Nothing
%>





Grazie e ciao

daniele
3.122 messaggi dal 16 maggio 2002
<%= è uguale a Response.Write.
Ma scusa la domanda: stai scrivendo una pagina html o un documento xml?!?!

The day Microsoft makes something that doesn't suck
is probably the day they start making vacuum cleaners.

Get caught!
Get caught again!
11.886 messaggi dal 09 febbraio 2002
Contributi
modifica il tuo ciclo while così:


<%
categoria_prec = "" 
While ((Repeat1__numRows <> 0) AND (NOT menu.EOF)) 
%> 
<tr> 
<td><%
if categoria_prec <> menu.Fields.Item("categoria").Value then Response.write(menu.Fields.Item("categoria").Value)
%></td> 
<td><%=(menu.Fields.Item("dettaglio").Value)%></td> 
<td>&nbsp;</td> 
</tr> 
<%
categoria_prec = menu.Fields.Item("categoria").Value
Repeat1__index=Repeat1__index+1 
Repeat1__numRows=Repeat1__numRows-1 
menu.MoveNext() 
Wend 
%> 


ciao

Enjoy learning and just keep making
32 messaggi dal 25 settembre 2003
Perfetto, grazie, funziona che è una meraviglia.

per quanto riguarda il Response.Write, si è vero, lo avevo letto, ma me ne ero dimenticato.

Per quanto riguarda xml io faccio pagine xhtml e quindi all'inizio scrive quella riga.

Ciao e di nuovo grazie. A buon rendere, prima o poi?

daniele

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.