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

    Pagina commercio elettronico

    Salve a tutti, ho scritto una pagina asp nel quale creo un form contenente una tabella con degli articoli che possono essere acquistati. Gli unici campi di input presenti nella tabella sono un "input hidden", contenente l'id del prodotto che voglio acquistare ed una casella di testo nel quale l'utente inserisce la quantità di prodotto che vuole prendere(ordine).
    Usando per prova il metodo get la stringa di richiesta è questa:
    id=1&ordine=5&id=2&ordine=0&id=3&ordine=0&id=4&ord ine=0&id=5&ordine=4&submit=Acquista

    Ora ho alcune domande da sottoporvi:
    1)Come faccio a prendere id e quantità relativa ad ogni prodotto? Ho provato Request.Form("id") per vedere se tornava un array con gli id ma non va.

    2)Come faccio a fare in modo che vengano richiesti solamente i prodotti con ordine diverso da 0? Per come ho fatto io se la tabella avesse 1000 tuple verrebbero inviate mille coppie "id ordine"

    3)Se dopo che prendo i dati creo una pagina in cui vi è un riassunto dei prodotti selezionati con il rispettivo quantitativo (ordine). Se l'utente vuole modificare i dati deve tornare alla pagina precedente però il campo con il quantativo ordinato deve assumere i valori precedenti.
    Io avevo pensato di creare una variabile con Session("nome variabile") a seconda del valore assunto di questa variabile, impostavo il valore del quantitativo ordinato.
    Ora il mio problema è questo come faccio a memorizzare un array bidimensionale acquisti[id][qta] in cui ogni riga contiene id e quantità del prodotto precedentemente selezionata?
    Una semplice var acquisti[][]; scritta in una pagina asp basta? Come potrei fare?
    Grazie a tutti, ciao ciao.

  2. #2
    1)

    request.querystring("nome_campo") ricava i dati del form quando nel method del form è usato GET

    request.form("nome_campo") ricava i dati del form quando nel method è usato POST

    2)

    devi ricavarti tutti gli id (che, se il campo si chiama uguale, ti verrà una cosa del tipo id1,id2,id3,id4,etc..., quindi basta che splitti sulla virgola e hai tutti gli id che passano) e per ogni id ti ricavi il campo relativo del form (magari lo chiami idN_quantita e poi fai request.querystring(idN & "_quantita") ), controlli che sia >0 e il gioco è fatto

    3)

    per salvare i dati, potresti salvarti o due array, uno contenente gli id e l'altro le rispettive quantità, oppure un oggetto dictionary, usando come chiavi gli ID e come valori le quantità, oppure due stringhe,
    codice:
    str1="," & id1 & "," & id2 & "," & id3 & "," & ...
    str2="," & quantita1 & "," & quantita2 & "," & quantita3 & "," & ....
    e poi usi il metodo instr per ricavartri i dati...potresti mettere il tutto in una session, oppure se non vuoi, passare i valori con campi hidden (però non credo che tu possa usare gli array in quel caso)

    insomma di cose da dire ce ne sono...

  3. #3
    Ciao intato ti ringrazio subito cosa fondamentale.
    Allora io il get l'avevo usato per vedere quello che veniva passato ma io devo usare il metodo post e non get.
    Se non ho capito male dovrei quindi adoperare un Request.Form("idNumero"), ora non ci sarebbero dei metodi tipo hasNext o moveNext per spostarsi sui parametri? Oppure dovrei creare una Session("variabile") con il numero di parametri e poi tramite questa iterare con un for e prendere id1,ordine1,id2,ordine2 ecc ecc?

    Per quanto riguarda l'invio di dati la cui quantità sia superiore a 0 ho qualche piccolo problemino nelc apire come fare, la pagina che asp mi genera ha un form combinato in questo modo:

    <form name="acquisti" method="post" action="conferma.asp" onsubmit="return acq()">
    <table id="aq" width="70%"border="0">
    <tr><td>Nome</td><td>Quantit&agrave;</td><td>Prezzo</td><td>Quantitativo ordine</td></tr>
    <tr><td>floppy-disk<input type="hidden" name="id" value="1" /> </td>
    <td>1000</td>
    <td>0.5&euro;</td>
    <td><input type="text" name="ordine" size="5" value="0" /></td>
    </table>

    <input type="submit" name="submit" value="Acquista" />
    <input type="reset" name="reset" value="Annulla" /></form>

    Dove acq è una funzione javascript che verifica che in ordine ci siano dei numeri con valore minore di quantità. Il controllo sui valori da inviare, che devono essere solo quelli maggiori di zero, dove dovrei metterlo?
    Grazie, ciao ciao.

  4. #4
    intanto metterei
    codice:
    <input type="text" name="<%= recordset("id") %>_ordine" size="5" value="0" />
    in maniera da collegare il campo dell'ordinazione con l'id

    e poi fai una cosa del tipo:

    codice:
    'ricavo gli id
    arrId=split(request.form("id"),",")
    
    for each id in arrId
    
    quantita=cint(request.form(id & "_ordine"))
    if quantita>0 then 
    'ha scelto di acquistare questo id
    end if
    
    next

  5. #5
    Niente non va lo stesso.

    Mi viene dato questo errore
    Tipo di errore:
    Errore di run-time di Microsoft JScript (0x800A138F)
    Previsto oggetto
    /conferma.asp, line 25

    La riga a cui si riferisce è questa:
    var arrId=split(Request.Form("id"),",");

    Non ne vuole sapere, come posso fare?

    Grazie, ciao ciao.

  6. #6
    edit.

    mi sa che ho scritto una cazzata, scusate...
    non riesco a cancellarlo :S
    Ah, Jedis! I had no ideas! What can i do for you, honored Jedis?

    I'm not Jedi. I'm a guy with a lighsaber and a few questions.

  7. #7
    ti ho scritto il codice per vb non per JSP...fattelo tradurre che non conosco bene la sintassi di jsp

  8. #8
    Grazie per l'aiuto, sono riuscito a risolvere quel problema. Ora ho un problema ho creato un form con una tabella ed alla fine ci sono 3 pulsanti, a seconda del pulsante che presso devo tornare ad una pagina diversa, come faccio ad implementare questa cosa?

    Questo è l'intestazione del form
    <form name="confermati" method="post" action="acq.asp">

    //qua c'è una tabella

    <input type="submit" name="ok" value="Ok" />
    <input type="submit" name="cambia" value="Cambia" />
    <input type="submit" name="annulla" value="Annulla" />
    </form>

    Ora se presso il pulsante ok devo andare nella pagina acq.asp scritta in action.
    Se presso cambia vado in acquisti.asp (Come faccio a dirglielo??)
    Se presso annulla torno in home.html(Come faccio a dirglielo??)

    Per quanto riguarda una domanda che avevo fatto prima Santino83 mi aveva gentilmente risposto però non so come fare. Cioè io avevo chiesto questo:
    creo un form contenente la tabella con dei campi visibili ed alcuni hidden quando faccio submit mi vengono passati alla pagina specificata in action tutti i campi, quindi anche se seleziono solo una riga (che contiene nel mio caso un campo hidden id ed un campo di testo ordine) mi vengono passate tutte le righe.
    Ora come faccio a fare in modo che alla pagina specificata in action vengano passate le righe il cui campo ordine è >0?
    Santino mi ha risposto così:
    "devi ricavarti tutti gli id (che, se il campo si chiama uguale, ti verrà una cosa del tipo id1,id2,id3,id4,etc..., quindi basta che splitti sulla virgola e hai tutti gli id che passano) e per ogni id ti ricavi il campo relativo del form (magari lo chiami idN_quantita e poi fai request.querystring(idN & "_quantita") ), controlli che sia >0 e il gioco è fatto"
    Solo che non so come fare.



    Grazie a tutti, ciao ciao.

  9. #9
    per la tua ultima richiesta, il codice che ti avevo postato in vb fa quello che chiedi, solo che devi chiedere a qualche anima pia di tradurtelo

    per la prima domanda, il problema è di javascript lato client e quindi devi chiedere al forum adatto (javascript appunto) inquanto dovrai mettere 2/3 funzioni che facciano quello che dici


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.