Il nostro sito in ASP con connessione database Access

Discuti dei problemi relativi alla programmazione nel tuo linguaggio preferito!

Moderatori: cb_123, thrantir, tonertemplum

Messaggiodi tonertemplum il 13 feb 2007, 21:17

CAP. 10: ASSEGNARE UN APPUNTAMENTO

Ben trovati... come promesso l'ultima volta, ormai è tutto in discesa :wink:

Il nostro telemarketing sta prendendo appuntamenti su appuntamenti, è ora di assegnarli a un commerciale, in maniera che ci vada con la scheda già pronta e sappia di cosa stiamo parlando! Benissimo.... vediamo subito il codice asp (come sempre presente anche in formato doc nelle appendici) e commentiamo solo le parti nuove (ben poche, per la verità! )

Codice: Seleziona tutto
<html>
<head>
<title>..:: Area TLM ::..</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<%

Dim i
i = 0
Function bgcol()
  i = i + 1
  if i = 1 then
    bgcol = "#FFFFFF"
  else
    bgcol = "#CCCCCC"
    i = 0
  end if
End Function

%>
<style type="text/css">
<!--
@import url("../css/testo.css");
-->
</style>
</head>

<body>
<table width="526" height="99" border="0" align="center" cellpadding="0" cellspacing="0" class="amministrazione">
  <tr>
    <td height="99">
      <div align="center"><img src="../images/top.png" width="526" height="99"></div></td>
  </tr>
</table>

<p align="center" class="testo"><a href="../inserisci.asp">Torna alla Home Page</a></p>
<form method="post" action="script_amministrazione/query_assegna.asp">
  <font face = "arial" size="1">
  <%

Set cn = Server.CreateObject("ADODB.Connection")
Set rs = Server.CreateObject("ADODB.Recordset")
cn.Open "driver={Microsoft Access Driver (*.mdb)};dbq="&Server.MapPath("/db/appuntamenti.mdb")
sql = "select * from appuntamenti where commerciale is null ORDER BY giorno"

rs.Open sql, cn
%>

abbiamo come al solito aperto la connessione al nostro database e abbiamo preso tutti i record, con una condizione: il commerciale è vuoto (is null)... è inutile infatti vedere tutti gli appuntamenti, vediamo solo quelli nuovi! Ordinati poi per giorno....

Codice: Seleziona tutto
  </font>
  <div align="left">
    <table width="633" BORDER="1" align="center" CELLSPACING="0" BGCOLOR="#FFFFFF" class="testo">
      <THEAD>
        <tr align="center" valign="middle" class="tabelle">
          <th width="146"> <div align="center">Ragione sociale </div></th>
          <th width="115"> <div align="center">Citt&agrave;</div></th>
          <th width="47"> <div align="center">Giorno</div></th>
          <th width="59"> <div align="center">Mese</div></th>
          <th width="26"> <div align="center">Ora</div></th>
          <th width="44"> <div align="center">Minuti</div></th>
          <th width="96"> <div align="center">Commerciale</div></th>
          <th width="24"> <div align="center">Interesse</div></th>
          <th width="38"> <div align="center">Sel.</div></th>
        </tr>
      </THEAD>
      <TBODY>
        <%
On Error Resume Next
rs.MoveFirst
do while Not rs.eof
%>
        <tr bgcolor="<%=bgcol%>" align="center" VALIGN="middle" class="tabelle">
          <td height="22"> <div align="center"><a href='dettaglio.asp?id=<%= rs("id")%>'><%= rs("nome") %></a></div></td>
          <td> <div align="center"><%= rs("citta") %></div></td>
          <td> <div align="center"><%= rs("giorno") %></div></td>
          <td> <div align="center"><%= rs("mese") %></div></td>
          <td> <div align="center"><%= rs("ora") %></div></td>
          <td> <div align="center"><%= rs("minuti") %></div></td>
          <td> <div align="center"><a href='dettaglio.asp?id=<%= rs("id")%>'><%= rs("commerciale") %></a></div></td>
          <td> <div align="center"><a href='dettaglio.asp?id=<%= rs("id")%>'><%= rs("interesse") %></a></div></td>
          <td> <div align="center"><strong>

abbiamo popolato la nostra tabella..... mettendoci pero' una casella da spuntare, vd codice successivo

Codice: Seleziona tutto
              <input type="checkbox" name="ID" value=<%=rs("id")%>>


questa checkbox ha come valore l'ID dell'appuntamento..... infatti che succederà? La pagina quey_assegna.asp leggerà tutti gli ID (le nostre caselle spuntate) e laddove appunto c'è la spunta farà l'assegnazione... lo vediamo meglio nella prossima puntata...

Codice: Seleziona tutto
              </strong></div></td>
        </tr>
        <%
rs.MoveNext
loop%>
      </TBODY>
      <TFOOT>
      </TFOOT>
    </table>
    <p>&nbsp;</p>
    <table width="461" border="0" align="center" cellpadding="0" cellspacing="0" class="testo">
      <tr>
        <td width="163" height="22" class="amministrazione">Commerciale</td>
        <td width="150"><div align="left"><font size="1" face="arial">
            <select name="commerciale" id="commerciale">
              <option selected>alebrescia</option>
              <option>diego.fiozzi</option>
              <option>Galai</option>
              <option>MORETTOSA</option>
            </select>
            </font></div></td>
      </tr>
    </table>
    <p>&nbsp;</p>
    <div align="center">
      <table width="10" border="0" align="center" cellpadding="0" cellspacing="0">
        <tr>
          <td width="10"><input type="submit" name="Submit" value="Assegna"></td>
        </tr>
      </table>
    </div>
  </div>
</form>
<div align="left"></div>
<p>&nbsp;</p>
</body>
</html>


nulla, nulla di nuovo, se non per la casellina... vediamo ora all'opera la pagina che effettivamente fa l'assegnazione... che abbiamo chiamato query_assegna.asp
ASUS M3N78-PRO -- AMD ATHLON 64 X2 5200+@3100 vcore default -- ZALMAN CNPS9500A LED -- 2x2GB TEAM GROUP DDR2 800 -- ATI HD 3650 con ZALMAN VF900 CU-LED -- 2 X SEAGATE 160GB RAID 0 + 1 x MAXTOR 260 GB SATA + 1 x MAXTOR 120 GB SATA
Avatar utente
tonertemplum
Moderatore
Moderatore
 
Messaggi: 6906
Iscritto il: 11 set 2005, 19:11
Località: Roma

 

Messaggiodi tonertemplum il 13 feb 2007, 21:23

CAP. 11: L'ASSEGNAZIONE EFFETTIVA

Codice: Seleziona tutto
<html>
<head>
<title>..:: Area TLM ::..</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<style type="text/css">
<!--
@import url("../../css/testo.css");
-->
</style>
</head>

<body>
<table width="526" height="193" border="0" align="center" cellpadding="0" cellspacing="0" class="amministrazione">
  <tr>
    <td width="526" height="99">
      <div align="center"><img src="../../images/top.png" width="526" height="99"></div></td>
  </tr>
  <tr>
    <td>&nbsp;</td>
  </tr>
  <tr class="amministrazione">
    <td class="amministrazione"><p>


Codice: Seleziona tutto
        <%
for i=1 to request.form("ID").count
ID=request.form("ID")(i)
commerciale=request.Form("commerciale")


il passaggio precedente cosa fa.... conta tutti gli ID che gli abbiamo passato (tutte le caselline spuntate); se li memorizza e richiama anche il commerciale che abbiamo scelto dal menu a tendina.....

Codice: Seleziona tutto
Set cn = Server.CreateObject("ADODB.Connection")
Set rs = Server.CreateObject("ADODB.Recordset")
cn.Open "driver={Microsoft Access Driver (*.mdb)};dbq="&Server.MapPath("/db/appuntamenti.mdb")


Codice: Seleziona tutto
SQL= "UPDATE appuntamenti SET commerciale = ' "&commerciale&" ' where ID = "&ID&" "

rs.Open sql, cn
next
%>


Ed ecco una nuova istruzione SQL..... AGGIORNA (UPDATE) la tabella APPUNTAMENTI impostando (SET) il campo commerciale con il valore preso dal form precedente (commerciale = &commerciale&)... si, ma quale? Esattamente dove l'ID (WHERE ID) è IDENTICO agli ID Presi! Nulla di più, e nulla di meno... gli altri record non saranno minimamente toccati!

Codice: Seleziona tutto
      </p>
      <table width="500" border="0" align="center" cellpadding="0" cellspacing="0" class="testo">
        <tr>
          <td><div align="center" class="amministrazione">Appuntamento assegnato
              correttamente</div></td>
        </tr>
        <tr>
          <td><div align="center"><a href="../assegna.asp"><strong>Torna alla
              pagina di assegnazione</strong></a></div></td>
        </tr>
      </table></td>
  </tr>
</table>

<p>&nbsp;</p>
</body>
</html>


Anche per questa "Puntata" è praticamente tutto.... vedremo in seguito come cancellare un appuntamento che invece non ci serve +.... ciao!
ASUS M3N78-PRO -- AMD ATHLON 64 X2 5200+@3100 vcore default -- ZALMAN CNPS9500A LED -- 2x2GB TEAM GROUP DDR2 800 -- ATI HD 3650 con ZALMAN VF900 CU-LED -- 2 X SEAGATE 160GB RAID 0 + 1 x MAXTOR 260 GB SATA + 1 x MAXTOR 120 GB SATA
Avatar utente
tonertemplum
Moderatore
Moderatore
 
Messaggi: 6906
Iscritto il: 11 set 2005, 19:11
Località: Roma

Messaggiodi tonertemplum il 16 feb 2007, 21:46

CAP. 12: CANCELLARE UN APPUNTAMENTO

Siamo oramai in dirittura di arrivo con il nostro corso... e ormai tutto quello che vediamo non è altro che una modifica di altre parti che abbiamo già costruito..... oggi vediamo come si può cancellare un appuntamento... come al solito due pagine: una in cui vediamo (e selezioniamo) gli appuntamenti, e un'altra che effettivamente fa la cancellazione.... vediamo intanto la pagina in cui scegliamo gli appuntamenti

Codice: Seleziona tutto
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>..:: Area TLM ::..</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<%

Dim i
i = 0
Function bgcol()
  i = i + 1
  if i = 1 then
    bgcol = "#FFFFFF"
  else
    bgcol = "#CCCCCC"
    i = 0
  end if
End Function

%>
<style type="text/css">
<!--
@import url("../css/testo.css");
-->
</style>
</head>

<body>
<table width="526" height="99" border="0" align="center" cellpadding="0" cellspacing="0" class="amministrazione">
  <tr>
    <td height="99">
      <div align="center"><img src="../images/top.png" width="526" height="99"></div></td>
  </tr>
</table>

<p align="center" class="testo"><a href="../index.asp">Torna alla Home Page</a></p>
<form method="post" action="script_amministrazione/query_delete.asp">
  <font face = "arial" size="1">
  <%

Set cn = Server.CreateObject("ADODB.Connection")
Set rs = Server.CreateObject("ADODB.Recordset")
cn.Open "driver={Microsoft Access Driver (*.mdb)};dbq="&Server.MapPath("/db/appuntamenti.mdb")


Codice: Seleziona tutto
sql = "select * from appuntamenti ORDER BY giorno"


ci prendiamo tutti gli appuntamenti che esistono, e gli ordiniamo per giorno...

Codice: Seleziona tutto
rs.Open sql, cn
%>
  </font>
  <div align="left">
    <table width="633" BORDER="1" align="center" CELLSPACING="0" BGCOLOR="#FFFFFF" class="testo">
      <THEAD>
        <tr align="center" valign="middle" class="tabelle">
          <th width="146"> <div align="center">Ragione sociale </div></th>
          <th width="115"> <div align="center">Citt&agrave;</div></th>
          <th width="47"> <div align="center">Giorno</div></th>
          <th width="59"> <div align="center">Mese</div></th>
          <th width="26"> <div align="center">Ora</div></th>
          <th width="44"> <div align="center">Minuti</div></th>
          <th width="96"> <div align="center">Commerciale</div></th>
          <th width="24"> <div align="center">Interesse</div></th>
          <th width="38"> <div align="center">Sel.</div></th>
        </tr>
      </THEAD>
      <TBODY>
        <%
On Error Resume Next
rs.MoveFirst
do while Not rs.eof
%>
        <tr bgcolor="<%=bgcol%>" align="center" VALIGN="middle" class="tabelle">
          <td height="22"> <div align="center"><a href='dettaglio.asp?id=<%= rs("id")%>'><%= rs("nome") %></a></div></td>
          <td> <div align="center"><%= rs("citta") %></div></td>
          <td> <div align="center"><%= rs("giorno") %></div></td>
          <td> <div align="center"><%= rs("mese") %></div></td>
          <td> <div align="center"><%= rs("ora") %></div></td>
          <td> <div align="center"><%= rs("minuti") %></div></td>
          <td> <div align="center"><a href='dettaglio.asp?id=<%= rs("id")%>'><%= rs("commerciale") %></a></div></td>
          <td> <div align="center"><a href='dettaglio.asp?id=<%= rs("id")%>'><%= rs("interesse") %></a></div></td>
          <td> <div align="center"><strong>


Codice: Seleziona tutto
            <input type="checkbox" name="ID" value=<%=rs("id")%>>


Utilizziamo, come per la pagina assegnazione, il sistema delle caselline in modo che possiamo cancellare anche + records alla volta con estrema semplicità....

Codice: Seleziona tutto
              </strong></div></td>
        </tr>
        <%
rs.MoveNext
loop%>
      </TBODY>
      <TFOOT>
      </TFOOT>
    </table>
    <p>&nbsp;</p>
    <div align="center">
      <table width="10" border="0" align="center" cellpadding="0" cellspacing="0">
        <tr>
          <td width="10"><input type="submit" name="Submit" value="Cancella"></td>
        </tr>
      </table>
    </div>
  </div>
</form>
<div align="left"></div>
<p>&nbsp;</p>
</body>
</html>


tutto questo papocchio perchè passiamo alla pagina che segue, query_delete.asp, uno o + ID... e andiamola a vedere....
ASUS M3N78-PRO -- AMD ATHLON 64 X2 5200+@3100 vcore default -- ZALMAN CNPS9500A LED -- 2x2GB TEAM GROUP DDR2 800 -- ATI HD 3650 con ZALMAN VF900 CU-LED -- 2 X SEAGATE 160GB RAID 0 + 1 x MAXTOR 260 GB SATA + 1 x MAXTOR 120 GB SATA
Avatar utente
tonertemplum
Moderatore
Moderatore
 
Messaggi: 6906
Iscritto il: 11 set 2005, 19:11
Località: Roma

Messaggiodi tonertemplum il 16 feb 2007, 21:54

CAP. 13: LA CANCELLAZIONE EFFETTIVA

Immaginate un po' come si chiama l'istruzione SQL che farà la cancellazione effettiva dei record? andiamola a vedere....

Codice: Seleziona tutto
<html>
<head>
<title>..:: Area TLM ::..</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<style type="text/css">
<!--
@import url("../../css/testo.css");
-->
</style>
</head>

<body>
<table width="526" height="193" border="0" align="center" cellpadding="0" cellspacing="0" class="amministrazione">
  <tr>
    <td width="526" height="99">
      <div align="center"><img src="../../images/top.png" width="526" height="99"></div></td>
  </tr>
  <tr>
    <td>&nbsp;</td>
  </tr>
  <tr class="amministrazione">
    <td class="amministrazione"><p>
        <%
for i=1 to request.form("ID").count
ID=request.form("ID")(i)

Set cn = Server.CreateObject("ADODB.Connection")
Set rs = Server.CreateObject("ADODB.Recordset")
cn.Open "driver={Microsoft Access Driver (*.mdb)};dbq="&Server.MapPath("/db/appuntamenti.mdb")


Codice: Seleziona tutto
SQL= "delete * from appuntamenti where ID = "&ID&" "


eccola qui.... DELETE (cancella) from appuntamenti dove l'ID è uguale a quelli che ti ho passato dalla pagina precedente.....

Codice: Seleziona tutto
rs.Open sql, cn
next
%>
      </p>
      <table width="500" border="0" align="center" cellpadding="0" cellspacing="0" class="testo">
        <tr>
          <td><div align="center" class="amministrazione">Appuntamento assegnato
              correttamente</div></td>
        </tr>
        <tr>
          <td><div align="center"><a href="../assegna.asp"><strong>Torna alla
              pagina di assegnazione</strong></a></div></td>
        </tr>
      </table></td>
  </tr>
</table>

<%
Response.Redirect("../delete.asp")
%>
</body>
</html>


Diciamo che arrivati a questo punto, mescolando le 3 istruzioni che abbiamo visto... possiamo praticamente costruire di tutto..... un guestbook.. un forum, anche una pagina index in cui da un pannello amministrativo inseriamo una notizia e questa viene visualizzata appunto in prima pagina.....

QUesta è la potenza e la praticità di un sito dinamico... poter gestire tutto tramite interfacce web, senza dover ogni volta "smontare" tutto quello che è stato costruito. IN fondo, anche il nostro amdplanet è un sito dinamico, costruito con un altro linguaggio, il PHP, e noi infatti ogni volta non facciamo altro che inserire "appuntamenti", che i nostri moderatori potrebbero anche ad esempio cancellare......

La prossima volta metteremo "sotto chiave" le nostre pagine: potremo accedere ad esse se e solo se username e password sono presenti in un database..... faremo di più: dalla stessa maschera di accesso una coppia di "chiavi" porterà a un indirizzo, un'altra coppia porterà a un altro..... cosi' avremo la password per la teleseller e una per noi amministratori...

Alla prossima!
ASUS M3N78-PRO -- AMD ATHLON 64 X2 5200+@3100 vcore default -- ZALMAN CNPS9500A LED -- 2x2GB TEAM GROUP DDR2 800 -- ATI HD 3650 con ZALMAN VF900 CU-LED -- 2 X SEAGATE 160GB RAID 0 + 1 x MAXTOR 260 GB SATA + 1 x MAXTOR 120 GB SATA
Avatar utente
tonertemplum
Moderatore
Moderatore
 
Messaggi: 6906
Iscritto il: 11 set 2005, 19:11
Località: Roma

Messaggiodi tonertemplum il 20 feb 2007, 22:59

CAP. 14: PROTEGGIAMO LE NOSTRE PAGINE AMMINISTRATIVE!

Terminiamo la breve panoramica su asp e access vedendo un po' di proteggere le nostre pagine amministrative con username e password...

Per far ciò usiamo un nuovo database access, chiamato password.mdb, al cui interno è presente la tabella "password" con i campi
nomeutente
password
url.

Avremo una paginetta che, dato un form, prende i due campi, li confronta con quelli nel database, se sono uguali recupera l'url dal database e ci indirizza alla pagina amministrativa, altrimenti ci fa ripetere l'operazione di login.

Vediamo un po' la paginetta "login.asp", che recupera i dati da un form presente in login.htm (non riperto questa ultima pagina che tanto è molto banale da costruire, con due textarea)....

Codice: Seleziona tutto
<%
Dim nome_ut
Dim pass
nome_ut = Replace(Request.Form("nome_utente"), "'", "''")
pass = Replace(Request.Form("password"), "'", "''")

Dim cn
Set cn = Server.CreateObject("ADODB.Connection")
cn.Open "driver={Microsoft Access Driver (*.mdb)};dbq="&Server.MapPath("/db/password.mdb")
Dim sql
sql = "SELECT ID FROM password WHERE nomeutente='" &nome_ut&_
       "' AND password='" &pass& "'"
sql2 = "select url from password WHERE nomeutente='" &nome_ut&"' AND password='" &pass& "'"
Dim rs
Set rs = cn.Execute(sql)

Dim autenticato
if rs.eof then
  autenticato = false
else
  autenticato = true
end if


if autenticato = true then
rs = cn.Execute(sql2)
dim url
url = rs("url")
  Session("Autenticato") = "OK"
  Response.Redirect(url)
 
else
  Response.Redirect("login.htm")
end if
rs.Close
cn.Close
Set rs = Nothing
Set cn = Nothing
%>


Qual è la particolarità? Abbiamo due istruzioni SQL,
Codice: Seleziona tutto
sql = "SELECT ID FROM password WHERE nomeutente='" &nome_ut&_
       "' AND password='" &pass& "'"
sql2 = "select url from password WHERE nomeutente='" &nome_ut&"' AND password='" &pass& "'"


La prima appunto cerca un valore, ID, e vede se c'è in base alla coppia di dati che gli abbiamo passato; la seconda recupera l'url a cui mandarci.

Abbiamo una variabile, autenticato, settata su false all'inizio. Scorre tutti i record, se non esiste (if rs.eof) allora non siamo autenticati (autenticato = false) altrimenti è vera (autenticata = true).

E solo in questo caso ci rimanderà alla nuova url, infatti

Codice: Seleziona tutto
if autenticato = true then
rs = cn.Execute(sql2)
dim url
url = rs("url")
  Session("Autenticato") = "OK"
  Response.Redirect(url)


se autenticato è vera, esegue la sql2, imposta una variabile di sessione a OK e ci rimanda (response.redirect) all'url presente nel database....

STOP! Cos'è questa variabile di sessione? é una specie di cookie, scritta lato server, che vive per tutto il periodo in cui l'utente è connesso al nostro sito, o al massimo per 20 minuti se l'utente non fa nulla). A cosa ci serve? Presto detto...

Siamo stati reindirizzati alla nostra pagina index.asp sotto amministrazione; la quale effettua per prima cosa il controllo se esiste una variabile di sessione autenticata su OK, se è cosi prosegue, altrimenti... ci ributta alla login!

ecco il codice da inserire in testa alle nostre paginette.....

Codice: Seleziona tutto
<%

if Session("Autenticato")<>"OK" then

  Response.Redirect("../login.htm")

end if

%>


Se la variabile di sessione autenticato non è OK allora
rimanda a login.htm...

provate infatti, senza loggarvi, a entrare su http://webtemplum.somee.com/amministrazione/index.asp
verrete subito rimandati alla login....
ASUS M3N78-PRO -- AMD ATHLON 64 X2 5200+@3100 vcore default -- ZALMAN CNPS9500A LED -- 2x2GB TEAM GROUP DDR2 800 -- ATI HD 3650 con ZALMAN VF900 CU-LED -- 2 X SEAGATE 160GB RAID 0 + 1 x MAXTOR 260 GB SATA + 1 x MAXTOR 120 GB SATA
Avatar utente
tonertemplum
Moderatore
Moderatore
 
Messaggi: 6906
Iscritto il: 11 set 2005, 19:11
Località: Roma

Messaggiodi tonertemplum il 20 feb 2007, 23:07

THE END

Con stasera abbiamo finito il nostro piccolo e breve viaggetto...

Abbiamo toccato alcuni aspetti della programmazione ASP, senza pretesa di conoscerla a fondo... l'idea di fondo usata è quella che a tuttoggi uso nel telemarketing della mia società (ovviamente con opportune differenze)... sicuramente impaginata in maniera migliore; ma con le nozioni di base che abbiamo tirato fuori in questo viaggetto è ad esempio possibile costruire una struttura a + livelli (ad esempio una maschera di inserimento credenziali unica per ben 4 livelli gerarchici, dalla teleseller all'amministratore passando per il commerciale e il revisore!). Manipolazione accurata dei dati (vedi solo quelli così, cerca solo quelli in quel modo, somma gli appuntamenti che il commerciale dalla sua maschera ha chiuso OK e calcola - e stampa - automaticamente la busta paga della teleseller....... )

Ci vuole tempo, ci vuole pazienza, ma vedere un giocattolino che gira e funziona è sempre una bella soddisfazione!

Concludo scusandomi con tutti coloro che possano aver trovato il "corso" troppo difficile anche per la sua troppa superficialità... alcune cose ripeto, le ho date per scontato, nulla toglie pero' per tutto quello che non è chiaro di postare tranquillamente le vostre domande; sarò ben lieto di darvi tutte le delucidazioni che posso!

Mi piacerebbe magari che qualcuno di voi si cimenti nel costruire, non so, un guestbook, che posti i suoi avanzamenti (magari anche semplicemente scrivendo due righe oggi ho fatto questo domani faccio questo) e pubblichi il lavoro che sta facendo... e se trova difficoltà che le esponga, e insieme vediamo di risolverle!

Un abbraccio caro forum,
Alessandro
ASUS M3N78-PRO -- AMD ATHLON 64 X2 5200+@3100 vcore default -- ZALMAN CNPS9500A LED -- 2x2GB TEAM GROUP DDR2 800 -- ATI HD 3650 con ZALMAN VF900 CU-LED -- 2 X SEAGATE 160GB RAID 0 + 1 x MAXTOR 260 GB SATA + 1 x MAXTOR 120 GB SATA
Avatar utente
tonertemplum
Moderatore
Moderatore
 
Messaggi: 6906
Iscritto il: 11 set 2005, 19:11
Località: Roma

Messaggiodi nemesys_72 il 20 feb 2007, 23:25

no t devi assolutamente scusare, anzi grazie per il c*l* che ti sei fatto per portare avanti questa cosa..
grazie mille davvero..
:D
Mors Omnia Aequat
Immagine
Avatar utente
nemesys_72
Magister
Magister
 
Messaggi: 21760
Iscritto il: 11 feb 2005, 14:56
Località: Il Veneto è la mia Patria..

Messaggiodi tonertemplum il 21 feb 2007, 08:38

prego! :oops: :mrgreen: ho solo tentato cmq di fare del mio meglio (anche se potevo sicuramente fare di +....)

Mi impegnerò di più nel guestbook, promesso! 8-)
ASUS M3N78-PRO -- AMD ATHLON 64 X2 5200+@3100 vcore default -- ZALMAN CNPS9500A LED -- 2x2GB TEAM GROUP DDR2 800 -- ATI HD 3650 con ZALMAN VF900 CU-LED -- 2 X SEAGATE 160GB RAID 0 + 1 x MAXTOR 260 GB SATA + 1 x MAXTOR 120 GB SATA
Avatar utente
tonertemplum
Moderatore
Moderatore
 
Messaggi: 6906
Iscritto il: 11 set 2005, 19:11
Località: Roma

 
Precedente

Torna a Programmare

Chi c’è in linea

Visitano il forum: Nessuno e 1 ospite

cron