Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 25
  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2004
    Messaggi
    493

    problema sito multilingua

    ciao a tutti, ho creato un sito (per ora 2 pag!) in 3 lingue ita russo spa.
    ho scritto tutto il testo delle pagine in un db access e poi richiamo con un recordset i valori che mi servono.
    vorrei richiamare la stringa lang dal'indirizzo presa dalla scelta dell'utente nella prima pag e poi creare una variabile di sessione.
    e per questo faccio cosi:

    codice:
    <%
        var lang = new String(Request.QueryString("lang"));
    
        if (lang == "" || lang == "undefined")
        {
            Response.Redirect("index.html");
        }
        else
        {
            Session("linguaggio") = lang;
            Response.Redirect("home.asp");
        }
    %>
    nella home.asp
    con il recordset richiamo il campo con lang=it e label=intro (ad esempio nel primo spazio della pagina)
    ma come si fa? come creo la connessione e il recordset?
    conviene più con xml o con db? il testo alla fine della fiera saà molto e anche le pagine.
    grazie
    ciao

  2. #2
    Io la connessione la faccio così:

    <%
    ' Creazione della connessione al database
    Set objConn = Server.CreateObject("ADODB.Connection")
    objConn.Open "DRIVER={Microsoft Access Driver (*.mdb)};DBQ="& Server.MapPath("directorytuodatabase/nometuodatabase.mdb")
    %>

    In questo caso si tratta di un database access, comunque su questo sito ci sono guide che spiegano come fare altre tipologie di connessioni.

    Mentre il recordset:

    Set objRs = Server.CreateObject("ADODB.Recordset")
    sql = "SELECT * FROM latuatabella WHERE CampoLang = "&lang&";"
    objRs.Open sql, objConn

    Spero di essere stato chiaro.

    Saluti.

    Romeo

  3. #3
    Utente di HTML.it
    Registrato dal
    Jun 2004
    Messaggi
    493
    sei stato chiarissimo e ti ringrazio!
    quello a non essere stato chiaro sono io!

    ho creato la connessione e il rs come mi hai detto adesso però non mi estrae quello che voglio.

    il db ha 1 tabella: content

    dentro ci sono i campi:

    ID
    idlang
    label
    testo

    nella pagina ad esempio devo mettere il testo dove il campo label è benvenuto e id quello passato con l'indirizzo.

    sempre nella stessa pagine devo mettere anche il testo dove label è "presentazione " e id quello passato con l'indirizzo.

    e così via
    è possibile?

  4. #4
    Se nella tabella ci sono più record con il campo lang impostato a "it" per esempio, devi eseguire un ciclo per visualizzare tutti i record. Spiegati meglio così potrò aiutarti meglio.

    Ciao.

    Romeo.

  5. #5
    Utente di HTML.it
    Registrato dal
    Jun 2004
    Messaggi
    493
    si hai ragione

    allora ho la homepage
    dentro metto un messaggio di benvenuto da richiamare a seconda della lingua.
    quindi il database avra un record con il testo in ita e uno con il testo in eng

    poi metterò sempre in homepage in un altro punto rispetto al messaggio di "benvenuto" un altro testo "descrizione" preso dal db a seconda della lingua
    però, per motivi di impaginazione, i due testi sono in record diversi,
    per capirsi se entro nella versione ita richiamo dal db il testo di "benvenuto" e il testo "descrizione" che sono per necessità in due record diversi.
    per far questo credo che debba fare come record set qualcosa così

    seleziona da tabella dove langid= stringa presa dall'indirizzo passato in precedenza

    e poi nel punto dove voglio inserire il testo
    dovrei dire prendi il testo dalla casella dove "etichetta" (un campo del database) è = a "benvenuto"

    e per la descrizione:
    prendi il testo dalla casella dove "etichetta" è = a "descrizione".

    spero di essermi spiegato questa volta e ti rinrazio ancora!!!
    ciao

  6. #6
    OK.

    Se ho capito bene i due record sono nella stessa tabella. Io di solito quando ho queste esigenze creo un campo descrittivo nella tabella che chiamo txtVoce: per il record del benvenuto inserisco in questo campo il valore txtBenvenuto e per il record descrizione inserisco il valore txtDescrizione.

    Il recordset lo creo così:

    Set objRec = Server.CreateObject("ADODB.Recordset")
    sql = "SELECT * FROM latuatabella WHERE landid = '"&lang&"' ORDER BY txtVoce ASC"
    objRec.Open sql, connessione
    ' Controllo che il recordset non sia vuoto
    If (objRec.BOF = False) AND (objRec.EOF = False) Then
    ' Prelevo il testo benvenuto
    benvenuto = objRec("campodellatuatabella")
    ' Mi sposto un record in avanti
    objRec.MoveNext
    ' Prelevo il testo descrizione
    descrizione = objRec("campodellatuatabella")
    End if
    ' Chiusura del recordset
    objRec.Close
    Set objRec = Nothing
    Quindi nella pagina dove devi mettere il testo utilizzi le due variabile.

    Questa procedura va bene se sai esattamente quanti sono i record che prelevi dal database e penso che questo sia il caso tuo.

    Ciao.

    Romeo.

  7. #7
    Utente di HTML.it
    Registrato dal
    Jun 2004
    Messaggi
    493
    ciao!
    allora ho un piccolo problema, mi dà errore il recordset
    alla riga objrec.open sql

    questo è il codice
    codice:
    <%
    Dim conlang
    conlang = "Driver={Microsoft Access Driver (*.mdb)};DBQ=" & Server.MapPath("/mdb-database/lang.mdb") 
    %> 
    
    <%
    Set objRec = Server.CreateObject("ADODB.Recordset")
    sql = "SELECT * FROM lang WHERE langid = '"&lang&"' ORDER BY label ASC"
    objRec.Open sql 
    ' Controllo che il recordset non sia vuoto
    If (objRec.BOF = False) AND (objRec.EOF = False) Then
    ' Prelevo il testo benvenuto
    benvenuto = objRec("label")
    ' Mi sposto un record in avanti
    objRec.MoveNext
    ' Prelevo il testo descrizione
    descrizione = objRec("testo")
    End if
    %>
    cosa sbaglio?
    a fondo pagina ho messo
    codice:
    <%
    
    
    
    objRec.Close
    Set objRec = Nothing
    
    %>
    
    a
    me però non mi torna una cosa, se faccio un rec set così non mi è molto funzionale.
    io dovrei prendere dal campo testo il contenuto che appare nel record dove label (stesso record) contiene benvenuto e il campo langid contiene it
    esempio database:

    codice:
     
    1      langid=it         label=benvenuto        testo=grazie per la visitablabla
    2      langid=it         label=presentazione    testo=siamo qui per....
    3      langid=en       label=benvenuto        testo=tkanks
    4      langid=it         label=saluto              testo=ciaociao
    5      langid=it         label=altro                testo=grazie per la visitablabla
    in pratica
    nella pagina per inserire il testo in italiano di benvenuto
    interrogo imposto langid=it label=benvenuto e stampo a video il contenuto del campo testo che in questo caso è: grazie per la visitablabla

    poi in un'altra parte della stessa pagina richiamo langid=it label saluto e stampo a video il contenuto del campo testo che è ciaociao
    è possibile?
    grazie e scusa se rompo!!

  8. #8
    Dimmi l'errore che ti da sull'apertura del recordset .

  9. #9
    Utente di HTML.it
    Registrato dal
    Jun 2004
    Messaggi
    493
    ADODB.Recordset error '800a0e7d'

    The connection cannot be used to perform this operation. It is either closed or invalid in this context.

    /dblang.asp, line 14

    la riga 14 è
    objRec.Open sql


    ciao!

  10. #10
    Non gli hai detto con quale connessione aprire il recordset:

    objRec.Open sql, nomeconnessionealdatabase

    Ciao.

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