- Home
- Categorie
- Coding e Sistemistica
- MYSQL e altri Database
- Select Con Php-mysql
-
Select Con Php-mysql
Ciao a tutti sono nuovo del forum nonchè apprendista del php.
Volevo chiedere un aiuto:
Ho due tabelle in DB mysql : una degli utenti con quindi un ID univoco e una per le foto inviate da questi.
La tabella utenti contiene questi campi: id_utente, username, password
La tabella foto contiene i campi: **id_ foto, id_utente, nome_foto **supponiamo che per un'utente abbia chessò 10 foto nella tabella foto. E' possibile eseguire una sola query che mi visualizzi sia il record della tabella utente sia tutte le foto relative all'utente contenute nella tab. foto???
Io sono riuscito a farlo facendo però 2 select.
Cercavo però un modo per risparmiare risorse o fare tutto con una sola queryE' possibile secondo voi?
-
ciao!e benvenuto sul mitico forum di giorgiotave!
da quanto ho capito la select che tu vorresti fare dovrebbe essere del tipo:select utenti.,foto.
from utenti,foto
where utenti.id_utente=foto.id_utentein questo modo visualizza una query in cui ogni riga è composta da tutte i campi di utenti e da tutti i campi di foto.
Se non ti interessano tutti i campi basta mettere nella select i campi che vuoi visualizzare. Ad esempio utenti.username oppure foto.nome_foto.
Ciao e fammi sapere se funziona.;);):D:D:)
-
grazie sicilia24ore per l'aiuto.ebbene funziona. Purtroppo però il lavoro si è complicato non poco con l'aggiunta di altre 2 tabelle, Generi e annunci!! stò a impazzììì
Ti spiego cosa ho in mente: una pagina in cui visualizzo l'annuncio e la regione (in tab. annunci), l'utente (in tab. users), il nome del genere (in tab. generi), e infine tutte le foto in relazione all'annuncio (in tab. foto)
sono riuscito a fare questa query:SELECT annunci.annuncio, annunci.regione, generi.genere, users.user, foto.foto
FROM ((annunci LEFT JOIN foto ON annunci.annuncio_id=foto.annuncio_id) INNER JOIN generi ON annunci.gen_id=generi.gen_id) INNER JOIN users ON annunci.user_id=users.user_id
WHERE annunci.annuncio_id=1;funziona!! e mi esce questo:
+-------------------------------------------------+
| **annuncio **| regione | genere | user | foto |
+-------------------------------------------------+
| vendo moto | lazio | moto | luca | 1.jpg |
+-------------------------------------------------+
| vendo moto | lazio | moto | luca | 2.jpg |
+-------------------------------------------------+
| vendo moto | lazio | moto | luca | 4.jpg(mammamia quant'è brutta stà tabella!)
ora però:
-
nella pagina PHP vorrei visualizzare una volta sola annuncio, user, genere e regione. E fare un ciclo invece per le foto. Come posso risolvere facendo una query?
-
Pensate che l'uso di tutte queste join potrebbe compromettere le prestazioni del DB (rallentamenti ecc.)???
-
-
secondo me dovresti reimpostare il db in questa maniera:
1 tabellla users con i seguenti campi:
id_utente,user,password
2 tabella annunci con i seguenti campi:
id_annuncio,id_utente,testo_annuncio,regione,genere,foto1,foto2,foto3,foto4così poi basta fare la seguente query:
select testo_annuncio,regione,genere,foto1,foto2,foto3,foto4
from users,annunci
where user.id_utente=annunci.id_utenteed il gioco è fatto!
troverai un record per ogni annuncio e all'jnterno di esso troverai tutte le foto!Se invece non vuoi un certo limite di foto da inserire ne riparliamo + tardi....eheh:D:D:D:):)
-
avevo pensato anche io a una soluzione del genere ma no, la fregatura è proprio questa:
non ci deve essere limite all'upload di foto. Cioè un utente se vuole può inviare anche 100 foto, essendo un sito di annunci fotografici.
-
Allora secondo devi fare così
-
crei una tabella foto con i seguenti campi:
id_foto, id_annuncio, percorso_foto -
tabella annunci
id_annuncio,id_utente,testo_annuncio,regione,gener e, -
ti selezioni tutti gli annunci di un utente attraverso la query
$query="select annunci.*
from users,annunci
where annunci.id_utente=users.id_utente";
$esQuery=mysql_query($query);
// crei una tabella //
// in ogni colonna di una riga inserisci il contenuto dei campi degli annunci e // in quelle delle foto associate ad ogni foto.while($testQuery=mysql_fetch_array($esQuery))
{//questi annunci li passi alla query che seleziona tutte le foto per ogni //annuncio
$foto="select foto.*
from foto
where id_annuncio=".$testQuery['id_annuncio'];
$esFoto=mysql_query($foto);while ($testFoto=mysql_fetch_array($esFoto))
{
// stampi tutte le foto per ogni annuncio}
}
spero di essere stato chiaro ed esaustivo:):):):):D:D:D!
-
-
alla fine ci sono riuscito come avevo pensato all'inizio facendo 2 select
Grazie 1000 cmq per l'aiuto