111 messaggi dal 03 marzo 2003
Salve, ecco il mio problema, sto creando uno sistema per una vetrina virtuale, esiste anche una sezione usato, necessito di uno script che facesse un controllo sul database se ci sono annunci di articoli usati e mostrasse la relativa categoria.

prima c'è il menu degli articoli nuovi:

Avvitatori
Motoseghe
Falciatrici ecc

e tutto funziona (controlo, estrazione ecc), e sotto viene una categoria Usato/Occasioni, il problema è che se hi 3 annunci usato mi mostra 3 volte la categoria usato.

Occasioni/Usato
Occasioni/Usato
Occasioni/Usato

Mentre gli articoli nuovi sono categoria per categoria, per l' usato ho fatto un unica categoria.

Lo script è questo:

<%
sezione = "usato"

Conn_String = "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("gestione/database.mdb")

Set conn = Server.CreateObject("ADODB.Connection")
conn.open Conn_String

sql = "select * from categoria order by Categoria asc"
set rst = Conn.Execute (sql)

Do While Not rst.EOF

Categoria = rst("categoria")
sqlcount = "SELECT count(categoria) FROM annunci where Categoria='" & rst("categoria") & "' AND attivo ='on' AND sezione = 'usato' "

Set RScounts = Conn.Execute(sqlcount)
rcounts = RScounts(0)

%>

<% If rcounts <> 0 then %>
<li><a href="prodotti.asp?sezione=<%=sezione%>">Occasioni/Usato</a>
<% end if %>


<%
rst.MoveNext
loop
%>

In pratica dovrei eliminare i ciclo che mi crea una scritta Occasioni/Usato per ogni annuncio usato inserito...

Ma non ne vengo fuori...

Suggerimenti ??
Gab
678 messaggi dal 12 maggio 2001
www.idioteca.it
in pratica vuoi che se c'è almeno un annuncio usato di una categoria mostri un link generico alla pagina con l'usato, giusto?
Puoi fare una csoa semplice.

Do While Not rst.EOF

Categoria = rst("categoria")
sqlcount = "SELECT count(categoria) FROM annunci where Categoria='" & rst("categoria") & "' AND attivo ='on' AND sezione = 'usato' "

Set RScounts = Conn.Execute(sqlcount)
rcounts = RScounts(0)

%>

<% If rcounts <> 0 then %>
<li><a href="prodotti.asp?sezione=<%=sezione%>">Occasioni/Usato</a>

<% 
    ' Trovo un annuncio, dopo aver "stampato" il link esco dal ciclo
    rst.MoveLast
else
    ' Vado alla categoria successiva    
    rst.MoveNext
end if 

loop
%> 

Verifica che non ho sbagliato qualcosa nella sintassi, ma così dovresti uscire al primo annuncio di usato che trovi.
ciao
111 messaggi dal 03 marzo 2003
Ciao, mi dà errore:
Il set di righe non supporta operazioni di recupero all'indietro.

Gabriele :-(
60 messaggi dal 17 giugno 2003
potresti sostituire la stringa sql di selezione delle categorie

sql = "select * from categoria order by Categoria asc"

in

sql="SELECT distinct categoria FROM categoria order by Categoria asc"

in modo che le righe siano distinte per categoria

<%
sezione = "usato"

Conn_String = "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("gestione/database.mdb")

Set conn = Server.CreateObject("ADODB.Connection")
conn.open Conn_String


sql="SELECT distinct categoria FROM categoria order by Categoria asc"

set rst = Conn.Execute (sql)

Do While Not rst.EOF

Categoria = rst("categoria")
sqlcount = "SELECT count(categoria) FROM annunci where Categoria='" & rst("categoria") & "' AND attivo ='on' AND sezione = 'usato' "

Set RScounts = Conn.Execute(sqlcount)
rcounts = RScounts(0)

%>

<% If rcounts <> 0 then %>
<li><a href="prodotti.asp?sezione=<%=sezione%>">Occasioni/Usato</a>
<% end if %>


<%
rst.MoveNext
loop
%>
111 messaggi dal 03 marzo 2003
Ciao, hai ragione, mettendo

sql="SELECT distinct categoria FROM categoria order by Categoria asc"

e poi

<% If rcounts <> 0 then %>
<a href="prodotti.asp?sezione=<%=sezione%>&cat=<%=rst("categoria")%>"><%=rst("categoria")%></a>
<% end if %>

mi escono le categorie distinte degli articoli usati, ma dato che gli articoli usati sono pochi volevo fare un categoria unica.

Per cui volevo far uscire la categoria usato solo se c'è un annuncio nella categoria.

Gabriele
111 messaggi dal 03 marzo 2003
Sono riuscito a sistemare:

<%

' indicare la sezione, se nuovo o usato
sezione = "usato"

Dim Conn
Set Conn = Server.CreateObject("ADODB.Connection")
conn.Open "driver={Microsoft Access Driver (*.mdb)};dbq=" & server.mappath("gestione/database.mdb")

Dim rs
Set rs = Server.CreateObject("ADODB.Recordset")
rs.Open "select * from annunci where sezione = 'usato' ", conn

sqlcount = "SELECT count(sezione) FROM annunci where sezione='usato' AND attivo ='on' "
Set RScounts = Conn.Execute(sqlcount)
rcounts = RScounts(0)


%>

<% If rcounts <> 0 then %>
<img src="grafica/loghino.png" width=13 alt="Occasioni usato"> <a href="prodotti.asp?sezione=<%=sezione%>">Occasioni/Usato</a>
<% end if %>


<%
' fine connessione database
conn.close
set conn = nothing
%>

Gab ;-)
678 messaggi dal 12 maggio 2001
www.idioteca.it
ok, funziona, ma pensavo volessi sapere se per ogni categoria c'è qualche annuncio di usato e inserire un link per ogni categoria, giusto?
A questo punto a cosa ti serve eseguire questa query?
rs.Open "select * from annunci where sezione = 'usato' ", conn
se dopo fai la stessa con in più la condizione attivo = 'on'
sqlcount = "SELECT count(sezione) FROM annunci where sezione='usato' AND attivo ='on' "
Set RScounts = Conn.Execute(sqlcount)
rcounts = RScounts(0)
Non ti serve la prima visto che l'unica condizione per stampare il link è quella che rcounts sia diverso da 0.
ciao

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.