Pagina 1 di 4 1 2 3 ... ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 36
  1. #1

    Passare dei valori provenienti da form a una pagina per la registrazione su un .mdb

    Ciao a tutti!
    Sto realizzato un progettino con cui dovrò svolgere un esame; il sistema praticamente è una sorta di e-shop molto ma molto semplificato... purtroppo il professore ci ha obbligato ad usare le ASP (avrei preferito il php con l'aggiunta di MySQL).
    Il database ha al suo interno 4 tabelle: 1 per i produttori, 1 per la tipologia di oggetti, 1 per i prodotti correllati da descrizione e prezzi.
    Sino ad ora ho realizzato le pagine che e tramite varie form inseriscono, modificano e cancellano i dati presenti nella tabella dei produttori e degli oggetti; naturalmente ho realizzato anche le pagine per la visualizzazione di questi dati.
    Passiamo ora alla parte più complessa, quella relativa alla tabella dei prodotti; per ora ho realizzato la pagina che visualizza i dati (dato che la tabella dei prodotti associa a produttore e tipo di prodotto l'indice delle rispettive tabelle, ho utilizzato un comando JOIN per visualizzare a video i produttori e tipologia di oggetto senza visualizzare gli indici), ho inserito anche il comando cancella.
    Ma non riesco a fare le pagine di modifica, inserimento e ricerca di questi prodotti.
    Partiamo per gradi, vorrei innanzi tutto costruirmi la form per l'inserimento di nuovi prodotti, che deve avevere due menu a tendina (da cui visualizzare produttori e tipo di oggetto, informazioni provenienti dalle rispettive tabelle) le text box relative alla descrizione dell'oggetto e il prezzo; successivamente realizzerò gli altri passi.
    Avevo pensato di lavorare in questo modo, i due menu a tendina selezionano l'indice e lo passano a una seconda pagina che andrà a inserire tutti i parametri inseriti precedentemente dentro il db; c'è però un problema, non riesco ad aggiungere nulla al DB... volevo quindi chiederi aiuto per risolvere questo problema. Vi posto il codice:


    pagina di inserimento 1
    codice:
    <%@LANGUAGE = VBScript%>
    
    
    
    
    <%
        Call CnOpen()
    %>
    
    <html>
    <head>
    <title>Selezione Costruttori e TipoItems</title>
    
    </head>
    <body>
    
    
    
    <form name="inserisci_oggetto" method="post" action="catalogo_inserimento_2.asp">
    Costruttore:
    <select name="costruttori" >
    <option value="0"></option>
    
    <%
    
        Dim SQL
        SQL = "SELECT * FROM Costruttori ORDER BY Descrizione ASC"
        rs.Open SQL, cn, 1
        While rs.EOF = False
    	
    %>
    <option name="costruttori" value="<%=rs(0)%>"><%=rs(1)%></option>
    <%
            rs.MoveNext
        Wend
        rs.Close
    %>
    </select>
    
    Tipo Item:
    <select name="tipoitems" >
    <option value="0"></option>
    <%
    
        SQL = "SELECT * FROM TipoItems ORDER BY Descrizione ASC"
        rs.Open SQL, cn, 1
        While rs.EOF = False
    	
    %>
    <option name="tipoitems" value="<%=rs(0)%>"><%=rs(1)%></option>
    <%
            rs.MoveNext
        Wend
        rs.Close
    %>
    </select>
    
    
       
    
     Descrizione: <input type="text" name="desc"> </p>
       
    
     Prezzo: <input type="text" name="prezzo"> </p>
       
    
     <input type="submit" name="invio" value="Conferma inserimento"> </p>
       
    
    Torna indietro</p>
    </form>
    
    </body>
    </html>
    da quello che ho capito dovrei passare le voci relative al produttore e tipo di oggetto come numeri, stesso concetto per il prezzo

    ecco la pagina di inserimento 2

    codice:
    <%@LANGUAGE = VBScript%>
    
    
    
    <%
    
    
    dim intCostruttori
    intCostruttori = request.form("costruttori")
    
    dim intTipoitems
    intTipoitems = request.form("tipoitems")
    
    dim strDescrizione
    strDescrizione = request.form("desc")
    
    dim intPrezzo
    intPrezzo = request.form("prezzo")
    
    
    Conn.Open strConn
    
    
    sql = "SELECT * FROM Items"
    
    Set rs = Server.CreateObject("ADODB.Recordset")
    rs.Open sql, conn ,3,3
    
    
    rs.addnew
    rs(1)=request.form("costruttori")
    rs(2)=request.form("tipoitems")
    rs(3)=request.form("desc")
    rs(4)=request.form("prezzo")
    rs.update
    
    
    rs.Close
    set rs = Nothing
    conn.Close
    set conn = Nothing
    %>
    
    <%
    
    if request.form("desc")<>"" then
       response.redirect "catalogo.asp"
    
    else
       response.redirect "catalogo_inserimento_1.asp"
    
    end if
    %>
    Un salutone e grazie in anticipo per l'aiuto
    Daniele
    Daniele

  2. #2
    Ciao
    se non ho capito male il tuo problema è fare un inserimento in una tabella di dati che ricevi da un form ...

    Allora qualche consiglio:
    1) non utilizzare il metodo .AddNew sui recordset perché è deprecato;
    2) invece di usare rs(4) per indicare il contenuto di un campo utilizza la notazione esplicita cioé rs("PREZZO").value è vero che è più lungo da scrivere ma è decisamente più comprensibile e leggibile (ovviamente ra virgolette utilizzi il nome del campo della tabella access);

    detto questo per inserire un nuovo record nella tua tabella utilizza una semplice stringa SQL:
    codice:
    str_sql = "INSERT INTO Items (COSTRUTTORI, TIPOITEMS, DESC, PREZZO) VALUES ('"
    str_sql = str_sql & request.form("costruttori") & "','" & request.form("tipoitems") & "','" & request.form("desc") & "','" & request.form("prezzo") & "');"
    
    conn.execute str_sql
    Ovviamente occhio agli apiciotti (che non devi mettere dove il campo è numerico e che evi far sparire da eventuali campi di testo provenienti dal form con un replace

    Buon divertimento
    ***************************
    Non può piovere per sempre...
    ***************************

  3. #3
    Ciao!
    Innanzitutto grazie per avermi risposto.
    Ho provato a sostituire gli rs nel modo che mi hai consigliato, ma non vanno (sicuramente sbaglio io):

    Prima:
    <option name="costruttori" value="<%=rs(0)%>">

    <%=rs(1)%></option>


    Dopo:
    <option name="costruttori" value="<%=rs(ID_Costruttore).values%>">

    <%=rs("Costruttore")%></option>


    ma non visualizzo niente

    Per quanto riguarda la form, secondo te è giusta?
    Devo selezionare il costruttore da una tabella, e visualizzarlo su un menu a tendina, idem per il TipoItem che proviene da un'altra tabella ancora.

    Per quanto rigarda la stringa che mi hai postato una volta che gli ho passato i dati della form, è giusto questo approcio?:

    <%


    Set Conn=Server.CreateObject("ADODB.Connection")
    strConn="driver={Microsoft Access Driver (*.mdb)};"
    strConn=strConn & "DBQ=C:\Inetpub\wwwroot\sito\progetto\database\db. mdb"


    %>

    <%
    Conn.Open strConn
    sql = "INSERT INTO Items (Costruttore, Tipo_Item, Descrizione, Prezzo) VALUES ('"
    sql = sql & request.form("costruttori") & "','" & request.form("tipoitems") & "','" & request.form("desc") & "','" & request.form("prezzo") & "');"

    ' Chiusura del database

    conn.Close
    set conn = Nothing
    %>

    La form precente deve passare come valori numerici il Costruttore (che sul menu a tendina per me è testuale, ma in realtà rs(0) gli passa l'indice, e lo stesso per il TipoItem.
    Mentre la descrizione è testuale e il prezzo numerico.

    Grazie ancora della pazienza e della cortesia
    Daniele
    Daniele

  4. #4
    Temo che tu faccia un po' di confusione...

    <option name="costruttori" value="<%=rs(0)%>"><%=rs(1)%></option>
    Con questa option tu dici visualizzerai il contenuto di rs(1) ma passerai, attraverso il form, il valore rs(0) . Di solito si fà così. Cioè visualizzo una descrizione che l'utente può capire ma passo un parametro numerico che serve per lo sviluppatore. Quindi qui tutto ok!

    <option name="costruttori" value="<%=rs(ID_Costruttore).values%>"><%=rs("Cost ruttore")%></option>
    questa non ti funziona perché hai tolto le virgolette da ID_Costruttore (e occhio che è value e non values):
    codice:
    <option name="costruttori" value="<%=rs("ID_Costruttore").value%>"><%=rs("Costruttore").value%></option>
    Gli apici devi controllarli nella INSERT ... è li che devi toglierli per i campi numerici!

    ***************************
    Non può piovere per sempre...
    ***************************

  5. #5
    Ciao!
    Per quanto riguarda la sostituzione degli rs, continuo ad avere lo stesso problema, sebbene faccia il cambiamento.
    Dopo aver clikkato sul tasto di inserimento dei dati

    codice:
    
    <%
    Conn.Open strConn
    sql = "INSERT INTO Items (Costruttore, Tipo_Item, Descrizione, Prezzo) VALUES ('"sql = 
    sql & request.form(costruttori) & "','" & request.form(tipoitems) & "','" & request.form("desc") & "','" & request.form(prezzo) & "');"
    
    ' Chiusura del database
    
    conn.Close
    set conn = Nothing
    %>
    ho questo problema

    HTTP 500.100 - Errore interno del server - errore ASP
    Internet Information Services

    Informazioni tecniche (per il personale del supporto tecnico)

    * Tipo di errore:
    Errore di compilazione di Microsoft VBScript (0x800A0401)
    Prevista fine istruzione
    /sito/progetto/catalogo/catalogo_inserimento_2.asp, line 7, column 81

    POST Data:
    costruttori=93&tipoitems=11&desc=jljljlj&prezzo=7& invio=Conferma+inserimento


    Grazie per l'aiuto
    Daniele
    Daniele

  6. #6
    Azz però quando copi fai attenzione agli a-capo...

    codice:
    sql = "INSERT INTO Items (Costruttore, Tipo_Item, Descrizione, Prezzo) VALUES ("
    
    sql = sql & request.form(costruttori) & "," & request.form(tipoitems) & ",'" & request.form("desc") & "'," & request.form(prezzo) & ");"
    Ti ho tolto gli apicini dove i valori sono numerici...

    Poi magari mettici anche un po' del tuo!!

    Saluti
    Luka
    ***************************
    Non può piovere per sempre...
    ***************************

  7. #7
    Ti chiedo umilmente aiuto... non riesco a farlo funzionare, va sempre in errore

    Ciao
    Daniele
    Daniele

  8. #8
    Originariamente inviato da dany_nero
    Ti chiedo umilmente aiuto... non riesco a farlo funzionare, va sempre in errore

    Ciao
    Daniele
    Bè ... magari posta il codice che ti va in errore, non è che son veggente!
    ***************************
    Non può piovere per sempre...
    ***************************

  9. #9
    Hai ragione, perdonami:




    <%

    Conn.Open strConn

    sql = "INSERT INTO Items (Costruttore, Tipo_Item, Descrizione, Prezzo) VALUES ("
    sql = sql & request.form(costruttori) & "," & request.form(tipoitems) & ",'" & request.form("desc") & "'," & request.form(prezzo) & ");"


    conn.Close
    set conn = Nothing


    %>

    questo è il config


    <%


    Set Conn=Server.CreateObject("ADODB.Connection")
    strConn="driver={Microsoft Access Driver (*.mdb)};"
    strConn=strConn & "DBQ=C:\Inetpub\wwwroot\sito\progetto\database\db. mdb"


    %>

    Ciao e grazie ancore per l'aiuto
    Daniele
    Daniele

  10. #10
    Originariamente inviato da dany_nero
    Hai ragione, perdonami:




    <%

    Conn.Open strConn

    sql = "INSERT INTO Items (Costruttore, Tipo_Item, Descrizione, Prezzo) VALUES ("
    sql = sql & request.form(costruttori) & "," & request.form(tipoitems) & ",'" & request.form("desc") & "'," & request.form(prezzo) & ");"


    conn.Close
    set conn = Nothing


    %>

    questo è il config


    <%


    Set Conn=Server.CreateObject("ADODB.Connection")
    strConn="driver={Microsoft Access Driver (*.mdb)};"
    strConn=strConn & "DBQ=C:\Inetpub\wwwroot\sito\progetto\database\db. mdb"


    %>

    Ciao e grazie ancore per l'aiuto
    Daniele

    Allora:
    la query SQL va scritta così:
    codice:
    sql = "INSERT INTO Items (Costruttore, Tipo_Item, Descrizione, Prezzo) VALUES (" & request.form("costruttori") & "," & request.form("tipoitems") & ",'" & request.form("desc") & "'," & request.form("prezzo") & ");"
    Poi devi farla eseguire:
    codice:
    conn.execute sql
    Se non funziona, prima di chiedere aiuto, prova a fare un po' di debug da solo ... altrimenti non imparerai mai.
    Quindi prima dell'esecuzione della query scrivi un bel:
    codice:
    response.write sql
    e vedi cosa stai eseguendo...

    Luka
    ***************************
    Non può piovere per sempre...
    ***************************

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.