Visualizzazione dei risultati da 1 a 9 su 9
  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2000
    Messaggi
    350

    [mysql] consiglio struttura database

    Buongiorno a tutti.
    Voglio provare a creare un piccolo catalogo prodotti, più che altro per esercizio, che ne ho tanto bisogno!!!
    Però, visto che sono assai pricipiante, vorrei un consiglio su come strutturare il database, per partire con il piede giusto...

    Quello che vorrei fare io è un catalogo con le categorie e le sottocategorie relazionate alle categorie, tipo:
    categorie:
    codice:
    hardware --> schede madri
             --> hard disk
    software --> programma1
             --> programma 2 ...
    E allora ho pensato a una cosa tipo questa:
    codice:
    +-----------------------+	+---------------+
    | Prodotti		|	| Categorie	|
    +-----------------------+	+---------------+
    | id			|   ,-->| id_cat	|
    | categorie		|--'	| tipo 		|
    | sottocategorie	|-,	| colore	|
    | prodotto		| |	+---------------+
    | caratteristiche	| |
    | composizione		| |   	+---------------+
    | formulazione		| |   	| Sottocategorie|
    | avvertenze		|  \   	+---------------+
    | hp			|   '-->| id_sot	|
    | 			|	| sottotipo	|
    +-----------------------+	+---------------+
    Ma in che modo relaziono poi le categorie con le sottocategorie?
    E corretto così o sono fuori strada?
    pap

  2. #2
    Utente di HTML.it L'avatar di gianiaz
    Registrato dal
    May 2001
    Messaggi
    8,027
    per le categorie protresti creare una tabella unica, e mettere un campo chiamato "genitore", se vale 0 è una categoria, se invece è una sottocategoria metterai nel campo genitore l'id della categoria principale a cui deve sottostare.

    Nella tabella prodotti metti un solo campo categoria, e poi ti scrivi una funzione che dato l'id della categoria ti dice se è nella categoria principale o se è figlia.

    ciao

  3. #3
    Utente di HTML.it
    Registrato dal
    Oct 2000
    Messaggi
    350
    Originariamente inviato da gianiaz
    per le categorie protresti creare una tabella unica, e mettere un campo chiamato "genitore", se vale 0 è una categoria, se invece è una sottocategoria metterai nel campo genitore l'id della categoria principale a cui deve sottostare.
    Nella tabella prodotti metti un solo campo categoria, e poi ti scrivi una funzione che dato l'id della categoria ti dice se è nella categoria principale o se è figlia.
    ciao
    Chiedo scusa ma faccio fatica a capire.
    Quindi la tabella sottocategoria serve o no?

    Allora le tabelle dovrebbero essere così??
    Prodotti
    id
    categorie
    prodotto
    caratteristiche
    composizione
    formulazione
    avvertenze
    hp

    Categorie
    id_cat
    tipo
    colore
    genitore

    Sottocategorie
    id_sot
    sottotipo
    pap

  4. #4
    Utente di HTML.it L'avatar di gianiaz
    Registrato dal
    May 2001
    Messaggi
    8,027
    secondo me della sottocategorie ne puoi fare a meno.

    facciamo un esempio

    codice:
    +-----+---------------+----------+
    | id  |  descrizione  | genitore |
    +-----+---------------+----------+
    |  1  |  hardware     |     0    |
    +-----+---------------+----------+
    |  2  |  dischi fissi |     1    |
    +-----+---------------+----------+
    leggendo questa tabella sai che hai 2 categorie:

    - hardware
    - dischi

    sai che hardware è una categoria di primo livello perchè ha genitore uguale a 0, mentre dischifissi sai che è una sottocategoria perchè ha genitore diverso da 0.
    Inoltre sai che dischifissi è una sottocategoria di hardware perchè ha genitore = 1 cioè uguale all'id di hardware.

    Ciao

  5. #5
    Utente di HTML.it
    Registrato dal
    Oct 2000
    Messaggi
    350
    OK, credo di aver capito.
    C'è solo una cosa che non so come fare.

    Quando io dal pannello di controllo inserisco una sottocategoria, vorrei che ci fosse un menu a tendina per scegliere fra le categorie già inserite (perchè l'utente non si debba ricordare l'id della categoria).
    Come faccio a dirgli estrapola tutti i record della tabella categoria dove genitore = 0?
    Io so solo come fare a tirare fuori tutti i record:
    codice:
    <select name="categorie" id="categorie">
    	<?php
    	do {  
    	?>
            <option value="<?php echo $row_categorie['id_cat']?>"><?php echo $row_categorie['tipo']?></option>
            <?php
    	} while ($row_categorie = mysql_fetch_assoc($categorie));
      	$rows = mysql_num_rows($categorie);
      	if($rows > 0) {
          	mysql_data_seek($categorie, 0);
    	$row_categorie = mysql_fetch_assoc($categorie);
      	}
    	?>
    </select>
    pap

  6. #6
    La tabella prodotti deve avere tutti i campi che vuoi più un campo "catID". In questo campo memorizzi l'id della categoria a cui il prodotto appartiene.

    Per l'rganizzazione delle categorie il metodo suggerito da gianiaz è il metodo più semplice che sicuramente è il più adatto a te che stai cominciando ora con il php. Per capire bene come funziona puoi leggerti l'articolo che sta su freephp.it:

    http://freephp.html.it/articoli/view...olo.asp?id=164

    Questo articolo spiega anche un altro metodo, molto interessante, leggermente più complesso da capire all'inizio ma molto più veloce e performante rispetto a quello che ti è appena stato spiegato. Ciao!
    eCommerceRS.NET - Commerciante, vendi on-line!
    Il mio nick è mircov e non mirco!!!

  7. #7
    Utente di HTML.it
    Registrato dal
    Oct 2000
    Messaggi
    350
    Grazie mille.
    Sto provando è sembra che tutto vada bene...
    Spero di non aver detto le ultime parole famose!!!
    Grazie ancora
    pap

  8. #8
    Utente di HTML.it
    Registrato dal
    Oct 2000
    Messaggi
    350

    menu

    C'è una cosa però che non so come fare...

    Se io voglio creare un menu (con liste) che ha come voci principali le categorie e come lista annidata le sottocategorie.... come devo fare???

    Questo è il codice che tira fuori tutte le categorie/sottocategorie come se fossero sullo stesso livello:
    codice:
    $query_menu = "SELECT * FROM categorie ORDER BY categorie.tipo";
    codice:
    <ul>
      <?php do { ?>[*]<a href="news.php?id_cat=<?php echo $row_menu['id_cat']; ?>">
    <?php echo $row_menu['tipo']; ?></a>
      <?php } while ($row_menu = mysql_fetch_assoc($menu)); ?>[/list]
    pap

  9. #9
    Se cerchi nel forum ci sono le soluzioni. Se non le trovi apri un nuovo 3d. Ciao!
    eCommerceRS.NET - Commerciante, vendi on-line!
    Il mio nick è mircov e non mirco!!!

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.