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

    Estrazione e visualizazione dati strutturati

    Ciao ragazzi,
    ho creato un database mysql con circa 3.500 record.
    Il database contiene una lista di vini e vitigni italiani.
    Ogni record contine i campi: regione, provincia, comune, nome-vino, descrizione-vino più altri dati minori.

    Il mio problema rigurda l'estrazione e la visualizzazione di questi dati.

    Praticamente mi sono arenato sulla visualizzazione delle regioni:

    <?
    include("config.inc.php");

    $db = mysql_connect($db_host, $db_user, $db_password);
    if ($db == FALSE)
    die ("Errore nella connessione. Verificare i parametri nel file config.inc.php");
    mysql_select_db($db_name, $db)
    or die ("Errore nella selezione del database. Verificare i parametri nel file config.inc.php");

    $query = "SELECT * FROM vini GROUP BY regione ORDER BY regione ASC";

    $result = mysql_query($query, $db);
    while ($row = mysql_fetch_array($result))
    {
    echo strtolower ("<a href=\"http://www.sito.com/vini/$row[regione].html\" class=\"Stile15\">") . " $row[regione]</a>
    "; }
    ?>


    Con questo mi estraggo la lista delle regioni.
    A questo punto dovrei passare oltre: provincia/comune/lista vini
    Come posso procedre.
    C'è qualche esempio per questi database strutturati?

    Grazie

  2. #2
    Utente di HTML.it L'avatar di Razorblade
    Registrato dal
    Feb 2002
    Messaggi
    1,308
    Ciao,
    diversi consigli per te .
    Innanzitutto io cambierei la query con questa:

    $query = "select distinct(regione) from vini where 1 order by regione ASC";
    $result = mysql_query($query);
    while($dati = mysql_fetch_array($result){

    }


    Per ricavarti le provincie ecc.. basta che sostituisci il nome del campo tra le parentesi.

    Un'altra cosa, questo è un consiglio a titolo di organizzazione del database, quando nei record devi inserire nomi di regioni o provincie, per semplicità, ti consiglierei di crearti 2 ulteriori tabelle, una chiamata regioni e l'altra provincie, ed inserire l'id univoco che indica la regione/provincia nei record dei vini.

  3. #3
    Utente di HTML.it L'avatar di Razorblade
    Registrato dal
    Feb 2002
    Messaggi
    1,308
    Ciao,
    diversi consigli per te .
    Innanzitutto io cambierei la query con questa:

    $query = "select distinct(regione) from vini where 1 order by regione ASC";
    $result = mysql_query($query);
    $i = 0;
    while($dati = mysql_fetch_array($result){
    echo "Regione".$i.": ".$dati[regione]."
    " ; // o anche $dati[0]
    $i++;
    }

    Beh, il testo stampato su schermo poi te lo modifichi come vuoi tu
    Non ho testato il codice ma dovrebbe andare.
    Per ricavarti le provincie ecc.. basta che sostituisci il nome del campo tra le parentesi.

    Un'altra cosa, questo è un consiglio a titolo di organizzazione del database, in futuro, quando nei record devi inserire nomi di regioni o provincie, per semplicità, ti consiglierei di crearti 2 ulteriori tabelle, una chiamata regioni e l'altra provincie ed inserirle al loro interno, in modo tale da dover inserire solo l'id univoco che indica la regione/provincia nei record dei vini e non il nome completo.

    Spero di esserti stato di aiuto.
    Bye!

  4. #4
    Ciao e grazie per il consiglio.
    Per ciò che riguarda l'inserimento di un id univoco per ogni località ci avevo già pensato, ma per il momento questo non dovrebbe crearmi un problema, in quanto l'inseriemento dei dati è avvenuto utilizzando un form con preinseriti tutti i nomi di località. Quindi non incorro nel problema di un eventuale località inserita male.

    Lo script va bene (tranne che per una ")" mancante in while($dati = mysql_fetch_array($result)

    Tuttavia anche questa impostazione mi porterrebe ad un lavoro immane di creazione di tutte le sottodirectory.

    Quello che intendo fare è uno script che partendo dalla pagina vini.php mi estragga in sequenza:
    Regione
    Provincia
    Comune
    Vino

    Per cui dovrei riuscire a realizzare questo percorso:
    vini.php (che mi elenca le regioni)
    vini.php?id=regione (che mi elenca le provincie in quella regione)
    vini.php?id=regione/provincia (che mi elenca i comuni in quella provincia)
    vini.php?id=regione/provincia/comune (che mi elenca i vini in quel comune)

    l'ultimo passaggio:
    vino.php?id=prodotto

    ... per me non rappresenta un problema.

    In sostanza vorrei poter procere allo stesso modo di Dmoz.

    P.s. mi spiegheresti cosa fa l'inserimento del numero "1" in
    $query = "select distinct(regione) from vini where 1 order by regione ASC";
    Grazie

  5. #5
    Utente di HTML.it L'avatar di Razorblade
    Registrato dal
    Feb 2002
    Messaggi
    1,308
    Ciao,
    il "where 1", non serve a nulla, è una cosa che ho messo per completezza della query.
    Sostanzialmente io lo metto quando, al presentarsi di certi casi, prevedo di aggiungere degli "AND" nella query ma può tranquillamente essere omesso.

    Quello che vuoi fare tu non è una cosa molto complessa.

    METODO A) avendo le tabelle regioni e provincie a disposizione

    Mettiamo che la tabella regione sia cosi' strutturata:

    id_regione - nome
    .... - .....
    10 - Piemonte
    .... - .....
    14 - Sicilia

    $query = "select * from regione where 1 order by regione ASC";

    1a) In pratica nella pagina vini inizialmente l'utente si troverà di fronte la lista delle regioni, ogni regione linkata portandosi dietro l'id.

    es. $nome_regione


    2a) Cliccando sul link "Piemonte", richiameremo la stessa pagina, ovvero vini.php che stavolta ci mostrerà le sole provincie della regione piemonte..

    Mettiamo che la tabella provincie sia cosi' strutturata:

    id_provincia - id_regione - nome
    1 - 10 - Torino
    2 - 10 - Cuneo
    3 - 14 - Trapani
    ecc.. ecc... ecc...

    La query per ottenere le provincie del solo piemonte sarebbe:

    $query = select * from provincie where 1 and id_regione = $_REQUEST[id_regione];


    Ed avremmo su schermo le provincie per quella regione, un link potrebbe essere:

    es. Torino

    Dove gli id per la regione e la provincia non saranno inseriti da noi a mano, ma saranno 2 variabili prese dal record sul db. Stesso vale per il nome.

    3a) Ed ora l'ultimo passo, ovvero quello che ci mostrerà l'elenco dei vini, la query sarà:

    $query = select * from vini where 1 and regione = $id_regione and provincia =$id_provincia;

    Ed avrai la lista dei vini per la provincia.

    METODO B) lasciando tutto com'è

    Mettiamo il caso che tu non abbia intenzione di creare le tabelle regioni e provincie puoi andare avanti in questo modo

    1b) In pratica nella pagina vini inizialmente l'utente si troverà di fronte la lista delle regioni, ogni regione linkata portandosi dietro l'id.

    es. Piemonte

    La query per la visualizzazione delle sole regioni è quella che ti ho scritto nell'altro post, ovvero:

    $query = "select distinct(regione) from vini where 1 order by regione ASC";

    L'id regione stavolta sarà il nome della regione, che, attenzione, non sarà scritta da noi a mano ma sarà una variabile, $regione ad esempio

    es. $regione

    2b) Per visualizzare le sole provincie per quella regione la query sarà:

    $query = "select distinct(provincia) from vini where 1 AND regione = $_REQUEST[regione] order by provincia ASC";

    Avremo tutte le provincie per quella regione:

    es. Torino


    3b) Ed ora l'ultimo passo, ovvero quello che ci mostrerà l'elenco dei vini, la query sarà:

    $query = select * from vini where 1 and regione = $_REQUEST[id_regione] and provincia =$_REQUEST[id_provincia];

    Ed avrai la lista dei vini per la provincia.

    Non ho dato particolare importanza alla sintassi del codice, quello che volevo esporti era il metodo da usare per portare avanti il tuo lavoro, spero di essere stato utile.
    Ciao!

  6. #6
    Utente di HTML.it L'avatar di Razorblade
    Registrato dal
    Feb 2002
    Messaggi
    1,308
    Ops, mi sono dimenticato dei comuni... beh, il procedimento è sempre lo stesso
    Bye!

  7. #7
    Grazie per il preziosissimo aiuto.

    Avendo già creato il database con una sola tabella ho optato per il metodo B.
    L'ho farcito con un pò di "if" e "else if", per determinare la localizzazione ed alla fine ha funzionato utto perfettamente.

    Adesso, prima di procedere alla pubblicazione del lavoro vorrei fare la riscrittura dell'url.

    Prendiamo ad esempio un url completo:

    http://www.sito.com/vini.php?id_regione=sardegna&id_provincia=oristano &id_vino=vermentino

    vorrei che apparisse così in sequenza:

    http://www.sito.com/vini.html
    http://www.sito.com/vini/sardegna.html
    http://www.sito.com/vini/sardegna/oristano.html
    http://www.sito.com/vini/sardegna/oristano/vermentino.html

    Il mio sito è su Aruba/Linux e per un altra directory ho utilizzato questo:

    RewriteRule ^news_vini/(.*)\.html$ news_vini.php?id=$1 [L]

    Questo è l'unico che funziona, tenendo presente che affinche possa funzionare (su aruba) c'è la necessità di creare sul server una directory vuota chiamata "news_vini"; è un pò strano ma su aruba funziona così.

    Per cui dovrei implementare il modrewrtite di cui sopra, avendo cura di inserire un ulteriore script che mi vada a creare sul server le directory di cui necessito.
    In pratica se l'utente si trova in:
    http://www.sito.com/vini/sardegna.html
    e clicca su "Oristano"
    lo script (affinchè il server non risponda "il file non esiste su questo server") deve creare la cartella "Sardegna" all'interno della cartella "Vini" che ho già creato io.

    Si può fare questo? e Come?

    Grazie

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