Originariamente inviato da gyra
Ciao a tutti,
ho questo dilemma che non riesco a risolvere:
Vorrei evitare contenuti duplicati se appartenenti a categorie diverse,
ovvero:
Ho una struttura DATABASE di questo tipo:
4 tabelle:
autori
categorie
testi
categoriatesto
(che e' una JOIN table)
Codice PHP:
$lista = @mysql_query(
'SELECT DISTINCT text, nome, email, nomecat, autori.id, titolo
FROM testi, autori, categorie WHERE authorid=authorid');
if (!$lista) {
exit('
Error performing query: ' . mysql_error() . '</p>');
}
while ($testi = mysql_fetch_array($lista)) {
$text = $testi['text'];
$name = $testi['nome'];
$email = $testi['email'];
$nomecat = $testi['nomecat'];
$titolo = $testi['titolo'];
echo "$titolo $email $name $nomecat
" .
"$text";
}
Ma mi restituisce lo stesso testo 2 volte quando appartenenet a 2 categorie diverse,ad es:
TESTO 1 CAT 1
TESTO 2 CAT 2
TESTO 3 CAT 1
TESTO 1 CAT 2
COME POSSO FARE INVECE PER OTTENERE :
TESTO 1 CAT 1 - CAT 2 ?
GRAZIE MILLE A TUTTI!
Gyra
E auguri di buon anno!
WHERE authorid=authorid
questo mi sa tanto che sia sbagliato.
per il tuo problema purtroppo l'unica soluzione che conosco è trovare prima tutti gli id dei testi che interessano a te e poi, per ogni testo, estrarre tutte le categorie.
purtroppo è una soluzione che prende tempo, fa schifo a leggersi, e tutto quel che vuoi.
altra soluzione che semplifica di molto il problema è:
Codice PHP:
$lista = @mysql_query(
'SELECT DISTINCT text, nome, email, nomecat, autori.id, titolo
FROM testi, autori, categorie WHERE authorid=authorid
ORDER BY testi.id');
di modo da avere come risultato un elenco di tutti i testi con relative categorie ordinati:
TESTO 1 CAT 1
TESTO 1 CAT 2
TESTO 2 CAT 2
TESTO 3 CAT 1
molto più facilmente gestibili poi in un ciclo.