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

    [PHP & MySQL] Struttura database

    Ciao a tutti,

    sto cercando di creare un mio piccolo gestionario per dei lavori che faccio ai clienti, ho provato in diversi modi a creare il database ma senza risultato buono.
    Il db lo impostato cosi:

    tb_clienti
    cli_id
    cli_nome
    cli_cognome
    .....


    tb_articoli
    art_id
    art_descrizione
    art_prezzo

    tb_dati
    dt_id
    art_id
    cli_id

    Pero provando a creare la pagina in php non mi esce corretto quello che voglio fare.

    pagina 1 lista dei clienti se clicco su il primo va alla pagina 2 e mi da tutti i suoi dati del cliente indirizzo via ecc. e poi appena sotto sempre nella pagina 2 vorrei fare un lista per data con i lavori svolti in quel giorno.


    Esempio visivo:


    Pagina 1

    cliente1
    cliente2

    Pagina 2

    cliente1
    via saltamartino 5
    ecc....



    02.02.2007
    03.02.2007

    pagina 3


    dettaglio del lavoro in tal data.


    Ecco schematcamente é cosi pero nel database non so dove mettere la data in che tabella!!
    Sapreste darmi una mano a impostare il database dopo per il resto dovrei riuscirci, almeno credo.


    Grazie Michel
    PHP THE BEST

  2. #2
    Provo a spigarmi meglio.

    Allora il cliente 1 per esempio puo avere diversi lavori fatti e li faccio vedere nella pagina 2, e sempre il cliente 1 nei lavori fatti puo avere piu articoli (per esempio. Installazione windows, configurazione email, ecc).

    Sapete come posso impostare il database corretto??

    Grazie Michel
    PHP THE BEST

  3. #3
    Utente di HTML.it L'avatar di Lak3d
    Registrato dal
    Aug 2006
    Messaggi
    1,031
    TabellaClienti
    -IdCliente
    -RagioneSociale
    -Indirizzo
    -P.Iva
    -Telefono
    -Email

    TabellaLavori
    -IdLavoro
    -IdCliente
    -Spesa

    TabellaArticoli
    -IdArticolo
    -IdLavoro
    -IdCLiente
    -TipoLavoro

    Io la vedo così. Son due relazioni 1:N
    L'unico dubbio che ho è sulla presenza del campo IdCliente nella terza tabella, ma credo che se lo tieni ti potrebbe facilitare alcune query.

  4. #4
    TabellaClienti
    -IdCliente
    -RagioneSociale
    -Indirizzo
    -P.Iva
    -Telefono
    -Email

    TabellaLavori
    -IdLavoro
    -IdCliente
    -Spesa

    TabellaArticoli
    -IdArticolo
    -IdLavoro
    -IdCLiente
    -TipoLavoro

    Ma non dovrei fare una tabella con gli articoli, nel caso che devo aggiungere un nuovo prodotto?

    In sostanza vorrei questo:

    Nome cliente: antonio Buffi
    Via: casa 2
    ... ecc


    e sotto la lista dei vari lavori del cliente antonio buffi:

    data:

    02.02.2007 <-- link alla pagina di dettaglio
    06.02.2007 <-- link alla pagina di dettaglio

    e nella pagina di dettaglio visualizzo cosi:

    Data:
    02.02.2007

    Lavori eseguiti:
    Installazione windows xp
    Configurazione email
    installazione stampante
    ecc...

    per la data 06.02.2007

    data:
    06.02.2007

    Lavori eseguiti:
    configurazione nuovo hardware
    configurazione email

    Non so forse sono io che non riesco a capire come impostare le tabelle: esempio di come le ho impostate io:


    tb_clienti
    -cli_id
    -cli_ditta
    -cli_nome
    -cli_cognome
    -cli_via
    -cli_cap
    -cli_citta
    -cli_telefono
    -cli_fax
    -cli_email

    tb_articoli
    -art_id
    -art_descrizione
    -art_prezzo

    tb_lavori
    -lav_id
    -cli_id
    -art_id
    -lav_data

    Grazie per la pazienza e un salutone a tutti.
    PHP THE BEST

  5. #5
    Utente di HTML.it L'avatar di Lak3d
    Registrato dal
    Aug 2006
    Messaggi
    1,031
    tb_clienti
    -cli_id
    -cli_ditta
    -cli_nome
    -cli_cognome
    -cli_via
    -cli_cap
    -cli_citta
    -cli_telefono
    -cli_fax
    -cli_email

    tb_articoli
    -art_id
    -art_descrizione
    -art_prezzo

    tb_lavori
    -lav_id
    -cli_id
    -art_id
    -lav_data
    che è quello che ti ho scritto io... con la sola differenza che nella seconda tabella, oltre al campo art_id (il campo chiave) ci dovrebbe essere anche un campo collegato al cli_id, visto che per ogni cliente avrai più record articoli. Insomma,la tabella articoli com'è collegata alla tabella clienti? E' questo che manca.

  6. #6
    tb_clienti
    -cli_id
    -cli_ditta
    -cli_nome
    -cli_cognome
    -cli_via
    -cli_cap
    -cli_citta
    -cli_telefono
    -cli_fax
    -cli_email

    tb_articoli
    -art_id
    -cli_id
    -art_descrizione
    -art_prezzo

    tb_lavori
    -lav_id
    -cli_id
    -art_id
    -lav_data

    Ok facendo come dici tu sarebbe cosi come ho fatto sopra, ma se però devo aggiungere un articolo devo aggiungere anche il cliente a quel articolo? Sicuramente sono io che non ci arrivo con la mia testolina! Sarebbe giusto come dici tu allora?

    Come sempre grazie per la pazienza!

    Saluti Michel
    PHP THE BEST

  7. #7
    uppete!
    PHP THE BEST

  8. #8
    Utente di HTML.it L'avatar di Lak3d
    Registrato dal
    Aug 2006
    Messaggi
    1,031
    certo, altriemnti come identifichi quale articolo corrisponde al determinato cliente?
    ti basta inserire il rispettivo id cliente, preso dalla tabella 1. E' quello che identifica il cliente.
    Son poi i campi che legano le varie tabelle, db RELAZIONALE. Non a caso si parla di relazioni 1:N e 1:1
    A meno che tu non vuoi creare una struttura a una singola tabella ovviamente, ma ti assicuro che non conviene.

    Esempio:

    Articoli:
    codice:
    id -- idcliente -- art_descrizione -- prezzo
    1         1                blablabla          20$
    2         1                blablabla          15$
    3         2                blabla              10$
    4         1                blabla              99£
    Ecco che cercando in tabella articoli tutti i record che hanno come idcliente 1 avrai tutti gli articoli legati al cliente 1. (1, 2 e 4). Questi id, a loro volta, se ricercati nella tabella Lavori ti daranno tutti i lavori svolti in quel giorno di quell'articolo per quel cliente.

    Esempio:

    Lavori
    codice:
    lav_id -- art_id -- cli_id -- lav_data -- descrizione lavoro
    1              1          1         data           stampante
    2              1          1           ""                rete
    3              1          1           ""             configurazione
    4              2          1 
    5              2          1
    6              4          1 
    7              4          1
    8              4          1
    Capito? I campi id son quelli che creano le relazioni fra le tabelle.
    Comunque l'idcliente nell'ultima tabella è ridondante visto che comunque puoi tranquillamente fare query con le inner join coinvolgendo più tabelle.

  9. #9
    Come primo grazie per avermi risposto, nei prossimi giorni che ho tempo riprovo a creare il tutto e a vedere cosa succede, non sono ancora un buon programmatore sono a livelli base ancora, e sto imparando tutto da solo, chiaramente grazie a questo bel sito sto imparando per bene un bel po di cosette.
    PHP THE BEST

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.