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

    Usare un valore casuale per richiamare un id di campo

    Salve, desidero visualizzare una coppia di stringhe casuali prese da una tabella di db.Dopo aver effettuato la connessione al db mediante
    Codice PHP:
    $link mysqli_connect("$db_host""$db_username""$db_password""$db_name") or die("Errore connessione"); 
    dove voglio fare apparire le stringhe casuali scrivo:
    Codice PHP:
    $max "SELECT MAX(id) FROM diz";$casuale mt_rand(1$max);$sql "SELECT * FROM diz WHERE id=$casuale";$rs mysqli_query($link$sql) or die("Errore query database");$riga mysqli_fetch_array($rs);$vocabolo $riga['vocabolo'];$definizione $riga['definizione'];echo "$vocabolo $definizione"
    Il risultato è la stampa del die relativa a $rs. Ho visto che mt_rand() è usata sempre assieme a echo() per stampare direttamente un valore, ma se volessi salvare tale valore come nel mio codice, è sbagliato assegnarlo a una variabile?

  2. #2
    Utente di HTML.it
    Registrato dal
    Sep 2016
    Messaggi
    691

    Non mi fa formattare

    select * from diz order by rand() limit 1

  3. #3
    Utente di HTML.it
    Registrato dal
    Sep 2016
    Messaggi
    691
    Per mt_rand puoi tranquillamente salvarti il valore in una variabile, non ci sono problemi. Ho fatto due post perché il forum non formatta più il testo.

  4. #4
    Quote Originariamente inviata da M4V1 Visualizza il messaggio
    Ho fatto due post perché il forum non formatta più il testo.
    Nemmeno credevo che il mio post fosse stato inserito, mi ha dato errore quando l'ho pubblicato!
    Poi ho risolto con una istruzione molto simile a quella che hai proposto, temo solo che sia un po' pesante, anche se l'ho limitata soltanto ai campi che mi servono e non a tutto con *, dato che deve scansionarsi tutta la tabella diz per poi utilizzare solo una riga.

  5. #5
    Utente di HTML.it
    Registrato dal
    Sep 2016
    Messaggi
    691
    In effetti quella select che ti ho postato scansiona tutte le righe della tabella, quindi se ne hai molte ti potrebbe creare rallentamenti.

    Per darti un ordine di grandezza, ho fatto una prova su una tabella con 300k righe e 4 campi a riga, lì impiega dagli 0.4 a 0.6 secondi. Se invece di select * prendo solo un campo invece impiega intorno a 0.1 secondi.

    Ora ovviamente per decidere devi fare una prova sul tuo sistema e capire se e quanto ti rallenta, ma come vedi devi avere molte righe per doverti iniziare a preoccupare.

  6. #6
    Beh, dubito arriverò mai a 300.000 righe... Spero di raggiungerne qualche centinaio...
    Grazie per le prove.

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 © 2019 vBulletin Solutions, Inc. All rights reserved.