Response write pagina dinamica

Arcangelo79

Nuovo Utente
25 Feb 2012
6
0
0
Buon Giorno a tutti! Mi rivolgo a voi per un urgentissimo bisogno di aiuto! Allora.... la situazione è la seguente:
Sto sviluppando la Tesi di Laurea. Purtroppo sono davanti ad un grosso ostacolo. La mia tesi consiste nella progettazione e realizzazione di un Social Network. Allora, ho sviluppato una pagina default.asp (già preimpostata come struttura e con campi vuoti) che è la pagina madre di ogni utente. Quando un utente si iscrive al SN la pagina default.asp viene riempita con tutti i suoi parametri inseriti in fase di registrazione ed in più viene inserita anche la foto personale che l'utente ha uploadato. Fin quì nessun problema! Adesso però sto sviluppando il motore di ricerca interno per trovare gli utenti. La keyword su cui si basa il motore di ricerca è il "Nome reale" (sapete come funziona su un S.N.: io cerco il nome anche per sentito dire di una persona e fra i risultati vedo quello che mi interessa, magari riconoscendolo nella foto personale). Una volta che il motore di ricerca mi illustra gli utenti iscritti al SN... e quì arriva la mia domanda:
Essendo il tutto dinamico, come faccio a linkare alla pagina personale dell'utente che mi appare al risultato del motore di ricerca? (visto che la pagina utentepippo.asp non esiste)
Response.Write("......")?
Vi prego aiutatemi!
Grazie anticipatamente! Arcangelo

P.S.: La situazione codice è la seguente:
- DB Access "USERS";
- Tabella "userlist"
- Campi:
username (primary_key)
password
keywords (sta per Nome Reale)
cognome
email
citta
nazione
datanascita
sesso

codice della pagina "risultati.asp"

<%@ LANGUAGE = JScript %>
<%
var testo = String(Request.Form("keywords"));
if (testo=="" || testo=="undefined") Response.Redirect("default.asp");
var keywords = testo.split(" ");
var stringaDiConnessione = "driver={Microsoft Access Driver (*.mdb)};dbq=";
stringaDiConnessione += Server.MapPath("/mdb-database/users.mdb");
var conn = new ActiveXObject("ADODB.Connection");
conn.Open(stringaDiConnessione);
var sql = "SELECT * FROM userlist WHERE";
for (i=0;i<keywords.length;i++) {
if (i>0) sql += " AND";
sql += " keywords LIKE '%" + keywords + "%'";
}
var ris = conn.Execute(sql);
if (ris.EOF) Response.Write("<b>NESSUN UTENTE TROVATO</b>");
else while (!ris.EOF) {
Response.Write ("<a href=""); ---------------- l'INCRIMINATO!
Response.Write(ris("keywords"));
Response.Write(" ");
Response.Write(ris("cognome"));
Response.Write ("</a>");
ris.MoveNext();
}
conn.Close();
%>
 
Ciao,

modifico il precedente messaggio.

<%@ LANGUAGE = JScript %>
<%
var testo = String(Request.Form("keywords"));
if (testo=="" || testo=="undefined") Response.Redirect("default.asp");
var keywords = testo.split(" ");
var stringaDiConnessione = "driver={Microsoft Access Driver (*.mdb)};dbq=";
stringaDiConnessione += Server.MapPath("users.mdb");
var conn = new ActiveXObject("ADODB.Connection");
conn.Open(stringaDiConnessione);
var sql = "SELECT * FROM userlist WHERE";
for (i=0;i<keywords.length;i++) {
if (i>0) sql += " AND";
sql += " keywords LIKE '%" + keywords + "%'";
}
var ris = conn.Execute(sql);
if (ris.EOF) Response.Write("<b>NESSUN UTENTE TROVATO</b>");
else while (!ris.EOF) {
Response.Write('<a href="');
Response.Write(ris("keywords")); //mostra il Nome Reale
Response.Write(".asp"); // estenzione .asp
Response.Write('">'); //chiusura link in href
Response.Write(ris("cognome")); //mostra il Cognome
Response.Write("</a>"); // chiusura tag
Response.Write(" "); // opzionale, usi l'operatore LIKE nella sql quindi basta una cola lettere che mostra tutti i link che hanno quella lettera nel Nome Reale se hai 100 nomi che utilizzano la stessa lettera mette uno spazio fra un link e l'altro.
ris.MoveNext();
}
conn.Close();
%>


Adesso se hai un'utente che si chiama Mario Rossi vedrai:

<a href="Mario Rossi.asp">Rossi</a>

Vale.
 
Ultima modifica:
Ciao,

modifico il precedente messaggio.



Adesso se hai un'utente che si chiama Mario Rossi vedrai:

<a href="Mario Rossi.asp">Rossi</a>

Vale.

Ciao Vale2, intanto un MEGA GRAZIE per avermi risposto.
Allora, ho provato la tua porzione di codice.
Non fa una piega... però la pagina mariorossi.asp naturalmente non esiste, perchè non ho fatto in modo che avvenga questo. (cioè la creazione di una pagina utentepippo.asp) quindi il link non funziona. Di conseguenza, o faccio in modo che per ogni utente si crei la pagina utentepippo.asp, oppure dobbiamo trovare quel maledetto Response.Write....
 
Ultima modifica:
ma c'è qualche ESPERTO che può darmi una mano? oppure vi sono solo smanettoni che copiano ed incollano script già pronti?
 
ma c'è qualche ESPERTO che può darmi una mano? oppure vi sono solo smanettoni che copiano ed incollano script già pronti?

Ciao,

è un forum pubblico e gratuito, dove per risolvere i nostri problemi ci affidiamo all'aiuto di altre persone, che utilizzano parte del loro tempo libero per risolverti un problema. Nessuno è obbligato a rispondere, e se ti rivolgi in questo modo, le possibilità di risposta diminuiscono.


A te serve una pagina secondaria alla quale puoi dare un nome qualsiasi che contiene già la connessione al db e la creazione dei recordset, dopo devi passare l'ID (chiave primaria, nel tuo script si chiama username) l'incandola alla nuova pagina, da li recuperi tutti i dati che interessano.

Pagina risultati.asp

Codice:
<%@ LANGUAGE = JScript %>
<%
var testo = String(Request.Form("keywords"));
if (testo=="" || testo=="undefined") Response.Redirect("default.asp");
var keywords = testo.split(" ");
var stringaDiConnessione = "driver={Microsoft Access Driver (*.mdb)};dbq=";
stringaDiConnessione += Server.MapPath("/mdb-database/users.mdb");
var conn = new ActiveXObject("ADODB.Connection");
conn.Open(stringaDiConnessione);
var sql = "SELECT * FROM userlist WHERE";
for (i=0;i<keywords.length;i++) {
if (i>0) sql += " AND";
sql += " keywords LIKE '%" + keywords[i] + "%'";
}
var ris = conn.Execute(sql);
if (ris.EOF) Response.Write("<b>NESSUN UTENTE TROVATO</b>");
else while (!ris.EOF) {
Response.Write('<a href="nuova_pagina.asp?username=');
Response.Write(ris("username"));
Response.Write('">');
Response.Write(ris("cognome"));
Response.Write("</a>");
Response.Write(" ");
ris.MoveNext();
}
conn.Close();
%>

Qui avrai tutti i record trovati in base alla ricerca lincati:

<a href="nuova_pagina.asp?username=1">PIPPO</a>


Pagina nuova_pagina.asp:

Codice:
<%@ LANGUAGE = JScript %>
<%

var username = parseInt(Request.QueryString("username"));
var Cn = new ActiveXObject("ADODB.Connection");
var Sc = "driver={Microsoft Access Driver (*.mdb)};dbq=" + Server.MapPath("/mdb-database/users.mdb");
Cn.Open(Sc);
var Sql = "SELECT * FROM userlist where username = " + username + ""
var ris = new ActiveXObject("ADODB.Recordset");
ris.Open(Sql,Cn,1);

%>
<html>
 <head>
  <title>PROVA</title>
  <style type="text/css">
   td, div { font-size: 12px; font-family: Verdana; }
   a { color: #FFFFFF; text-decoration: None; }
   a:hover { color: #FFFFFF; text-decoration: None; }
   a.x { color: #3366CC; text-decoration: None; }
   a:hover.x { color: #FF0000; text-decoration: Underline; }
  </style>
 </head>
<body text="#192939">
<% while (!ris.EOF) {%>
<table align="center" width="700" cellpadding="1" cellspacing="0" style="border: Solid 1px #192939;">
 <tr bgcolor="#192939">
    <td width="250" style="color: #FFFFFF;"> <b>Nome <%=ris("keywords")%> - Cognome <%=ris("cognome")%></b></td>
   <td width="250" align="right">
    <font face="Verdana" style="color: #FFFFFF;font-size:12px;"><b>Email</b></font> <a href="mailto:<%=ris("email")%>">[ email ]</a>
    <b>Citta <%=ris("citta")%></b></td>
 </tr>
 <tr>
   <td colspan="2">
         <b>Nazione <%=ris("nazione")%></b><br><br>
      <b>Data Nascita <%=ris("datanascita")%></b></td>
 </tr>
</table>
<%
ris.MoveNext();
}
%>
</body>
</html>
<%Cn.Close()%>

Devi solo impaginarla secondo le tue esigenze.

Ogni link proveniente dalla pagina risultati.asp ti mostra i dati del DB relativi a quello specifico ID (username)


Vale.
 
Ciao,

è un forum pubblico e gratuito, dove per risolvere i nostri problemi ci affidiamo all'aiuto di altre persone, che utilizzano parte del loro tempo libero per risolverti un problema. Nessuno è obbligato a rispondere, e se ti rivolgi in questo modo, le possibilità di risposta diminuiscono.

Vale2 sei stato davvero gentilissimo!
Sei davvero una bravissima persona! ...
Per quanto riguarda la mia affermazione...
beh! quando ti vedi 95 visite al tuo post e nessuno a parte te che si degna di proporre anche una cavolata copiata ed incollata lì, ti girano le scatole...
E soprattutto ho spiegato che la mia era un'urgenza e che questa che sto facendo è la mia "tesi di laurea", ed a nessuno glien'è fregato na' beata ......., a parte te!
Domani mattina proverò il tuo codice!
Ti farò sapere!
Grazie ancora!
...E' per le persone come te che ci si scrive sui forum! ... ce ne fossero di più!!!...
 
Ciao,

Pagina nuova_pagina.asp:

Codice:
<%@ LANGUAGE = JScript %>
<%

var username = parseInt(Request.QueryString("username"));
var Cn = new ActiveXObject("ADODB.Connection");
var Sc = "driver={Microsoft Access Driver (*.mdb)};dbq=" + Server.MapPath("/mdb-database/users.mdb");
Cn.Open(Sc);
var Sql = "SELECT * FROM userlist where username = " + username + ""
var ris = new ActiveXObject("ADODB.Recordset");
ris.Open(Sql,Cn,1);

%>
<html>
 <head>
  <title>PROVA</title>
  <style type="text/css">
   td, div { font-size: 12px; font-family: Verdana; }
   a { color: #FFFFFF; text-decoration: None; }
   a:hover { color: #FFFFFF; text-decoration: None; }
   a.x { color: #3366CC; text-decoration: None; }
   a:hover.x { color: #FF0000; text-decoration: Underline; }
  </style>
 </head>
<body text="#192939">
<% while (!ris.EOF) {%>
<table align="center" width="700" cellpadding="1" cellspacing="0" style="border: Solid 1px #192939;">
 <tr bgcolor="#192939">
    <td width="250" style="color: #FFFFFF;"> <b>Nome <%=ris("keywords")%> - Cognome <%=ris("cognome")%></b></td>
   <td width="250" align="right">
    <font face="Verdana" style="color: #FFFFFF;font-size:12px;"><b>Email</b></font> <a href="mailto:<%=ris("email")%>">[ email ]</a>
    <b>Citta <%=ris("citta")%></b></td>
 </tr>
 <tr>
   <td colspan="2">
         <b>Nazione <%=ris("nazione")%></b><br><br>
      <b>Data Nascita <%=ris("datanascita")%></b></td>
 </tr>
</table>
<%
ris.MoveNext();
}
%>
</body>
</html>
<%Cn.Close()%>

Devi solo impaginarla secondo le tue esigenze.

Ogni link proveniente dalla pagina risultati.asp ti mostra i dati del DB relativi a quello specifico ID (username)


Vale.

Ciao Vale2... allora... ho provato il tuo codice ed è perfetto, ma mi porta un errore:

Intanto se guardo la barra degli indirizzi appare:

http://www.nomesito.com/nuova_pagina.asp?username=quellochevolevo

e fin quì è perfetto.
Il problema è nel riempimento della pagina.
Mi appare:

Microsoft OLE DB Provider for ODBC Drivers error '80040e21'
ODBC driver does not support the requested properties.
/nuova_pagina.asp, line 9

che corrisponderebbe alla riga del tuo codice:
ris.Open(Sql,Cn,1);

non riesco ad andare avanti!
 
Ciao Vale2... allora... ho provato il tuo codice ed è perfetto, ma mi porta un errore:

Intanto se guardo la barra degli indirizzi appare:

http://www.nomesito.com/nuova_pagina.asp?username=quellochevolevo

e fin quì è perfetto.
Il problema è nel riempimento della pagina.
Mi appare:

Microsoft OLE DB Provider for ODBC Drivers error '80040e21'
ODBC driver does not support the requested properties.
/nuova_pagina.asp, line 9

che corrisponderebbe alla riga del tuo codice:
ris.Open(Sql,Cn,1);

non riesco ad andare avanti!

Ciao,

il campo username è di tipo Contatore - Dimendione campo = Intero lungo - Numero valori = incremento e Indicizzato = Sì (Duplicati non ammessi)?

quel campo deve restituirti un numero non quellochevolevo


nuova_pagina.asp?username=1

No

nuova_pagina.asp?username=quellochevolevo

l'errore ris.Open(Sql,Cn,1); è dovuto al fatto che non può esequire la query perchè cerca un valore numerico 1 2 3 4 ecc... non un testo,

var username = parseInt(Request.QueryString("username"));

parseInt() dichiara che il valore richiesto deve essere un numero, così si lavora con i campi di tipo Contatore ed è la prassi corretta.

Campo Username
prima riga valore 1
seconda riga valore 2
terza riga valore 3

Ogni volta che aggiungi dati il campo aumenta di 1 (solitamente questo campo viene identificato e chiamato ID , ma non è obbligatorio, puoi chiamarlo come vuoi ma deve essere un Numero.

<a href="nuova_pagina.asp?username=1">PIPPO</a>

dove 1 fa riferimento al primo campo della tabella del DB, PIPPO è il Cognome

Vale.
 

Discussioni simili