codice:SELECT s.nome FROM schede s, utenti_abil u WHERE s.stato = 1 AND s.id = u.id_scheda AND u.id_utente = $idUtente
codice:SELECT s.nome FROM schede s, utenti_abil u WHERE s.stato = 1 AND s.id = u.id_scheda AND u.id_utente = $idUtente
"Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)
Solo che così ottengo le schede abilitate ma disabilitate per l'utente in sessione.
Mentre io devo ottenere le schede abilitate per l'utente.
Perdonami, ma se la tebella è:
utenti_abil
id, id_scheda, id_utente
io interpreto che l'utente avente id_utente è abilitato alla scheda avente id_scheda!
Se la logica è opposta basta sotituire = con != non capisco quale sia il problema.
"Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)
Non va cmq.
Il principio è questo, la tabella utenti_abil (forse era meglio chiamarla utenti_disabil) serve solo per registrare chi ha visto cosa?
Per cui se la tabella utenti_abil è vuota tutti possono vedere i prodotti con stato=1 della tabella schede.
Man a mano che un utente visiona un prodotto viene aggiunto un record nella tabella utenti_abil marcando l'id_scheda visionata e l'id_utente che ha visionato.
Faccio un esempio
schede
id-----nome----stato----
1-----art.A----0----
2-----art.B----0---
3----art.C-----1----
4----art.D-----1-----
5----art.E-----1-----
utenti_abil
id----id_scheda----id_utente---
1-----2------------2-----
2-----2------------1------
3-----1------------1-----
4-----3------------1-----
5-----1------------2-----
6-----1------------3-----
7-----4------------2-----
8-----5------------2-----
L'utente con id=1 vedrà solo i prodotti art.D e art.E cioè schede.id=4 e 5 perchè gli altri (1,2,3 sono già stati visionati) compaiono nella tabella utenti_abil con id_utente=1
Ultima modifica di lume70; 15-11-2013 a 16:27
Ripeto la tua soluzione non va lo stesso pur mettendo !=
Codice PHP:$risult = mysql_query("SELECT * FROM schede, utenti_abil WHERE schede.stato = 1 AND schede.id_scheda != utenti_abil.id_assegn AND utenti_abil.id_utente != $sessione_utente");
while($row = mysql_fetch_array( $risult )) {
echo "<tr><td>".$row['nome']."</td><td>".$row['id_scheda']."</td><td><a href=\"start.php?mod=$id_scheda&modul=$sessione_utente\">[START]</a></td></tr>";
}
Però un minimo di iniziativa e di ragionamento!!!
Il != va messo solamente sul confronto tra id e id_scheda e NON anche sull'id_utente.
Basta un minimo di ragionamento!!!
Poi:
Mia query:
codice:SELECT s.nome FROM schede s, utenti_abil u WHERE s.stato = 1 AND s.id = u.id_scheda AND u.id_utente = $idUtente
Struttura tabelle da te postata:
Tua query:codice:schede id-----nome----stato---- utenti_abil id----id_scheda----id_utente---
Da dove escono:codice:SELECT * FROM schede, utenti_abil WHERE schede.stato = 1 AND schede.id_scheda != utenti_abil.id_assegn AND utenti_abil.id_utente != $sessione_utente
schede.id_scheda e utenti_abil.id_assegn ????
Non è che puoi postare una struttura di tabella e poi modificarla e fare le prove su una struttura differente. Così non se ne esce più!!!
"Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)
Si ho fatto della confusione, con nomi di tabelle... ormai nn ne posso più tra prove e riprove.
Adesso ho rinominato le tabelle e i campi in modo più chiaro.
(se riesco metto i file .sql)
scheda:
scheda.JPG
chk:
check.JPG
Se accedo con utente che ha id=1 devo vedere:
articoloB, articoloC, articoloE
Se accedo con id=3
articoloB, articoloC
L'utente con cui accedo ha id=1
Quindi con:
ottengoCodice PHP:$risult = mysql_query("SELECT * FROM scheda s ,chk u WHERE s.stato=1 AND s.id!=u.idscheda AND u.id_utente != $sessioneid");
articoloB, articoloB, articoloC, articoloC, articoloE
con:
non ottengo nullaCodice PHP:$risult = mysql_query("SELECT * FROM scheda s ,chk u WHERE s.stato=1 AND s.id=u.idscheda AND u.id_utente = $sessioneid");