Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it
    Registrato dal
    May 2011
    Messaggi
    762

    Array di array, estrazione random per indice, diversi valori per indice..

    Salve raga, a quest'ora sono cotto..

    ..mi piacerebbe ricevere un consiglio.

    La situazione è questa. Ho un elenco con 10 voci: da 1 a 10.

    Ho dei valori di tipo: posizione di a, voce a, sottovoce a.

    Posizione A, va al primo posto e visualizzerà "voce a" & "sottovoce a".
    Posizione B, va al secondo posto e...
    ..così via..


    ..ci saranno tante "posizioni a", tante "posizioni b", e così via..che andranno nei loro rispettivi posti (primo posto, secondo posto, ecc..).

    ..e poi c'è da dire che ogni coppia di elementi (voce a - sottovoce a; voce b - sottovoce b), dovrà subire un'estrazione random perchè ci saranno più coppie di valori ti tipo "voce a - sottovoce a"; "voce b - sottovoce b", ecc....tra gli elementi che vanno alla posizione a...alla posizione b...ecc...



    Mi seguite?

    Consigli nel frattempo che faccio evaporare il cervello?



    Thanks in advance.

  2. #2
    Utente di HTML.it
    Registrato dal
    May 2011
    Messaggi
    762
    Ho risolto non voglio complicarmi la vita per ora..non c'ho voglia.

    Risultato: invio dieci query ad database per ogni roba che sta in posizione 1, 2, 3, e così via..e poi applico il metodo random che sto già usando per l'estrazione casuale di banner..


  3. #3
    Utente di HTML.it L'avatar di hyde82
    Registrato dal
    Feb 2010
    Messaggi
    243

  4. #4
    Utente di HTML.it
    Registrato dal
    May 2011
    Messaggi
    762
    Eh lo sò ma ho fretta..più avanti implementerò un algoritmo diverso..

  5. #5
    Utente di HTML.it
    Registrato dal
    May 2011
    Messaggi
    762
    Mi faccio perdonare..da riposati il cervello rende meglio. Spero questa soluzione possa essere ritenuta utile (pillola o simili) in futuro per coloro che si ritroveranno a fronteggiare un problema simile.

    Dunque.

    -----------------------------------------------------------------------------------------------------

    Elementi in gioco:

    - Una tabella contenente dei record che contengono "una posizione" da 1 a 10. (DBMS: MySQL).


    Scopo:

    1) Estrarre tutti gli elementi compresi tra le posizioni 1 e 10 e che soddisfano il criterio "dell'attivazione", ovvero, se il link dev'essere visualizzato sul sito web (o altrove) oppure no.
    2) Dato il punto 1, bisogna visualizzare in maniera random tutti i risultati posizione per posizione. Ovvero, se ci sono 2 risultati nella posizione 1, questi (al refresh) dovranno subire la (passatemi il termine và..) "randomizzazione"..o effetto shuffle..o quello che preferite.
    3) Dati i secondi punti precedenti, considerare l'eventualità in cui NON ci siano record nella tabella (ovvero: mysql_num_rows($query_partenza) == 0)..oppure che NON ci siano risultati scaturenti dai risultati estratti dalla tabella, ma in riferimento ad una specifica posizione (ovvero: Risultati posizione 1: 3 - Risultati posizione 5: ZERO).


    Versione precedente:

    Inviavo 10 query, estraevo 10 risultati, facevo 10 controlli diversi, 10, 10, 10, 10..

    Risultato:
    Originariamente inviato da hyde82



    Versione ATTUALE:

    Codice PHP:
    <?php

    // Unica query..dormire fa bene..e BETWEEN pure..
    $query "SELECT dato_1,dato_2,posizione_dato FROM tabella_dati WHERE posizione_dato BETWEEN '1' AND '10' AND visualizzabile='Y'";

    $invio mysql_query($query,$db);
    $result mysql_num_rows($invio);

    if(
    $result 0) { // Gestione caso generale in cui la tabella non restituisce nulla..a voi la creazione dell'ELSE.

        
    while($vai mysql_fetch_row($invio)) {
                switch(
    $vai[2]) {
                    case 
    1$dato1[] = $vai[0]; $datoDiDato1[] = $vai[1]; break;
                    case 
    2$dato2[] = $vai[0]; $datoDiDato2[] = $vai[1]; break;
                    case 
    3$dato3[] = $vai[0]; $datoDiDato3[] = $vai[1]; break;
                    case 
    4$dato4[] = $vai[0]; $datoDiDato4[] = $vai[1]; break;
                    case 
    5$dato5[] = $vai[0]; $datoDiDato5[] = $vai[1]; break;
                    case 
    6$dato6[] = $vai[0]; $datoDiDato6[] = $vai[1]; break;
                    case 
    7$dato7[] = $vai[0]; $datoDiDato7[] = $vai[1]; break;
                    case 
    8$dato8[] = $vai[0]; $datoDiDato8[] = $vai[1]; break;
                    case 
    9$dato9[] = $vai[0]; $datoDiDato9[] = $vai[1]; break;
                    case 
    10$dato10[] = $vai[0]; $datoDiDato10[] = $vai[1]; break;
                }
        }

            
    // ..da subito: a voi la gestione dell'array risultante vuoto.


            // Funzione che gestisce l'estrazione random degli elementi, comprende casi da 0 a count($max_elementi) ed impedisce di andare sotto zero..
        
    function randomLink($array) {    
            
    $random rand(0,count($array));
            if(
    $random == count($array)) {
                
    $random--;
                if(
    $random 0) {
                    
    $random 0;
                }
            }
            return 
    $random;
        }


        
    $n randomLink($dato1); // Basta passare solo un array di elementi per..
        
    $risultatoInsieme1 $dato1[$n]; // ..applicare l'indice da estrarre sia al primo insieme..
        
    $risultatoInsiemeDiInsieme1 $datoDiDato1[$n]; //..che al secondo..

            // $risultatoInsieme1 è il dato che verrà visualizzato.
            // $risultatoInsiemeDiInsieme1 ..idem come sopra, è il dato legato a $risultatoInsieme1

           // ..ripetere questi tre passaggi per i restanti 9 insiemi..oppure migliorare lo script in generale, è possibile..

    ?>

    Risultato:

    Otterrete così l'estrazione random di elementi da visualizzare dove volete realizzare e...senza l'invio di 10 query



    Casi di utilizzo:

    Visualizzazione in "modalità shuffle" di link sponsorizzati, banner, altro.





    Hope it helps,
    W.

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.