|
|
|
![]() |
|
Strumenti |
![]() |
#41 | ||
Registered User
Iscritto dal: Dec 2001
Messaggi: 890
|
Quote:
![]() Quote:
![]() |
||
![]() |
![]() |
![]() |
#42 |
Senior Member
Iscritto dal: Jul 2001
Messaggi: 367
|
Ciao,
Mi sa tanto che è proprio un bel casino..... comunque grazie a tutti per questo scambio di opinioni.... |
![]() |
![]() |
![]() |
#43 |
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Ma quale casino...sono 3 righe di codice !!! Basta sapere come si estra un numero casuale in VBScript...
|
![]() |
![]() |
![]() |
#44 | |
Senior Member
Iscritto dal: Dec 2001
Messaggi: 1385
|
Quote:
![]() anzi... mi correggo... oggi so più di coccio del normale ![]()
__________________
lui è il mio amore: "tesò domani ti regalo un guinzaglio lungo 100 km" ![]() |
|
![]() |
![]() |
![]() |
#45 |
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Codice:
Dim x, y, c Randomize ' Initialize random-number generator. x = Int((20 * Rnd) + 1) y = Int((19 * Rnd) + 1) If y >= x Then y = y + 1 End If 'Ora apri il DB e fai una select di tutta la tabella c = 1 While(!rs.EOF() And (c <= x Or c <= y)) If c = x Then 'hai trovato il tuo primo banner (ti metti il link e il nome dell'immagine da parte) Else If c = y Then 'hai trovato il tuo secondo banner (ti metti il link e il nome dell'immagine da aprte) End If rs.MoveNext() c = c + 1 Wend Ultima modifica di cionci : 18-05-2004 alle 17:40. |
![]() |
![]() |
![]() |
#46 |
Registered User
Iscritto dal: Dec 2001
Messaggi: 890
|
Attenzione che così stai dando per scontato che non ci siano buchi fra gli ID!
io farei così: Codice:
Dim x,y,max Randomize ' Initialize random-number generator. ' apri db e fai SELECT COUNT(*) FROM tab_banner max = 'metti in max il conteggio di quanti banner ci sono in tabella If max > 2 then x = Int((max * Rnd) + 1) y = Int(((max - 1) * Rnd) + 1) If y >= x Then y = y + 1 End If 'Ora apri il DB e fai una select di tutta la tabella for I = 1 to Max if I = y or I = x Then 'hai trovato il tuo banner (ti metti il link e il nome dell'immagine da parte) rs.MoveNext() next ELSE 'gestisci il caso in cui in tabella ci siano 0 1 o 2 banner - non serve l'estrazione - ![]() Ultima modifica di dr.stein : 18-05-2004 alle 16:40. |
![]() |
![]() |
![]() |
#47 | |
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Quote:
![]() |
|
![]() |
![]() |
![]() |
#48 |
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Scusa, ma che cambia fra il mio ed il tuo ? A parte i numero di record ricavati dalla query...
|
![]() |
![]() |
![]() |
#49 |
Member
Iscritto dal: May 2004
Messaggi: 75
|
Ma voi siete pazzi da legare!!!
![]() ![]() A mio avviso è + semplice fare un solo random ed estrarre dal db due elementi consecutivi (c'è da sistemare il caso in cui viene selezionato a random l'ultimo elemento.. però è facilmente evitabile facendo random fino al numero di elementi - 1) ![]() Più o meno potrebbe funzionare così: (PHP) $result=mysql_query("SELECT * FROM tabella"); N=mysql_num_rows($result); x=random(N)-1; //Faccio il randon su n-1 elmenti $banner=mysql_query("SELECT * FROM tabella LIMIT x,x+1); quindi mi estrare dall'elemento x all'elemento x+1... vale a dire esattamente quei due elementi. Bo, poi se volete tirarvi seghe mentali fate pure, ma mi sembra un problema fin troppo semplice per stare a complicarsi la vita con codice inutile! ![]() McK |
![]() |
![]() |
![]() |
#50 | |
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Quote:
![]() Inoltre hai supposto l'uso di LIMIT (fondamentale nel tuo esempio) che è una prerogativa di MySQL e che in altri DBMS non è presente ![]() |
|
![]() |
![]() |
![]() |
#51 | |
Registered User
Iscritto dal: Dec 2001
Messaggi: 890
|
Quote:
![]() ![]() effettivamente fanno più o meno la stessa cosa! ![]() |
|
![]() |
![]() |
![]() |
#52 |
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Azzz...mi ero scordato di incrementare C
![]() |
![]() |
![]() |
![]() |
#53 | |
Member
Iscritto dal: May 2004
Messaggi: 75
|
Quote:
Voglio dire che ad ogni banner è associato un numero (da 0 a quanto caspita ti pare) che indica quanto è "importante" o quanto tempo è fissato da contratto (molti vogliono che il loro banner resti fisso in alto alla prima pagina, o a tutte le pagine). Comunque, in questo caso farei una selezione dei banner con rating + alto, oppure selezioni tutti i banner e cambi il tempo di esposizione a seconda del rating. Fare una selezione random di due banner è allo stesso livello della mia selezione, anche perchè se ci pensi con il codice che ho scritto prima tutti i banner hanno la stessa probabilità di uscire (vale a dire 2 probabilità su N), che mi sembra già abbastanza serio. Quindi se si sta parlando di contratti seri, te lo dicono quelli che ti danno i soldi per l'esposizione il tempo di esposizione del loro banner, e l'unico modo che hai per gestirlo è attraverso un rating! McK |
|
![]() |
![]() |
![]() |
#54 |
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Chiaro che ci sia un rating....ma allora metti che quelli che estrai siano i vari banner della stessa azienda (l'azienda l'hai già estratta secondo i rating)... Ti sembra bello visualizzare due banner consecutivi ?
Riguardo al codice non mi sembra per niente complesso...comunque era un discorso più ampio che esulava da questo problema specifico... Almeno nella mia visione del problema... |
![]() |
![]() |
![]() |
#55 |
Registered User
Iscritto dal: Dec 2001
Messaggi: 890
|
Beh, ma chi ti vieta di applicare questo algoritmo ad un recordset GIA' filtrato per rating ?
|
![]() |
![]() |
![]() |
#56 |
Member
Iscritto dal: May 2004
Messaggi: 75
|
nessuno, infatti io non criticavo il vostro codice (non lo farei mai, perchè come sostiene il mio prof. di ingegneria del software, programmare è un arte. Quindi non siamo che artisti, ognuno ha la sua forma d'arte!
![]() Il mio commento era riferito alla lunga discussione su quello che pensavo essere un banale problema. Dalla domanda posta all'inizio pensavo che si chiedesse semplicemente di non mostrare due banner identici, ma non pensavo che ci si riferisse ad un sito professionale. Quindi restando anche io in una discussione "pazza" ![]() Basterebbe fare un ORDER BY qualche campo e prendere due elementi. Cmq per un sito professionale non credo serva molto un random, il sistema di rating dovrebbe già fornire l'ordine in cui estrarre i banner dal database. Solitamente li si prende tutti e viene cambiato il tempo di visualizzazione, di random c'è solo quel'è l'ordine in cui vengono mostrati (a volte nemmeno quello perchè alcuni nel contratto richiedono che il loro banner sia il primo mostrato... come dire: io ti pago ma tu fai quello che ti dico io!! ![]() McK |
![]() |
![]() |
![]() |
#57 |
Registered User
Iscritto dal: Dec 2001
Messaggi: 890
|
|
![]() |
![]() |
![]() |
#58 | |
Senior Member
Iscritto dal: Jan 2003
Città: Roma
Messaggi: 1087
|
Quote:
[OT] Ti devo parlare per quella cosa di lavoro, ti fai sentire per favore? ![]() [/OT] Per il 3d, scusatemi. Saluti
__________________
"La giustizia è come una tela di ragno: trattiene gli insetti piccoli, mentre i grandi trafiggono la tela e restano liberi". Solone |
|
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 15:10.