Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 16

Discussione: Select da database

  1. #1
    Utente di HTML.it
    Registrato dal
    Jul 2003
    Messaggi
    439

    Select da database

    Buongiorno...
    ieri avevo aperto una discussione (senza risposte) sempre riguardo una select, ma forse avevo sbagliato ad impostare l'argomento... riprovo a ripartire da qui!

    Ho un database chiamato "AlmostFamous" con all'interno 2 tabelle "incontri" e "ElencoFoto" Nella tabella incontri vengono memorizzati i dati di ogni utente con ID univoco mentre nella tabella Elenco foto vengono inserite tutti i riferimenti delle immagini, ogni utente può inserire più immagini quindi ci può essere lo stesso ID con diverse fotografie.

    In una pagina vorrei far visualizzare tutti gli iscritti e far visualizzare la fotografia di quelli che hanno la fotografia.

    Ho provato in questo modo però se un iscritto ha inserito 3 fotografie vengono visualizzate tutte e tre le fotografie dello stesso iscritto.

    Questa è la select che ho provato a fare:

    codice:
    RS.Source = "SELECT Incontri.*, ElencoFoto.PosFoto,
     ElencoFoto.Anteprima, ElencoFoto.IdUtente FROM Incontri LEFT JOIN
     ElencoFoto ON Incontri.ID = ElencoFoto.IdUtente WHERE
     Incontri.Models=true AND Incontri.Disp=true and
     Incontri.Sesso='"&sesso&"' ORDER BY Incontri.LastAccess DESC"
    e questo è il comando per far vedere la fotografia:

    codice:
    <div align="center"><font size="1" face="Verdana, Arial, Helvetica, sans-serif">            </font></div>          <div align="center"></div> 
    					    <div align="center"><font size="1" face="Verdana, Arial, Helvetica, sans-serif">        </font></div>          <div align="center"><font size="1" face="Verdana, Arial, Helvetica, sans-serif"> 
    					      			
    					      <% 	if RS.Fields.Item("UsaFoto").Value=False then %>
    </font>
    					      <table width="100%"  border="1">
                                <tr>
                                  <td bgcolor="#FFFFFF"><div align="center"><font size="1" face="Verdana, Arial, Helvetica, sans-serif">[img]../Images/x.jpg[/img]</font></div></td>
                                </tr>
                              </table>
    					      <font size="1" face="Verdana, Arial, Helvetica, sans-serif">						  
    					      <%else %>
    						      [img]resize.aspx?w=150&h=100&src=../public/foto/<%=(RS.Fields.Item("PosFoto").Value)%>[/img]	
    						      <% end if %>
    Come posso risolvere l'inconveniente di far visualizzare un solo ID?

    Grazie e scusate se ho ripreso in parte l'argomento in un nuovo post...

  2. #2
    Utente di HTML.it
    Registrato dal
    Jul 2003
    Messaggi
    439
    Precisazione:

    - nella tabella Elencofoto ho il campo IdUtente che è uguale al campo univoco ID della tabella Incontri

    - nella tabella incontri ho il campo UsaFoto che viene spuntato (=true) quando un utente ha inserito anche la fotografia (quindi viene immesso anche nella tabella ElencoFoto)

    - nella tabella Elencofoto c'è un campo chiamato anteprima che viene spuntato (=true) quando l'utente inserisce una fotografia e la vuole inserire come anteprima nella sua scheda

    - nella tabella elencofoto c'è un campo PosFoto dove viene riportato il nome della fotografia con l'identificativo dell'ID (es. 100_foto; 100_foto1; 100_foto2; dove 100 sta per l'ID univoco dell'utente)

    Quindi in italiano mi servirebbe una select del tipo:
    fai vedere tutti gli utenti della tabella incontri e quando il campo usafoto è spuntato prendi l'indirizzo della fotografia dalla tabella Elencofoto e se nella tabella elencofoto ci sono più fotografie con lo stesso IDutente prendine solo una

    Spero di riuscire a trovare insieme a Voi una soluzione

  3. #3
    ammetto di non averci capito molto (ho letto un po' velocemente), ma credo che puoi risolvere, mettendo nella query delle fotografie il comando TOP 1

    ovvero:

    "SELECT TOP 1 * FROM nometabella WHERE criteri etc..."
    «Nella mia carriera ho sbagliato più di novemila tiri. Ho perso quasi trecento partite. Ventisei volte i miei compagni mi hanno affidato il tiro decisivo e l'ho sbagliato. Nella vita ho fallito molte volte. Ed è per questo che alla fine ho vinto tutto» - Michael Jordan

    «Prima ti ignorano, poi ti deridono, poi ti combattono. Poi vinci.» - Gandhi

  4. #4
    Utente di HTML.it
    Registrato dal
    Jul 2003
    Messaggi
    439
    Grazie per avermi risposto
    Purtroppo non funziona. Comunque utilizzo la stessa query sia per elencofoto che per incontri!

    Come l'ho spiegato è un po' incasinato effettivamente... posso darti qualche altra spiegazione per cercare di farti capire meglio? Ti prego AIUTAMI!

  5. #5
    Originariamente inviato da Marco7303
    Grazie per avermi risposto
    Purtroppo non funziona. Comunque utilizzo la stessa query sia per elencofoto che per incontri!

    Come l'ho spiegato è un po' incasinato effettivamente... posso darti qualche altra spiegazione per cercare di farti capire meglio? Ti prego AIUTAMI!
    Fai così:

    scirvi un post in cui visualizzi un esempio di contenuto delle due tabelle.

    da lì cerco almeno di capire come hai strutturato il database.
    Poi se non ho capito male tu vuoi fare in modo che il record della prima tabella punti a N record della seconda. Poi vorresti stampare solo 1 record della seconda tabella. Giusto ?
    «Nella mia carriera ho sbagliato più di novemila tiri. Ho perso quasi trecento partite. Ventisei volte i miei compagni mi hanno affidato il tiro decisivo e l'ho sbagliato. Nella vita ho fallito molte volte. Ed è per questo che alla fine ho vinto tutto» - Michael Jordan

    «Prima ti ignorano, poi ti deridono, poi ti combattono. Poi vinci.» - Gandhi

  6. #6
    Utente di HTML.it
    Registrato dal
    Jul 2003
    Messaggi
    439
    Tabella elencofoto:

    IdFoto (contatore)
    IdUtente (numerico = a ID della tabella incontri)
    PosFoto (testo - nome della foto preceduto dall''idutente)
    Anteprima (true/false)

    Tabella Incontri:

    ID (univoco)
    Username
    ...
    ...
    Usafoto (True/False)

    In questa pagina vorrei far visualizzare tutti gli iscritti presenti nel database e per quelli dove non c'è la fotografia fr visualizzare un'immagine specifica, mentre per quelli che hanno inserito una o più fotografie far visualizzare la loro fotografia.

    Lo script con cui faccio questo è il seguente però, ripeto, che se un utente ha inserito 10 fotografie vengono mostrate tutte e 10 le fotografie inserite, mentre io ne vorrei far vedere una sola per ogni utente:

    <table border="0" cellpadding="3" cellspacing="1">
    <tr bgcolor="#E6CCFF">
    <td width="125" colspan="2" bgcolor="#E6CCFF"><div align="left">


    <font size="1"><font face="Verdana, Arial, Helvetica, sans-serif">UserName

    </font>
    </font><span class="Stile1"><%=(RS.Fields.Item("username").Valu e)%></span></p>
    </div> </td>
    <td rowspan="4" bgcolor="#CC99FF"><div align="center" class="Stile1"></div>
    <div align="center"></div> <div align="center"><font size="1" face="Verdana, Arial, Helvetica, sans-serif"> </font></div> <div align="center"></div>
    <div align="center"><font size="1" face="Verdana, Arial, Helvetica, sans-serif"> </font></div> <div align="center"><font size="1" face="Verdana, Arial, Helvetica, sans-serif">

    <% if RS.Fields.Item("UsaFoto").Value=False then %>
    </font>
    <table width="100%" border="1">
    <tr>
    <td bgcolor="#FFFFFF"><div align="center"><font size="1" face="Verdana, Arial, Helvetica, sans-serif">[img]../Images/x.jpg[/img]</font></div></td>
    </tr>
    </table>
    <font size="1" face="Verdana, Arial, Helvetica, sans-serif">
    <%else %>
    [img]resize.aspx?w=150&h=100&src=../public/foto/<%=(RS.Fields.Item("PosFoto").Value)%>[/img]
    <% end if %>
    </font></div>
    <div align="center"></div> </td>
    </tr>
    <tr bgcolor="#E6CCFF">
    <td colspan="2" bgcolor="#E6CCFF"><font size="1"><font size="1"><font face="Verdana, Arial, Helvetica, sans-serif">Et&agrave;
    </font>
    </font>
    </font><font size="1" face="Verdana, Arial, Helvetica, sans-serif"> <%=(RS.Fields.Item("DataNas").Value)%></font></td>
    </tr>
    <tr bgcolor="#E6CCFF">
    <td colspan="2" bgcolor="#E6CCFF"><font size="1"><font size="1"><font face="Verdana, Arial, Helvetica, sans-serif">Regione
    </font>
    </font>
    <font size="1"><font size="1" face="Verdana, Arial, Helvetica, sans-serif"><%=(RS.Fields.Item("Username").Value)%></font></font></font></td>
    </tr>
    <tr bgcolor="#E6CCFF">
    <td><div align="center"><font size="1" face="Verdana, Arial, Helvetica, sans-serif">ID: <%=(RS.Fields.Item("ID").Value)%></font></div></td>
    <td><div align="center"><font size="1" face="Verdana, Arial, Helvetica, sans-serif">">&raquo;&raquo;</font></div></td>
    </tr>
    <tr>
    <td colspan="2"></td>
    <td></td>
    </tr>
    </table>

  7. #7
    Utente di HTML.it
    Registrato dal
    Jul 2003
    Messaggi
    439
    Es di quello che vorrei:

    username: marco
    id 100
    foto: 100_foto1 dalla tabella elencofoto

    username: nuvolari2
    id 101
    foto: immagine non inserita e quindi immesso percorso prestabilito per far visualizzare la fotografia.


    Adesso invece visualizza
    username: marco
    id 100
    foto: 100_foto1 dalla tabella elencofoto

    username: marco
    id 100
    foto: 100_foto2 dalla tabella elencofoto

    username: marco
    id 100
    foto: 100_foto3 dalla tabella elencofoto

    username: nuvolari2
    id 101
    foto: immagine non inserita e quindi immesso percorso prestabilito per far visualizzare la fotografia.

  8. #8
    Originariamente inviato da Marco7303
    Tabella elencofoto:

    IdFoto (contatore)
    IdUtente (numerico = a ID della tabella incontri)
    PosFoto (testo - nome della foto preceduto dall''idutente)
    Anteprima (true/false)

    Tabella Incontri:

    ID (univoco)
    Username
    ...
    ...
    Usafoto (True/False)
    ma il campo PosFoto della tabella elencofoto contiene il un testo e in più anche il nome della foto, più l'id dell'utente ?

    in pratica hai messo tre valori in un unico campo.

    A naso inizierei con il creare tre campi per i tre dati.

    il campo testo
    il campo nome foto
    e il campo IdUtente (che però c'è già).

    ma a parte questo, attualmente, da dove posso capire (guardando la tabella) se la foto c'è oppure no?
    «Nella mia carriera ho sbagliato più di novemila tiri. Ho perso quasi trecento partite. Ventisei volte i miei compagni mi hanno affidato il tiro decisivo e l'ho sbagliato. Nella vita ho fallito molte volte. Ed è per questo che alla fine ho vinto tutto» - Michael Jordan

    «Prima ti ignorano, poi ti deridono, poi ti combattono. Poi vinci.» - Gandhi

  9. #9
    Utente di HTML.it
    Registrato dal
    Jul 2003
    Messaggi
    439
    Il campo PosFoto contiene il nome esatto (l'indirizzo web) dell'immagine che poi verrà presa dallo script.

    Per comodità, siccome l'utente può inserire più fotografie, ho fatto scrivere automaticamente davanti al nome della foto che uno manda anche l'indirizzo ID della persona che ha inviato la foto.

    Il campo ID è separato e si trova sia nella tabella incontri sia nella tabella elencofoto sotto la voce idUtente

    Per capire se un utnte ha inserito la foto viene spuntato il campo UsaFoto nella tabella Incontri e poi viene inserito il nome dell'immagine nel campo PosFoto

  10. #10
    per ora io farei una cosa del genere:



    sqlElenco="SELECT * FROM Incontri "
    set Elenco = Server.CreateObject("ADODB.RecordSet")
    Elenco.open sqlElenco, ConnDb, 1, 1


    do

    sqlFoto="SELECT TOP 1 * FROM elencoFoto WHERE IdUtente = " & Elenco("Id")
    set Foto = Server.CreateObject("ADODB.RecordSet")
    Foto.open sqlFoto, ConnDb, 1, 1

    response.write Foto("PosFoto")

    Elenco.movenext
    loop until Elenco.eof



    in questo modo ti stampa solo UN contenuto per ogni utente di elencoFoto.
    «Nella mia carriera ho sbagliato più di novemila tiri. Ho perso quasi trecento partite. Ventisei volte i miei compagni mi hanno affidato il tiro decisivo e l'ho sbagliato. Nella vita ho fallito molte volte. Ed è per questo che alla fine ho vinto tutto» - Michael Jordan

    «Prima ti ignorano, poi ti deridono, poi ti combattono. Poi vinci.» - Gandhi

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.