ciao a tutti, sono appena arrivato e avrei bisogno di un aiuto per una paginazione ASP+MYSQL.
ho cambiato paginazione dato che quella che avevo prima con ACCESS non va, il problema è Absolutepage che ho saputo da ricerche sul web, non e' supportato da MYSQL...:(
questa che ho funziona bene per una lettura del DB normale, ma dato che l'ho allegata ad un motore di ricerca mi da un problema che non so risolvere senza Absolutepage.
cosi' come e' il codice adesso conta sempre tutti i record, ma a me chiaramente serve che conti i record trovati in base alla ricerca.
nel DB al momento per provare, ho inserito solo 19 record e in base ad una ricerca soddisfatta con solo 2 record, dice chiaramente sempre 19 trovati e crea una seconda pagina vuota (ho impostato risultati per pagina=10)
grazie a tutti per l' aiuto che potrete darmi...
Rob
codice
--------------
<%
PageName = Request.ServerVariables("PATH_INFO")
SearchMethod = Request.ServerVariables("REQUEST_METHOD")
Dim pag
pag = Request.QueryString("pag")
If IsNumeric(pag) = False Or pag < 1 Then pag = 1
If SearchMethod = "POST" Then
search = request.form("search")
ElseIf SearchMethod = "GET" Then
search = request.QueryString("search")
End If
%>
<form method="post" name="editform">
<tr bgcolor="">
<td width="150" align="left" class="text"><b></b></td>
<td width="680" align="left" class="text">
<!--motore-->
<form method="post" action="default.asp?go=searchcom3" name="editform">
<input type="radio" name="criterio" value="ext" checked> frase esatta <input type="radio" name="criterio" value="all"> tutte le parole
<input type="text" name="search" size="30" value="<%=search%>">
<input type="submit" value="CERCA" name="submit" class=box onMouseOver="this.className='submit'" onmouseOut="this.className='box'" onFocus="this.blur()">
</form>
<!--fine motore---->
</td>
<%
session ("search") = request.form ("search")
%>
</tr>
<tr bgcolor="">
<td colspan="3" align="left" class="text" height="1"></td>
</tr>
</form>
<script language="javascript">document.editform.search.foc us();</script>
<% If SearchMethod = "POST" And len(search) = 0 Then %>
<tr>
<td colspan="3" height="60" align="center" class="text" bgcolor="#FFFFFF"><b>Digitare un testo per la ricerca</b></td>
</tr>
<tr bgcolor="#000033">
<td colspan="3" height="1"></td>
</tr>
<% End If %>
<%
if len(search) > 0 then
'connessione mysql
Dim cn, rs
Set cn = Server.CreateObject("ADODB.Connection")
Set rs = Server.CreateObject("ADODB.Recordset")
cn.open = "driver={MySQL ODBC 3.51 Driver};server=;database=;uid=;pwd="
'conn.Open str_Conn
rs.Open "SELECT COUNT(*) AS temp FROM searchcom", cn, 3 ,3
Dim quanti, a, b
quanti = CInt(rs("temp"))
b = 10
a = (pag - 1) * b
rs.Close
If quanti > 0 Then
Dim sql
sql = "Select * From searchcom Where"
If request.form("criterio") <> "ext" Then
ArrSearch = Split(search)
x = 0
for each Word In ArrSearch
sql = sql & " (doc like '%" & Replace(word, "'", "''") & "%' Or parola_chiave like '%" & Replace(word, "'", "''") & "%' Or anno like '%" & Replace(word, "'", "''") & "%' Or data like '%" & Replace(word, "'", "''") & "%'Or massime like '%" & Replace(word, "'", "''") & "%' ) "
If Not x = UBound(ArrSearch) Then sql = sql & " or"
' Se preferisci la ricerca di una qualsiasi delle parole inserite
' in tutti dodumenti usa questo codice:
' If Not x = UBound(ArrSearch) Then sql = sql & " Or"
x = x + 1
Next
Else
sql = sql & " (doc like '%" & Replace(search, "'", "''") & "%' Or parola_chiave like '%" & Replace(search, "'", "''") & "%'Or anno like '%" & Replace(search, "'", "''") & "%' Or data like '%" & Replace(search, "'", "''") & "%'Or massime like '%" & Replace(search, "'", "''") & "%' ) "
End If
sql = sql & " LIMIT " & a & ", " & b
rs.CursorType = adOpenDynamic
rs.Open sql, cn
'set rs = server.createobject("adodb.recordset")
'set rs = conn.execute(sql)
If rs.Eof=True or rs.Bof=True then
Response.Write "<P>Nessun risultato trovato</P>"
Else
%>
<td colspan="3" class="text" bgcolor="#FFFFFF"><b>Pagina
<%=pag%>/<%=intero%>
- Risultati relativi alla ricerca:<span style="background-color: #ffff00; color: #ff0000">"<%=search%>"</span> - Totale documenti
trovati <%=quanti%></b></td>
<%
response.Write "<td class=""link"" valign=""top"" colspan=""""><div align=""justify""><i><b><a class='link' href=""defaultnew.asp?go=anteprimacom&id=" & rs("id") & "&search=" & Server.UrlEncode(search)& """><font color=""black"">" & EvidenziaParola(Left(rs("doc"),191), search, "<span style=""background-color:#ffff00; color: #ff0000""><b>", "</b></span>")
If Len(rs("doc")) > 10 Then Response.write "..."
response.Write "</a></font></i></div> </td></tr>"
%>
<%
Dim i, intero
i = 1
intero = CInt(quanti / b)
If quanti > (intero * b) Then
intero = intero + 1
End If
%>
<b>Pagina <%=pag%> di <%=intero%></b><br><br>
<%
For i = 1 To intero
If CInt(i) = CInt(pag) Then
%>
[<b><%=i%></b>]
<%
Else
%>
[<b><a href="<%=PageName%>?go=searchcom3&pag=<%=i%>&searc h=<%=Server.UrlEncode(search)%>"><%=i%></a></b>]
spero che sia utile per capire meglio il mio problema.....
grazie ancora
Rob