Visualizzazione dei risultati da 1 a 9 su 9
  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2000
    Messaggi
    25

    Ciclo per associare i dati da form

    Ciao a tutti.
    Ho il seguente problema con un carrello acquisti.

    Raccolgo i prodotti selezionati e le quantità immesse dall'utente in questo modo:
    codice:
    cod=Request.Form("cod") 
    quantita=TRIM(Request.Form("quantita"))
    poi effettuo lo split degli array di dati:
    codice:
    cod_split=Split(cod,",")
    quantita_split=Split(quantita, ",")
    Ma quando cerco di aggiornare la tabella con le quantità inserite dall'utente, il tutto non funziona. In pratica nopn riesco ad associare ad ogni prodotto il relativo valore della quantità.
    Ecco lo script incriminato:
    codice:
    for i=0 to ubound(cod_split) 
    sql = "UPDATE "&acquisti&" SET quantita = '"&quantita_split(i)&"' WHERE cod = '"&cod_split(i)&"'"
    rs.Open sql, cn 
    next
    Qualcuno sa aiutarmi? Grazie fin d'ora.

  2. #2
    Moderatore di ASP e MS Server L'avatar di Roby_72
    Registrato dal
    Aug 2001
    Messaggi
    19,559
    Stampa cod e quantita e vediamo come sono fatti.
    Se cod è numerico non ci vanno gli apici nella query...

    Roby

  3. #3
    Utente di HTML.it
    Registrato dal
    Jan 2000
    Messaggi
    25

    Per Roby

    Ciao Roby, grazie dell'aiuto.

    In realtà nel precedente codice ho usato la variabile "cod" per pura comodità, nello script reale uso la variabile "descrizione" che comunque è un campo di testo. Ho provato ad eliminare le virgolette dalla variabile "quantita" che è di tipo numerico: non cambia nulla.
    Questo è il codice completo:
    codice:
    <%
    quantita=TRIM(Request.Form("quantita"))
    descrizione=Request.Form("descrizione")
    %>
    <%
    'GESTIONE VIRGOLETTE ACCESS
    FUNCTION virgolette (stringa)
    virgolette = REPLACE(stringa, "'","''")
    END FUNCTION 
    descrizione=virgolette(descrizione)
    %>
    <%
    descrizione_split=Split(descrizione, ",") 
    quantita_split=Split(quantita, ",") 
    corpo = ""
    
    for i=0 to ubound(descrizione_split) 
       corpo= corpo & " "&descrizione_split(i)&": "&quantita_split(i) & vbcrlf
       sql = "UPDATE "&utente&" SET quantita = "&quantita_split(i)&" WHERE descrizione = '"&descrizione_split(i)&"' "
       rs.Open sql, cn 
      next
    %>
    
    <%=corpo%>
    Ed ecco un esempio di risultato della stampa della variabile "corpo":

    Prodotto1: 4
    Prodotto2: 2
    Prodotto3: 3

    Finchè lo stampo, non c'è problema. Il problema è che all'interno del database viene aggiornato solo
    il primo valore (in questo caso Prodotto1, Quantità = 4), mentre rimangono invariati (cioè uguali a 1)
    tutti gli altri valori delle quantità.

  4. #4
    Moderatore di ASP e MS Server L'avatar di Roby_72
    Registrato dal
    Aug 2001
    Messaggi
    19,559
    codice:
    sql = "UPDATE "&utente&" SET quantita = "&quantita_split(i)&" WHERE descrizione = '"&descrizione_split(i)&"' "
    cn.execute(sql)
    Roby

  5. #5
    Utente di HTML.it
    Registrato dal
    Jan 2000
    Messaggi
    25

    Per Roby

    Niente da fare. Anche con il tuo codice ottengo sempre lo stesso risultato.
    Spero tu abbia in serbo altre soluzioni, se no, grazie comunque dell'aiuto.

    Ciao

  6. #6
    Utente di HTML.it L'avatar di heroes3
    Registrato dal
    Aug 2001
    Messaggi
    2,483
    stampa a video la query e vedi che c'è dentro

    response.write SQL &"
    "
    così le stampi tutte


  7. #7
    Utente di HTML.it
    Registrato dal
    Jan 2000
    Messaggi
    25
    Ciao heroes3, grazie dell'aiuto.
    Ho provato a stampare il risultato della query come mi hai consigliato. Si scopre che dopo la prima descrizione
    prodotto, tutti le altre, inspiegabilmente, vengono precedute da uno spazio bianco. Ho provato a passare il
    codice prodotto invece della descrizione, ma non cambia nulla.
    Ecco un esempio di stampa della query:
    codice:
    UPDATE carrello SET quantita = 2 WHERE cod_prodotto='100'
    UPDATE carrello SET quantita = 3 WHERE cod_prodotto=' 101'
    UPDATE carrello SET quantita = 4 WHERE cod_prodotto=' 170'
    UPDATE carrello SET quantita = 5 WHERE cod_prodotto=' 301'
    Ora almeno è ovvio perche sul database non vengono trovate le corrispondenze.
    A questo punto, però non so come risolvere. Ho verificato il passaggio dei dati, per sicurezza ho pure
    fatto il TRIM dei request, ma niente: continua ad aggiungere lo spazio. Ho stampato anche l'array di dati
    ricevuti dal Form prima di sottoporlo alla query SQL, ma anche qui appaiono gli spazi. Ecco la stampa di
    Request.FormTRIM(("cod_prodotto")):

    100, 101, 170, 301

    Hai qualche consiglio? Grazie fin d'ora.

  8. #8
    Moderatore di ASP e MS Server L'avatar di Roby_72
    Registrato dal
    Aug 2001
    Messaggi
    19,559
    codice:
    sql = "UPDATE "&utente&" SET quantita = "&quantita_split(i)&" WHERE descrizione = '"& trim(descrizione_split(i)) &"' "
    cn.execute(sql)
    Roby

  9. #9
    Utente di HTML.it
    Registrato dal
    Jan 2000
    Messaggi
    25

    Grazie

    Ho risolto. Grazie ragazzi (heroes3 per il consiglio di stampare la query; Roby_72 per la trim interna alla query).
    Ciao e a buon rendere

    Xavier

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.