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

    Collegare data base sito multilingue

    Ciao ragazzi,

    mi servirebbe un consiglio, la soluzione migliore per far dialogare un data base "dinamico" con un sito multilingue.

    Cerco di spiegarmi meglio, supponiamo di avere un sito multilingue con le variabili che vanno a prelevare il valore nei file IT.php, EN.php ecc, finqui nessun problema.

    Il sito è composto da molte tabelle, prendiamo per esempio la tabella "SERVIZI", dove i valori dei campi sono: "internet", "fax", "fotocopiatrice" ecc.

    Il sito permette di iscrivere utenti, ogni utente avrà il suo ID.

    Supponiamo che l'utente "prova" abbia selezionato alcuni servizi nella tabella presa come esempio, questi saranno salvati nella tabella come "1", mentre il resto "0".

    Supponiamo che l'utente "prova" abbia selezionato il campo "internet" e "fax", io avendo strutturato il sito multilingua con il sitesma sopra descritto ho già pronte le traduzioni di questi due servizi utilizzando il sistema delle variabili.

    La mia domando ora è, come faccio a collegare il campo "internet" e "fax" alla variabile per la gestione del sito multilingua?

    Da considerare che le lingue sono molte, io per semplificare ho messo solo IT e EN, le tabelle altrettanto ... vorrei un consiglio da voi esperti per non appesantire il database e server.

    Ho sbagliato nell'impostare un database in questo modo?? ... so già che se un domani dovessi aggiungere un nuovo servizio dovrò manualmente aggiungerlo io a mano nel data base ... scomodo.

    Soluzioni a questo mio problema? Soluzioni alternative?

    Grazie mille ragazzi.

  2. #2
    io di solito uso due tabelle...

    nel tuo caso avrei SERVIZI e SERVIZI_TEXT che contiene tutte le traduzioni dei servizi nelle varie lingue...

    in SERVIZI avrei semplicemente gli ID più eventuali altri campi (uguali per tutte le lingue) e la userei per gli abbinamenti con gli utenti
    « Se nella prima mezz'ora non capisci chi è il pollo, allora il pollo sei tu. » [Thomas "Amarillo Slim" Preston, campione del mondo di poker]

  3. #3
    Se ho capito bene ...

    la tabella SERVIZI, sarà cosi composta:

    - ID_SERVIZI (chiave primaria)
    - ID_UTENTE
    - internet
    - fax
    - fotocopiatrice
    - ecc

    la tabella SERVIZI_TEXT, sarà cosi composta:

    - ID_SERVIZI_TEXT (chiave primaria)
    - italiano
    - inglese
    - ecc

    Gusto?

    Non riesco a capire come le colleghi! Nella tabella SERVIZI, ad esmpio nel campo INTERNT ci memorizzo l'ID della tabella SERVIZI_TEXT?

    Cosi facendo, se il sito avrà un alto numero di visite, le query sarebbero molte, per estrarre i dati devo ogni volta fare o 2 query o una query con join. Sbaglio?

  4. #4
    puoi fare una cosa del genere che viene meglio!


    tabella UTENTI

    ID_UTENTE (chiave_primaria)
    nome
    cognome
    etc


    tabella SERVIZI (ID_SERVIZIO + LINGUA = chiave primaria)

    ID_SERVIZIO
    LINGUA
    nome


    tabella SERVIZI_UTENTI (chiave primaria su tutti e 3 i campi o a scelta)

    ID
    ID_UTENTE
    ID_SERVIZIO

    in questo modo avrai n record per lo stesso servizio tutti con lo stesso ID

    es

    id:1
    lingua: it
    testo: internet

    id:1
    lingua: en
    testo: internet_in_inglese


    naturalmente tramite query estrarrai la lingua che ti intessa

    ad esempio se volessi estrarre tutti i servizi abbinati a un utente farai

    Codice PHP:

    define 
    ("LANG","it");   // supponiamo di avere una costante LANG che contiene la lingua dell'utente

    $sql "SELECT *
              FROM UTENTI
              LEFT JOIN SERVIZI_UTENTI ON SERVIZI_UTENTI.ID_UTENTE = UTENTI.ID
              LEFT JOIN SERVIZI ON SERVIZI.ID = SERVIZI_UTENTI.ID_SERVIZIO
                  AND SERVIZI.LANG = \""
    .mysql_real_escape_string(LANG)."\"
              WHERE UTENTI.ID = \""
    .mysql_real_escape_string($id_utente_da_trovare)."\"";

    ... 
    spero di essermi spiegato
    « Se nella prima mezz'ora non capisci chi è il pollo, allora il pollo sei tu. » [Thomas "Amarillo Slim" Preston, campione del mondo di poker]

  5. #5
    Grazie per la risposta,

    volevo, se possibile, farti delle domande chiarificatrici:

    ipotizziamo che ho 20 servizi tutti in multilingua quindi come hai detto avrò 20 record in italiano, 20 in inglese, 20 francese eccc... sempre riferito allo stesso utente, può creare problemi di lentezza database se aumentano gli utenti?

    io sto facendo per la scelta dei servizi in un form con delle caselle check e vengono poi salvati dentro il database nella tabella servizi_utenti, sempre per ipotesi se scelgo 10 servizi li salvo tutti insieme faccio 10 query con update, è corretto o poco ortodosso?

    quando un servizio verrà tolto dalla selezione cancello i record(perchè sono in multilingua) relativi a quest ultimo?

    scusami anticipatamente se faccio domande banali ma sto cercando di capire se sto facendo i passi giusti!!!

  6. #6
    Alle ultime due domande mi rispondo da solo:

    usando replace riesco a sostituire ed aggiungere altri record facendo una sola query!

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.