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

    Insert-Into-Where , è possibile?

    Ho una pagina con una serie di checkbox, nel momento in cui voglio inserire i dati corrispondenti nel db faccio un ciclo sulle check selzionate e ogni volta che ne trovo una inserisco i dati corrispondenti nel db. Vorrei farlo tramite sql ma non so se ho scritto un comando inesistente o cosa. La mia stringa sql è:

    INSERT INTO tabVoti (Id_Sond, Id_Risp, IP_Voto, DataVoto)
    VALUES (id_sondaggio, id_risp, "'" & userip & "'", date())
    WHERE id_risp=" & id_risp & " AND id_sond=" & id_sondaggio

    E mi ritorna l'errore:
    [Microsoft][ODBC Microsoft Access Driver] Syntax error (missing operator) in query expression 'WHERE id_risp=8 AND id_sond=1'.
    miofile.asp, line 49

    sulla riga di esecuzione sql "set rs_voto = connsond.execute(sql_voto)"

  2. #2

  3. #3
    Utente bannato
    Registrato dal
    Jun 2004
    Messaggi
    1,854
    ma a che cavolo serve?

  4. #4
    Devo memorizzare i voti per un sondaggio.
    Memorizzo anche l'ip di chi vota e la data per far sì che non voti + di 1 volta al giorno quindi ogni volta vado ad aggiungere alla tabella VOTI una riga per ogni voto dato alle opzioni possibili.

    Ho pensato di utilizzare l'update tipo questo, ora faccio esperimenti:
    UPDATE tabVoti SET tabVoti.Id_Sond = 2, tabVoti.Id_Risp = 2, tabVoti.IP_Voto = "2", tabVoti.DataVoto = 14/11/2004
    WHERE (((tabVoti.Id_Sond)=1) AND ((tabVoti.Id_Risp)=1))


    Mi sto incasinando da sola

  5. #5
    Utente bannato
    Registrato dal
    Jun 2004
    Messaggi
    1,854
    il where seleziona le righe con le date caratteristiche durante un insert into non serve a nulla

  6. #6
    Per evitare che un utente nello stesso giorno con lo stesso IP esegua più di un voto, non puoi usare una sole query SQL, ma almeno due.

    La prima deve essere una SQL di SELECT che controlla se l'IP esiste nella tabella per la data odierna, se esiste non esegui più nulla,
    se non esiste esegui la SQL di INSERT per inserire nella tabella il voto.

    prima select

    codice:
    SELECT IP_Voto FROM tabVoti WHERE IP_Voto = "'" & userip & "' AND DataVoto = Date()
    se dalla SELECT di prima trovi risultati non esegui la query di insert qui sotto, se non ci sono dati la esegui

    codice:
    Query da eseguire solo se la SELECT di prima non torna dati.
    
    INSERT INTO tabVoti (Id_Sond, Id_Risp, IP_Voto, DataVoto) 
    VALUES (id_sondaggio, id_risp, "'" & userip & "'", date())
    Le query sono scritte male però sono solo per rendere l'idea.

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.