Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2001
    residenza
    Napoli, Italia
    Messaggi
    1,074

    selezionare valore random, eliminando quelli già selezionati

    Questo il problema:
    Devo assegnare, in modo casuale ed a 100 utenti diversi, un anno compreso tra 1900 e 1999.
    L'abbinamento deve avvenire quando ogni utente si registra.
    Io ho adottato questa soluzione, secondo voi ci sono pecche e/o possibili problemi?
    Codice PHP:
    $empty "";
    $yearlist "1900,1901,1902,1903,1904,1905,1906,1907,1908,1909,1910,1911,1912,1913,1914,1915,1916,1917,1918,1919,1920,1921,1922,1923,1924,1925,1926,1927,1928,1929,1930,1931,1932,1933,1934,1935,1936,1937,1938,1939,1940,1941,1942,1943,1944,1945,1946,1947,1948,1949,1950,1951,1952,1953,1954,1955,1956,1957,1958,1959,1960,1961,1962,1963,1964,1965,1966,1967,1968,1969,1970,1971,1972,1973,1974,1975,1976,1977,1978,1979,1980,1981,1982,1983,1984,1985,1986,1987,1988,1989,1990,1991,1992,1993,1994,1995,1996,1997,1998,1999,";      
    $result mysql_query("SELECT * FROM `artists` WHERE `year` != '$empty'");
    while (
    $row mysql_fetch_array($result)) {
        
    $remove $row["year"] . ",";
        
    $yearlist str_replace($remove,"",$yearlist);
    }
    $yearlist substr($yearlist0, -2);
    $anni = array($yearlist);
    $n array_rand($anni1);
    $year $anni[$n
    Ovviamente, poi registro la variabile $year nella tabella 'artists', assegnandola all'utente che si registra.
    Attendo i vostri check...
    metatad
    graphic & web design

  2. #2
    Utente di HTML.it
    Registrato dal
    May 2012
    Messaggi
    1,453
    Non capisco il senso di questa soluzione, cosa devi fare di preciso?

  3. #3
    Utente di HTML.it
    Registrato dal
    Sep 2001
    residenza
    Napoli, Italia
    Messaggi
    1,074
    L'ho scritto, quello che mi serve...
    metatad
    graphic & web design

  4. #4
    Utente di HTML.it
    Registrato dal
    May 2012
    Messaggi
    1,453
    Originariamente inviato da metatad
    L'ho scritto, quello che mi serve...
    Devo assegnare, in modo casuale ed a 100 utenti diversi, un anno compreso tra 1900 e 1999.
    Perchè? Chi ti dice che saranno 100 utenti? Il metodo di elencare tutti gli anni
    in un array è inutile se devi selezionarli random, tanto vale generi un numero random
    compreso fra 1900 e 1999 rand(1900,1999)

    Devo assegnare, in modo casuale ed a 100 utenti diversi, un anno compreso tra 1900 e 1999.
    Poi stando a quanto detto da te ti bastava fare un update generando un anno casuale
    Codice PHP:
    $result mysql_query("SELECT * FROM `artists` WHERE `year` != ''"); 

    while (
    $row mysql_fetch_array($result)) { 

      
    $year rand(1900,1999);

      
    mysql_query("UPDATE `artists` SET `year`=$year WHERE `year` != ''");



  5. #5
    Utente di HTML.it
    Registrato dal
    Sep 2001
    residenza
    Napoli, Italia
    Messaggi
    1,074
    Se ti dico che saranno 100, vuol dire che lo so...
    Perchè sovrapporsi con le proprie ipotesi a quanto uno dice, invece che basarsi su quello?
    Devo abbinare 100 anni a 100 persone. Punto.
    metatad
    graphic & web design

  6. #6
    Utente di HTML.it
    Registrato dal
    May 2012
    Messaggi
    1,453
    Originariamente inviato da metatad
    Se ti dico che saranno 100, vuol dire che lo so...
    Perchè sovrapporsi con le proprie ipotesi a quanto uno dice, invece che basarsi su quello?
    Devo abbinare 100 anni a 100 persone. Punto.
    Sovrapporsi con le proprie ipotesi? Puo essere che quello che stai facendo sia inutile
    o fattibile in altri modi e piu velocemente, perciò si cerca di capire cosa si sta
    facendo anche se vuoi un aiuto

  7. #7
    Utente di HTML.it
    Registrato dal
    Apr 2012
    Messaggi
    159
    Questa funzione, sistemata al tuo caso dovrebbe esserti utile ^.^
    codice:
    <?php
    $min=1;
    $max=100;
    $cont=0;
    $array;
    mt_srand((double)microtime() * 1000000);
    while ($cont<10) {
        $val=mt_rand($min, $max);
        if(count($array)){
            if(in_array($val, $array)==0){
                $cont++;
                $array[$cont]=$val;
                echo $val." ";
            }
        }else{
            $cont++;
            $array[$cont]=$val;
            echo $val." ";
        }
    }
    ?>

  8. #8

    Re: selezionare valore random, eliminando quelli già selezionati

    Io ho adottato questa soluzione, secondo voi ci sono pecche e/o possibili problemi?

    Pirma di tutto questa cosa che hai fatto è un obbrorio...
    Codice PHP:
    $yearlist "1900,1901,1902,1903,1904,1905,1906,1907,1908,1909,1910,1911,1912,1913,1914,1915,1916,1917,1918,1919,1920,1921,1922,1923,1924,1925,1926,1927,1928,1929,1930,1931,1932,1933,1934,1935,1936,1937,1938,1939,1940,1941,1942,1943,1944,1945,1946,1947,1948,1949,1950,1951,1952,1953,1954,1955,1956,1957,1958,1959,1960,1961,1962,1963,1964,1965,1966,1967,1968,1969,1970,1971,1972,1973,1974,1975,1976,1977,1978,1979,1980,1981,1982,1983,1984,1985,1986,1987,1988,1989,1990,1991,1992,1993,1994,1995,1996,1997,1998,1999,"
    ti prego non scrivere MAI più uno scempio simile!!!
    esiste la funzione range() apposta...:

    http://php.net/manual/en/function.range.php


    Seconda cosa.... una volta che tu hai il tuo array $yearlist (creato con range() o nel tu modo barbaro!!!)
    ti basta fare:
    Codice PHP:
    shuffle($yearlist ); 
    e magicamente ti ritrovi gli anni maschiati casualmente dentro l'array...
    quindi puoi consumare uno a uno tutti gli elementi dell'array assegnandoli a chi preferisci

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.