Visualizzazione dei risultati da 1 a 9 su 9

Discussione: Array ripetuti

  1. #1

    Array ripetuti

    Allora nel mio carello memorizzo in uan Session degli id dei prodotti.
    L'utente naviga e via via aggiunge i prodotti.
    Ora mi funziona tutto e quando l'utente visualizza il carrello ho fatto cosi:


    Dim myArray, objConn
    If IsArray(Session("carrello")) then
    myArray= Session("carrello")
    Set objConn= Server.CreateObject("ADODB.Connection")
    objConn.ConnectionString="DRIVER={Microsoft Access Driver (*.mdb)}; DBQ="&Server.MapPath("db/store.mdb")
    objConn.open
    Set RS = Server.CreateObject( "ADODB.Recordset")
    sqlString = "SELECT * from Prodotti where idprod="&myArray(0)&""
    for iLoop= (lBound(myArray)+1) to UBound(myArray)
    if myArray(iLoop) <> "" then
    sqlString= sqlString& " or idprod="&myArray(iLoop)&""
    end if
    next
    RS.Open sqlString,objConn
    else
    end if


    In questo modo faccio una quesry con gli id della Session.
    Ora in teoria funziona ma se nell'array ci sono id uguali non riesco a visulizzare altri prodotti.
    Cioè se ho un array cosi 1,2,3,4,4,4
    Incece di far vedere 6 prodotti ne vedo 4 perchè l'id 4 è ripetuto.
    Come posso fare per sapere se gli array sono uguali
    Devo fare tanti calcoli?
    http://www.actionscript.it/forum/

    www.actiondesign.it

  2. #2
    in effetti e' un problema... forse l'unica soluzione e' usare una SELECT ... UNION

  3. #3
    Cioè ? cos'è il select union, uso ASP pochissimo e le mie query sonom molto semplici.
    Grazie della risposta.
    http://www.actionscript.it/forum/

    www.actiondesign.it

  4. #4
    non e' questione di ASP, ma questione di SQL.

    ad esempio

    SELECT campo FROM tabella WHERE ID=4
    UNION
    SELECT campo FROM tabella WHERE ID=4


    ti riporta due records, cosi' come serve a te

  5. #5
    Qundi :

    sqlString = "SELECT * from Prodotti where idprod="&myArray(0)&""
    for iLoop= (lBound(myArray)+1) to UBound(myArray)
    if myArray(iLoop) <> "" then
    sqlString= sqlString& "UNION SELECT idprod="&myArray(iLoop)&""
    end if
    next


    Diventa cosi; cmq ora lo provo.grazie
    http://www.actionscript.it/forum/

    www.actiondesign.it

  6. #6
    Non mi funziona sbaglio qualcosa ho scritto:

    sqlString = "SELECT * from Prodotti where idprod="&myArray(0)&""
    for iLoop= (lBound(myArray)+1) to UBound(myArray)
    if myArray(iLoop) <> "" then
    sqlString= sqlString& "UNION SELECT * from Prodotti where idprod="&myArray(iLoop)&""
    end if
    next


    Ma non funziona lo stesso.
    Grazie lo stesso
    http://www.actionscript.it/forum/

    www.actiondesign.it

  7. #7
    2 cose:

    1. quando ti trovi in queste condizioni, stampati la stringa sql prima di eseguirla, con (in questo caso) Response.Write sqlString

    2. qui manca uno spazio prima della clausola UNION

  8. #8
    Si l'avevo notato e l'ho corretto ma lo stesso non mi funziona.
    Ti stampo la stringa e te la faccio vedere.


    SELECT * from Prodotti where idprod=4 UNION SELECT * FROM Prodotti WHERE idprod=5 UNION SELECT * FROM Prodotti WHERE idprod=4 UNION SELECT * FROM Prodotti WHERE idprod=7 UNION SELECT * FROM Prodotti WHERE idprod=4 UNION SELECT * FROM Prodotti WHERE idprod=5

    Mi sembra che vada bene, ma visulizzo sempre 3 prodotti.
    http://www.actionscript.it/forum/

    www.actiondesign.it

  9. #9
    vero! usa UNION ALL

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.