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.