prendere 3 record di ogni categoria da una sola tabella

fabio_198

Utente Attivo
8 Nov 2012
53
0
0
Salve ragazzi!

Ho una tabella chiamata "link"...dove metto delle news...ogni news ha un campo "categoria" (es. politica, sport, musica ecc),
Ogni news ha dei voti che stanno nella tabella "voting", la correlazione tra le due tabelle è che il campo "item" nella tabella voting è uguale al campo "id" nella tabella link

Ora a me serve prendere le 3 news che hanno il maggior numero di voti per ogni categoria.

se faccio così

PHP:
$query = mysql_query("SELECT * FROM link WHERE categoria='politics' ORDER BY id DESC"); 
                                                while ($list = mysql_fetch_array($query)) {
                                                        $indurl = $list['url'];
                                                        $indimg = $list['img'];
                                                        $indtitolo = $list['titolo'];
                                                        $inddescr = $list['descr'];
                                                        $indfonte = $list['fonte'];
                                                        $indutentiid = $list['utentiid'];
                                                        $postid = $list['id'];
                                                        $data = mysql_fetch_object(mysql_query('SELECT `vote` FROM voting WHERE item="'.$postid.'"'));
                        
                                                echo "
				<article id='post-215' class='post-215 category-people category-photography category-pretty-girls entry box format-image'>
                                   <div class='entry-content-cnt'>
                                      <div class='entry-content'>
                                         <a href='$indurl' target='_blank'>
	                                 <img src='$indimg' width='100%' /></a>
				      </div>
                                   </div>
				   
			           <div class='entry-desc'>
                                     <a href='$indurl' target='_blank'><h4>$indtitolo</h4></a>
                                        <h6 align='justify'>$inddescr</h6>
	                                   <i class='icon-globe'></i> <a href='http://$indfonte' target='_blank'>$indfonte</a>&nbsp; &nbsp;
		                           <i class='icon-user'></i> <a href='profile.php?username=$indutentiid'>$indutentiid</a>
                                      
				     <div class='entry-meta group'>
			                <table>
	                                   <tr><td>
                                           <a class='muted' href=\"javascript:;\" onclick=\"doAction('$postid','like');\"><button class='btn btn-mini' rel='tooltip' title='You like it?' type='button'><i class='icon-heart'></i> <span id='$postid'>$data->like</span></button></a>
                                           </td>

praticamente funziona solo che crea la struttura del box per tutte uguali...quando invece io devo mettere la news di ogni categoria che ha più voti in un box più grande e via via le altre in box più piccoli.

In poche parole vorrei gestirmi i vari valori di ogni news tipo così: $indtitolo[politics1] che sarebbe il titolo della news che ha preso più voti della categoria politics e via discorrendo.

spero di aver spiegato tutto il più chiaro possibile 0:)
 

Nefyt

Utente Attivo
17 Apr 2012
1.102
0
0
Non sei stato molto chiaro :p, comunque potresti provare con una query di questo tipo per i 3 articoli più votati

Codice:
SELECT * FROM link,voting WHERE voting.item=link.id AND link.categoria='politics' ORDER BY voting.vote DESC LIMIT 0,3
 

fabio_198

Utente Attivo
8 Nov 2012
53
0
0
intanto grazie per la risposta...prova a spiegare meglio

per ogni articolo estraggo titolo, descrizione, immagine, link...
PHP:
while ($list = mysql_fetch_array($query)) {
                                                        $indurl = $list['url'];
                                                        $indimg = $list['img'];
                                                        $indtitolo = $list['titolo'];
                                                        $inddescr = $list['descr'];
                                                        $indfonte = $list['fonte'];
                                                        $indutentiid = $list['utentiid'];
                                                        $postid = $list['id'];
                                                        $data = mysql_fetch_object(mysql_query('SELECT `vote` FROM voting WHERE item="'.$postid.'"'));

il fatto è quando lo devo far stampare in ogni box come faccio?

nel box principale metto ad esempio "$indurl" "$indimg" "$indescr" e fino a quì ci siamo perchè è il primo record che vado a stampare.
ma per andare a stampare il secondo e il terzo record più votato come faccio?? non posso andare a mettere di nuovo quelli perchè mi stampa di nuovo il primo record.

ecco perchè dicevo di far qualcosa come $indurl[politics1] ...spero di aver spiegato meglio :D
 

GoshMaledetto

Utente Attivo
20 Dic 2012
137
0
0
www.goshweb.com
Credo che qui manchino proprio i fondamenti di sql oppure non ho capito una mazza io xD
Cmq dopo aver fatto la query che ti ha dato nefyt all'interno di un unico ciclo while puoi recuperare tutte le info che ti servono inoltre ti consiglio di non settare tutte quelle variabili ma di richiamarle nella echo direttamente con list['NOME CAMPO']

il codice dovrebbe essere cosi (non ho modificato la parte di settaggio variabili)

PHP:
$query = mysql_query("SELECT * FROM link,voting WHERE voting.item=link.id AND link.categoria='politics' ORDER BY voting.vote DESC LIMIT 0,3"); 
                                                while ($list = mysql_fetch_array($query)) {
                                                        $indurl = $list['url'];
                                                        $indimg = $list['img'];
                                                        $indtitolo = $list['titolo'];
                                                        $inddescr = $list['descr'];
                                                        $indfonte = $list['fonte'];
                                                        $indutentiid = $list['utentiid'];
                                                        $postid = $list['id'];
                                                        
                        
                                                echo "
                <article id='post-215' class='post-215 category-people category-photography category-pretty-girls entry box format-image'>
                                   <div class='entry-content-cnt'>
                                      <div class='entry-content'>
                                         <a href='$indurl' target='_blank'>
                                     <img src='$indimg' width='100%' /></a>
                      </div>
                                   </div>
                   
                       <div class='entry-desc'>
                                     <a href='$indurl' target='_blank'><h4>$indtitolo</h4></a>
                                        <h6 align='justify'>$inddescr</h6>
                                       <i class='icon-globe'></i> <a href='http://$indfonte' target='_blank'>$indfonte</a>&nbsp; &nbsp;
                                   <i class='icon-user'></i> <a href='profile.php?username=$indutentiid'>$indutentiid</a>
                                      
                     <div class='entry-meta group'>
                            <table>
                                       <tr><td>
                                           <a class='muted' href=\"javascript:;\" onclick=\"doAction('$postid','like');\"><button class='btn btn-mini' rel='tooltip' title='You like it?' type='button'><i class='icon-heart'></i> <span id='$postid'>$data->like</span></button></a>
                                           </td>

facci sapere
 

fabio_198

Utente Attivo
8 Nov 2012
53
0
0
la query è giusta e va bene...anche prima andava bene..ma il mio problema è che non posso mettere tutto dentro "echo" perchè come mi da i 3 articoli la stessa cosa fa con i box dove stanno... questo è un link provvisorio per far capire meglio http://imagelink.altervista.org/

se prendiamo il box dove c'è scritto politics...è uno grande (il più votato) e due box rettangolari attaccati sotto...(il secondo e terzo più votati)..la stessa cosa per tutte le categorie.

ora...se metto tutto dentro echo...me li da i 3 articoli più votati..solo che mi crea 3 box ognuno con uno grande e due piccoli sotto.
 
Discussioni simili
Autore Titolo Forum Risposte Data
F Prendere contenuti da una tabella PHP 4
J Prendere dati del database e metterli nel codice php PHP 1
R [PHP] Prendere dati da moduli di ricerca esterni PHP 4
trattorino [PHP] prendere contenuto dentro un div PHP 3
felino [VBScript] XML Prendere il Value di un childnode attravervo il nome del nodo Visual Basic 0
V Generare array da ciclo while e prendere valori casuali PHP 4
felino [VbScript] SwfObject: prendere il contenuto di una cella Visual Basic 0
D Libro per php,quale prendere? PHP 1
V Scorrere elementi DOM e prendere dei valori Javascript 8
H Prendere una parte dall'URL PHP 5
H Email di conferma e prendere il nome. PHP 1
A Funzione unica per prendere e recuperare valori Javascript 0
C Prendere la grafica di un tema gratuito wordpress WordPress 2
D prendere parte di testo da un sito .NET Framework 2
L Prendere il codice di una pagina e inserirlo in una variabile PHP 2
Emix Prendere valori da una tabella e concatenarli ad un altra... MySQL 28
ivarello Prendere dati da un altro sito PHP 2
Frank10 Come funzionano le foto di altri siti? Si possono prendere o no? Leggi, Normative e Fisco 5
M Prendere i valori da un input type="text" senza usare il bottone "submit" PHP 2
F selezionare dati tra due tabelle e prendere max valori PHP 10
L prendere 2 risultati casuali da database PHP 12
N Prendere dati dal database Mysql PHP 8
Z Prendere e leggere il nome ID Javascript 1
Frank10 Siti web dove prendere immagini sicure? HTML e CSS 5
valient13 prendere nomi da database PHP 2
S Prendere dati da un sito web esterno e mostrarli sul proprio PHP 2
zighy Prendere visione della notifica PHP 2
O la select per prendere dati da un campo ENUM ripete dieci volte i valori PHP 2
N Prendere immagine da web e inserire su proprio sito PHP 2
N Prendere un testo da un database Snippet PHP 0
H Php,Sql.. prendere i dati prima di oggi PHP 7
Dragon Problema: prendere un comando da un iframe e passarlo ad un altro HTML e CSS 2
G Spero di prendere 6 Presenta il tuo Sito 2
L dove la posso prendere questo java? Javascript 2
G notifiche dekstop/mobile ogni volta che record è inserito/eliminato/aggiornato PHP 0
P Pagina modifica record che non funziona PHP 0
S Selezionare ultimo record di una sotto query MySQL 26
A Tabella con bottoni per aggiornamento record PHP 6
S Differenza date record successivi MS Access 7
R Aggiornare record mysql con Ajax, jQuery e php Ajax 2
S Aggiornamento lista record Database 2
M Esportazione in CSV, salta il primo record PHP 4
T foreach e fetchAll dove recupero solo l'ultimo record PHP 5
A Raggruppare record con stessa data PHP 13
R Scorporare array e recuperare record tabella PHP 10
Tommy03 Select in ordine per numero di record MySQL 7
L Creazione di 2 o più record PHP 6
mazman mysqli_query() mi ritorna un array vuoto anche se presente un record nella tabella PHP 13
L contare record uguali in file csv PHP 3
M Estrapolare singoli record da intervallo (dal al/inizio fine) MS Access 0

Discussioni simili