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

    Prendere row random da un database

    Buon pomeriggio, avrei la necessità di creare una pagina sponsor nel mio sito internet. Dovrebbero essere 3 righe da 10 immagini ciascuna. Essendo 3 righe ho pensato di dividermi i vari sponsor in 3 db, per semplificarmi il lavoro di inserimento nel sito.
    Perchè quando inserisco la pagina nello spazio web questa mi esce completamente bianca.

    Questa parte di codice la inserisco prima di ogni riga per andare a mettere gli id di tutto il primo db di sponsor all'interno di un array, e se non viene riempito da 10 sponsor va a recuperarne dal secondo db
    Codice PHP:
    <?php
            
    // Conteggio quanti sponsr ci sono nel primo gruppo e li butto in un array //
                
    $pos_array = -1;
                
    $diesci 10;
                
    $query "SELECT * FROM sponsor_alto";
                
    $result mysqli_query($conn$query);
                while(
    $row mysqli_fetch_assoc($result)){
                    
    $id[]=$row['id'];
                }
                
    $totalrows mysqli_num_rows($result);
                
    $differenza $diesci $totalrows;
            
    // Prendo in modo random tanti sponsor quanti necessari per riempire l'array //
                
    $query_sec_gruppo "SELECT * FROM sponsor_medio ORDER BY rand() LIMIT ".$differenza."";
                
    $result_sec_gruppo mysqli_query($conn$query_sec_gruppo);
                while(
    $row_sec_gruppo mysqli_fetch_assoc($result_sec_gruppo)){
                    
    $id[]= $id[]+$row_sec_gruppo['id'];
                }
            
    ?>

    Questo è un controllo (inserito prima di ogni immagine) per selezionare su quale db va a prendere il percorso della foto
    Codice PHP:
    <?php
                    $pos_array
    ++;
                    if(
    $pos_array <= $totalrows){
                        
    $query_sa "SELECT * FROM sponsor_alto WHERE id = '".$id[$pos_array]."' LIMIT 1";
                          
    $res_sa mysqli_query($conn$query_sa);
                        
    $row_sa mysqli_fetch_assoc($res_sa);
                    }else{
                        
    $query_sa "SELECT * FROM sponsor_medio WHERE id = '".$id[$pos_array]."' LIMIT 1";
                          
    $res_sa mysqli_query($conn$query_sa);
                        
    $row_sa mysqli_fetch_assoc($res_sa);
                    }
                
    ?>
    In pratica ogni riga ha un db dedicato, e se questo non arriva a 10 row si va a pescare random dal db di livello inferiore (naturalmente per l'ultimo si andrà a pescare dal primo)

  2. #2
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,344
    Innanzi tutto non si tratta di db ma bensi di tabelle. Un db è composto da tabelle. In informatica bisogna essere precisi.

    Poi perché avere 3 tabelle quando potresti aggiungere un campo che chiameresti tipo_sponsor e che andrebbe messo nella chiave primaria ?

    Detto questo non capisco che cosa non va.
    - Non vengono visualizzate le immagini ? Ma non si vede il codice che genera le immagini.

    - Poi non capisco questo => $id[]= $id[]+$row_sec_gruppo['id']; che di sicuro non funzionerà. Già perché non serve a nulla aggiunere un id ad un altro e poi $id[] serve per aggiungere un posto ad un array.
    Ridatemi i miei 1000 posts persi !!!!
    Non serve a nulla ottimizzare qualcosa che non funziona.
    Cerco il manuale dell'Olivetti LOGOS 80B - www.emmella.fr

  3. #3
    Utente di HTML.it L'avatar di telegio
    Registrato dal
    Sep 2001
    Messaggi
    2,592
    come dice il buon @badaze, ti converrebbe fare tutto in una tabella..
    Essendo 3 righe ho pensato di dividermi i vari sponsor in 3 db
    non si vede traccia del terzo nelle query..
    potresti fare una tendina con 3 valori, e nel DB metti solo 1-2-3 a seconda se è 1 (alto) 2 (medio) 3 (basso) e le query le gestisci rispetto a questi valori. potresti chiamare la colonna, sempre come dice badaze, tipo_sponsor
    potresti fare tutto con una sola query, e dividerla poi in 3 come serve a te

  4. #4
    Quote Originariamente inviata da badaze Visualizza il messaggio
    Innanzi tutto non si tratta di db ma bensi di tabelle. Un db è composto da tabelle. In informatica bisogna essere precisi.

    Poi perché avere 3 tabelle quando potresti aggiungere un campo che chiameresti tipo_sponsor e che andrebbe messo nella chiave primaria ?

    Detto questo non capisco che cosa non va.
    - Non vengono visualizzate le immagini ? Ma non si vede il codice che genera le immagini.

    - Poi non capisco questo => $id[]= $id[]+$row_sec_gruppo['id']; che di sicuro non funzionerà. Già perché non serve a nulla aggiunere un id ad un altro e poi $id[] serve per aggiungere un posto ad un array.
    Perdoni per essermi espresso in modo errato. Comunque, non è un problema di "non riuscire a visionare le immagini", in quanto la pagina mi risulta completamente bianca; come se non ci fosse nessun tag html inserito. Ed essendo che ho riscontrato questo errore in 2 pagine in cui c'è questa parte di codice ho immaginato fosse in questo punto l'errore.

    Quote Originariamente inviata da telegio Visualizza il messaggio
    come dice il buon @badaze, ti converrebbe fare tutto in una tabella..

    non si vede traccia del terzo nelle query..
    potresti fare una tendina con 3 valori, e nel DB metti solo 1-2-3 a seconda se è 1 (alto) 2 (medio) 3 (basso) e le query le gestisci rispetto a questi valori. potresti chiamare la colonna, sempre come dice badaze, tipo_sponsor
    potresti fare tutto con una sola query, e dividerla poi in 3 come serve a te
    naturalmente essendo 3 righe di immagini uguali non le ho riportate tutte e 3. Ma il funzionamento è questo:

    -prima riga: controllo se ci sono 10 immagini presenti nella tabella sponsor_alto, se ci sono gli inserisco, altrimenti vado a pescare randomicamente da sponsor_medio tante row quante necessito per arrivare a 10
    -seconda riga: controllo se ci sono 10 immagini presenti nella tabella sponsor_medio, se ci sono gli inserisco, altrimenti vado a pescare randomicamente da sponsor_basso tante row quante necessito per arrivare a 10
    -terza riga: controllo se ci sono 10 immagini presenti nella tabella sponsor_basso, se ci sono gli inserisco, altrimenti vado a pescare randomicamente da sponsor_alto tante row quante necessito per arrivare a 10

  5. #5
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,344
    L’errore può essere ovunque. Quindi proporci una sola porzione di codice (che peraltro contiene un bug) senza mostrare la parte di generazione del codice html non aiuta molto.
    Come l’ho scritto nel mio primo post. Aggiungere un id a un id non ha senso. E’ come aggiungere due codici fuscali.

    PS : Sono anni ormai che rispondo a domande su questo forum e mi sono accorto che molto ma molto spesso non c’è un solo problema nei codici che vengono postati. Spesso la risoluzione di uno fa si che un secondo spunta e come non c’è due senza tre...
    Ridatemi i miei 1000 posts persi !!!!
    Non serve a nulla ottimizzare qualcosa che non funziona.
    Cerco il manuale dell'Olivetti LOGOS 80B - www.emmella.fr

  6. #6
    Utente di HTML.it L'avatar di telegio
    Registrato dal
    Sep 2001
    Messaggi
    2,592
    naturalmente essendo 3 righe di immagini uguali non le ho riportate tutte e 3. Ma il funzionamento è questo:

    -prima riga: controllo se ci sono 10 immagini presenti nella tabella sponsor_alto, se ci sono gli inserisco, altrimenti vado a pescare randomicamente da sponsor_medio tante row quante necessito per arrivare a 10
    -seconda riga: controllo se ci sono 10 immagini presenti nella tabella sponsor_medio, se ci sono gli inserisco, altrimenti vado a pescare randomicamente da sponsor_basso tante row quante necessito per arrivare a 10
    -terza riga: controllo se ci sono 10 immagini presenti nella tabella sponsor_basso, se ci sono gli inserisco, altrimenti vado a pescare randomicamente da sponsor_alto tante row quante necessito per arrivare a 10
    guarda che se usi una sola tabella ti semplifichi la vita, oltre ad avere una gestione migliore e più semplice
    Fai una sola query, dividi i risultati in 3 array e fai le operazioni che dici tu

Tag per questa discussione

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