Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it
    Registrato dal
    Aug 2006
    Messaggi
    82

    Problema su query dinamica creata tramite valori checkbox

    Salve a tutti.
    Ho il seguente problema:

    Ho creato una piccola newsletter all'interno del sito dell'ufficio per inviare delle comunicazioni ai nostri collaboratori. Il funzionamento prevede una prima pagina in cui inserisco il testo da inviare, una seconda pagina dove mi seleziono tramite checkbox i collaboratori a cui voglio recapitare la mail e una terza pagina che elabora i dati ed invia la mail.
    Il problema si verifica nel recupero dei valori delle checkbox.

    Le checkbox me le genero leggendo tutti i collaboratori presenti nel db
    codice:
    response.Write("<input name='sel' type='checkbox' value="&rs("id")&" /> "&rs("nome")&"")
    in pratica mi appare l'elenco di tutti i collaboratori con le relative checkbox. Il valore che viene trasmesso alla pagina successiva e l'ID del relativo record.

    In questa pagina recupero tutti i valori delle check selezionate così:
    codice:
    sel = split(request.form("sel"),",")
    	for each el in sel
    	collaboratore = "id='"&el&"' OR " --------QUESTA SERVE PER LA QUERY SOTTO
    	next
    una volta recuperati i dati eseguo la query per selezionare dal db i collaboratori a cui voglio inviare la mail
    codice:
    rs.Open "SELECT email,nome FROM TBL_Collaboratori WHERE "&collaboratore&"", conn, 1
    Il problema sorge qua: così facendo infatti la query che mi viene fuori sarebbe
    codice:
    rs.Open "SELECT email,nome FROM TBL_Collaboratori WHERE id='1' OR id='2' OR id='3' OR" , conn, 1
    che funzionerebbe benissimo se non fosse che rimarrebbe un OR di troppo alla fine che genera un errore ovviamente.
    Come posso risolvere questo problema?
    Avevo pensato che si potrebbe lavorare sul ciclo for affinchè per l'ultimo valore che recupera non inserisce OR, ma non so come fare e soprattutto se è la soluzione corretta.

    Qualcuno mi da una mano a risolvere questo problema???

  2. #2
    codice:
    sel = split(request.form("sel"),",")
    	for each el in sel
    	collaboratore = "id='"&el&"' OR " --------QUESTA SERVE PER LA QUERY SOTTO
    	next
    collaboratore=collaboratore& "1=1"

  3. #3
    Moderatore di ASP e MS Server L'avatar di Roby_72
    Registrato dal
    Aug 2001
    Messaggi
    19,559
    la request.form("sel") dovrebbe riportarti gli id separati da virgola...
    A quel punto non ti serve splittarli e "rimontarli" per la query... puoi usare la clausola IN ()
    codice:
    rs.Open "SELECT email,nome FROM TBL_Collaboratori WHERE id IN ("& sel &")" , conn, 1
    Roby

  4. #4
    Utente di HTML.it
    Registrato dal
    Aug 2006
    Messaggi
    82
    Grazie innanzitutto ad entrambi per la risposta.
    Usando la soluzione di Grambo continuavo a ricevere un errore mentre con la soluzione di Roby funziona alla grande e soprattutto come dici te Roby, non faccio prima una cosa e poi torno indietro, cioè prima splitto il request e dopo lo rimonto. Onestamente non conoscevo l'esistenza della clausola IN (come hai potuto ben capire non sono un esperto) quindi ti ringrazio doppiamente....

    Alla proddima e di nuovo grazie ad entrambi.....

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.