Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it
    Registrato dal
    Jul 2005
    Messaggi
    684

    conferma ordine e tabelle relazionate

    Ho finito tutto la gestione dell'inserimento degli articoli nel carrello, controllando che non ci siano doppi ID.

    L'utente per poter ordinare deve effettuare il login, salvando la sua userid in una variabile session.

    OK. Ora ho realizzato delle relazioni per le seguenti tabelle:

    FILM;
    dettaglio_ordini;
    ordini;
    clienti.

    Al momento, permetto solo di ordinare un pezzo per articolo.
    Vi allego l'immagine delle relazioni.
    Qui di seguito una descrizione:
    - tabella film, campo IDFILM (contatore e chiave primaria);
    - tabella dettaglio_ordini, campo CODICE(numerico intero lungo e chiave) e campo ORDINE (numerico intero lungo e chiave);
    - tabella ordini, campo CODICE (contatore e chiave) campo CLIENTE (numerico intero lungo);
    - tabella clienti, campo CODICE(contatore e chiave).

    Dovrei in una pagina ASP, leggere il contenuto della variabile codici tramite request.form(infatti passo tramite un campo HIDDEN del form la varibile codici contenente gli IDFILM es: 1,5,67,89).
    Ora vorrei il vostro aiuto per capire come inserire e creare un SQL per questo scopo.

    Grazie, non sono proprio agli inizi... purtroppo l'SQL per gestire le relazioni non lo mastico molto bene!!!

  2. #2
    Utente di HTML.it
    Registrato dal
    Jul 2005
    Messaggi
    684
    l'SQL che dovrei creare, analizzando i campi da riempire, dovrebbe essere strutturata così:

    SELECT ordini.codice, ordini.cliente, ordini.data, *

    * Questo per caricare i campi e riempirli con i dati con il numero dell'ordine, l'ID dell'utente e la data di creazione dell'ordine.

    Proseguo:
    dettaglio_codice,*
    * infatti questo campo e' collegato al campo IDFILM, quindi salvo tutti i codici che contiene la session("IDFILM")

    proseguo:
    FROM [Prima tabella] 'dovrebbe essere quella ORDINI? giusto...

    poi dovrei effettuare una INNER JOIN ma leggendo nel forum mi hanno sconsigliato di usare la INNER JOIN, usare solo WHERE...

    Mi date qualche consiglio?

  3. #3
    Utente di HTML.it
    Registrato dal
    Jul 2005
    Messaggi
    684
    Ho creato uno script di prova, ho eliminato la relazione con la tabella clienti e rinominato il campo "CODICE" della tabella "dettaglio_ordini" in "CODICEFILM", ecco il codice:
    codice:
    <%
    data = Day(Date())  & "/" & Month(Date())& "/" & Year(Date())
    set conn = server.createobject ("ADODB.Connection")
    conn.open "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & server.mapPath("database\audiovisivi.mdb")
    
    sql = "SELECT ordini.CODICE, dettaglio_ordini.codicefilm, dettaglio_ordini.ordine, ordini.cliente, ordini.data FROM ordini INNER JOIN dettaglio_ordini ON ordini.codice = dettaglio_ordini.ordine"
    
    Set rscarrello = Server.CreateObject("ADODB.Recordset")
    rscarrello.Open sql, conn ,3,3
    
    rscarrello.addnew
    rscarrello("cliente") = 1
    rscarrello("data") = data
    rscarrello("codicefilm") = 65
    rscarrello("ordine") = 1 'deve inserire la chiave primaria dalla tabella ordini
    rscarrello.update
    
    rscarrello.close
    set rscarrello = nothing
    
    conn.close
    set conn = nothing
    %>
    mi restituisce il seguente errore:
    Microsoft JET Database Engine (0x80040E21)
    Impossibile aggiungere o modificare il record. Nella tabella "ordini" è necessario un record correlato.
    riferimento alla riga 23

    ovvero: rscarrello.update

  4. #4
    Utente di HTML.it
    Registrato dal
    Jul 2005
    Messaggi
    684
    Ho eliminato la relazione con la tabella film dalla tabella dettaglio_ordini... il tutto funziona...

    Ora vorrei inserire all'interno della tabella "dettaglio_ordini" i valori contenuti nella session("IDFILM"), che rappresentano gli IDFILM della tabella FILM, cosi' fromattati: 1,4,7,98,2,123

    Mi potete consigliare come posso fare?

  5. #5
    Utente di HTML.it
    Registrato dal
    Jul 2005
    Messaggi
    684
    In fase di inserimento nella tabella, ho realizzato questo semplice script.

    codice:
    login = "dreaman74"
    data = Day(Date())  & "/" & Month(Date())& "/" & Year(Date())
    
    set conn = server.createobject ("ADODB.Connection")
    conn.open "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & server.mapPath("database\audiovisivi.mdb")
    
    sqlutente = "SELECT * FROM clienti WHERE userid = '"& login &"'"
    Set rsutente = Server.CreateObject("ADODB.Recordset")
    rsutente.Open sqlutente, conn ,3,3
    IF NOT rsutente.eof THEN
    idutente = rsutente("codiceclienti")
    'ELSE
    'response.write "Utente non trovato!"
    END IF
    rsutente.close
    set rsutente = nothing
    
    'Connessione alla tabella ordini
    sqlordini = "SELECT * FROM ordini WHERE cliente = '"& idutente &"' AND data = '"& data &"' "
    Set rsordine = Server.CreateObject("ADODB.Recordset")
    rsordine.Open sqlordini, conn ,3,3
    IF NOT rsordine.eof THEN
    response.write "hai già ordinato e il tuo pacco è ancora in viaggio"
    ELSE
    rsordine.addnew
    rsordine("cliente") = idutente
    rsordine("data") = data
    rsordine.update
    END IF
    rsordine.close
    set rsordine = nothing
    
    conn.close
    set conn = nothing
    %>
    Se la tabella ordini e' vuota inserisce, altimenti
    restituisce questo errore:
    Microsoft JET Database Engine (0x80040E07)
    Tipi di dati non corrispondenti nell'espressione criterio.
    alla linea: rsordine.Open sqlordini, conn ,3,3

    Cosa devo creare una ricerca tramite "LIKE"?

  6. #6
    Utente di HTML.it
    Registrato dal
    Jul 2005
    Messaggi
    684
    codice:
    sqlordini = "SELECT * FROM ordini WHERE cliente LIKE '%"& idutente &"%' AND data LIKE '%"& data &"%' "
    se nella tabella i due campi hanno quei valori, inserisce lo stesso il nuovo record.

    In poche parole vorrei evitare di inserire un nuovo record se i campi CLIENTE e DATA hanno quei valori, per evitare doppioni.

    Come mai nessuno risponde?

  7. #7
    Utente di HTML.it
    Registrato dal
    Jul 2005
    Messaggi
    684
    OK... risolto, sono un cretino... inserivo nel campo WHERE di clienti un valore come stringa, mentre nel database e' intero lungo!!!

    Errore banalissimo...

    Ora è sorto un altro problema. In access ho un campo data, tipo data/ora standard.

    vado ad inserirgli tramite asp la data attuale, con la seguente sintassi
    pagina inserimento:
    ...
    rs("data") = Day(Date()) & "/" & Month(Date()) & "/" & Year(Date())
    ...

    prima dell'inserimento, nuovo oridine controllo l'idutente and data se sono uguali:
    codice:
    giorno = Day(Date()) & "/" & Month(Date()) & "/" & Year(Date())
    sql = "SELECT * FROM ordini WHERE = "& idutente &" AND data = "& giorno &" "
    Mi passa il controllo della data. Ma la data in che formato la devo inserire? nella query? STRINGA o NUMERO... con la stringa mi restituisce errore di criterio, con NUMERICO, mi salta il controllo...

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.