Visualizzazione dei risultati da 1 a 8 su 8
  1. #1

    Recupero di dati dal db in modo random dagli ultimi 20

    Ciao a tutti,

    Vi chiedo un piccolo aiuto, ho un circa 3000 articoli in un db la cui chiave primaria è un ID che si AUTOINCREMENTA, quando interrogo il db vorrei visualizzare gli articoli in ordine casuale tra gli ultimi 20 inseriti.


    Sono riuscito a inserire la funzione rand nella queri

    $query = "$myquery FROM $db_tab ORDER BY rand() LIMIT 1 ;

    ma naturalmente estrae in modo causale dai 3000 articoli.

    é possibile inserire una funzione che mi prelevi l'articolo in modo random dagli ultimi 20 inseriti?


    Grazie

  2. #2
    Ci sono principalmente tre modi per farlo:

    1. Estrai i record con un LIMIT 20 ORDER BY id DEC, li salvi in un array e poi applichi shuffle
    2. Utilizzi una subquery per l'estrazione di cui sopra e poi esegui un ORDER BY RAND()
    3. Identifichi l'ID del 21 record e poi utilizzi una clausola WHERE ID > x ORDER BY RAND()

  3. #3
    scusami, attualmente io ho questo codice:

    $myquery = "SELECT id, data, titolo, LEFT(testo, $words) AS testo";
    break;

    seleziono i dati che voglio estrarre


    $query = "$myquery FROM $db_tab ORDER BY rand() LIMIT 1 ;

    e qua avvio la queri in modalità random.

    come faccio ad estrarre i deti in un array?

    per favore puoi postarmi un esempio di codice?

  4. #4
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    Filippo ti ha già spiegato tutto. Estrai gli ultimi 20 e su quelli esegui l'ordinamento random

    codice:
    select * from (
    select * from tabella order by id desc limit 20) as tab order by rand()

  5. #5
    allora, ad estrarre i primi venti ci sono riuscito:

    $myquery = "SELECT id, data, titolo, LEFT(testo, $words) AS testo";
    break;

    $array = "$myquery FROM $db_tab ORDER BY id desc limit 20";
    e fino qua tutto bene

    $query = "$array FROM $db_tab ORDER BY rand() LIMIT 1";

    non riesco a farlo funzionare

  6. #6
    scusate risolto grazie

  7. #7
    vi consulto ancora, avendo modificato il codice, ho perso una variabile inserita in

    $myquery = "SELECT id, data, titolo, LEFT(testo, $words) AS testo";
    break;

    la variabile LEFT(testo, $words) mi consentiva di estrarre non tutto l'articolo ma bensì le prime 500 lettere, avendo modificato il condice in:

    $query = "select * from (
    select * from $db_tab order by id desc limit 20) as tab order by rand() LIMIT 1";

    per usare la funzione random sugli ultimi articoli inseriti non riesco a limitare l'articolo, nel senso che esce integralmente deformando anche la mia pagina html.

    Come posso fare per inserire nuovamente la mia variabile per visualizzare solo le prime 500 lettere?

  8. #8
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    codice:
    select * from (
    select id, `data`, titolo, left(testo,500) AS testo from tabella order by id desc limit 20) as tab order by rand() limit 1

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.