• User Newbie

    Illuminatemi sulle selezioni da database

    Buongiorno a tutti, intanto complimenti per il forum, davvero molto bello, ultile e interessante.
    Finite le premesse, vorrei chiedere agli esperti qualche consiglio per affrontare meglio le selezioni dal database.
    Attualmente se devo stampare dei dati dal database, mi muovo utilizzando il classico codice di selezione:
    [PHP]
    $result = mysql_query("SELECT * FROM Persons");

    while($row = mysql_fetch_array($result))
    {
    echo $row['FirstName'] . " " . $row['LastName'];
    echo "<br />";
    }
    [/PHP]

    Volevo sapere se esistevano delle alternative a questa selezione (non utilizzando framework preesistenti.

    Un altro dubbio che mi assilla è questo, farò un esempio banale.. supponiamo di avere una tabella con dei compleanni e che a ogni mese sia associato un numero, in un altra tabella ci sono i vari numeri dei mesi con i nomi (es: 1 - gennaio . 2 - febbraio ec..)

    Attualmente mi muovo in questo modo, la come soluzione la trovo davvero sporca:
    [PHP]
    $result = mysql_query("SELECT * FROM compleanni");

    while($row = mysql_fetch_array($result))
    {
    $mese = $row['mese'];
    $results = mysql_query("SELECT * FROM mesi where giorno_mese = '$mese' ");

    while($rows = mysql_fetch_array($results))
    {
    echo $rows['nome_mese'];

    }

    [/PHP]

    Sapete aiutarmi in qualche altro modo mostrandomi una soluzione più corretta.

    Grazie a tutti per l'attenzione
    Buona giornata
    Luca


  • ModSenior

    Ciao DeSposi,
    il primo codice è corretto, il secondo può essere snellito usando un INNER JOIN utilizzando cosi un unica query:
    [php]
    $result = mysql_query("SELECT compleanni.,mesi. FROM compleanni INNER JOIN mesi ON mesi.giorno_mese=compleanni.mese");

    while($row = mysql_fetch_array($result))
    {
    echo $row['nome_mese'];

    }
    [/php]


  • User Newbie

    Wow! Grazie mille!
    Proprio quello che cercavo e finalmente ho capito sto inner joint!


  • User Attivo

    Attenzione però con quei tipi di select (le join), perchè facendo compleanni.,mesi. rischi che un campo di compleanni con lo stesso nome di un campo di mesi venga "sovrascritto" da quello della tabella mesi!!
    Es:
    compleanni => ID, ID_Mese, Nome, Cognome
    mesi => ID, Nome

    compleanni:
    1, 3, "mario", "rossi"
    14, 8, "luigi", "verdi"

    mesi:
    1, "gennaio"
    2, "febbraio"
    ...
    Con queste tabelle ti ritrovi un array così:
    ID => 3
    ID_Mese => 3
    Nome => "marzo"
    Cognome => "rossi"

    !!!!!