# SELECT * FROM ... WHERE NOT mit mehreren Werten



## Michael Brauner (7. März 2011)

Hallo liebe Leuten, 

ich habe ein Problem, ich lasse meine User TExte bewerten und musste nun 
feststellen, dass immer die gleichen Texte angeboten werden. 

Wie kann ich sowas machen wie  :

```
$abfrage = "SELECT * FROM texte WHERE id != $exp[0], $exp[1], $exp[2].... ";
```

oder gibt es eine andere Möglichkeit, wie man Sachen für einen einzigen User nicht mehr zugänglich machen kann ?

LG Michael


----------



## _Grubi (7. März 2011)

Wenn es sich um Benutzer handelt, welche registiert sind und somit eine user_id haben, dann könntest du eine extra Tabelle aufbauen, in der du die text_id und die user_id speicherst und dein SELECT davon abhängig machst (nur text_id, welche nicht in der neuen Tabelle mit der user_id sind). Dies wäre mit reinem SQL machbar. Oder du speicherst die bereits bewerteten text_id's und machst dann einen Query ala

```
SELECT * FROM texte WHERE id NOT IN(id1, id2,id3);
```

Wenn du die IDs in PHP in einem Array hast, dann kannst du dir diese ID-Liste für den Query ganz leicht mit implode erstellen

```
$sql = 'SELECT * FROM texte WHERE id NOT IN(' . implode(', ', $idArray) . ');';
```


----------



## strolch_007 (7. März 2011)

Hallo



> ich habe ein Problem, ich lasse meine User TExte bewerten und musste nun
> feststellen, dass immer die gleichen Texte angeboten werden.



Wie es werden immer die gleichen Texte angeboten?



> oder gibt es eine andere Möglichkeit, wie man Sachen für einen einzigen User nicht mehr zugänglich machen kann ?



Sachen?
Ich würde:
1. die jeweilige  text_id ansprechen (ausgeben) - dann kommen nur die Texte raus die du haben möchtest
2. mit dem User ( evtl. SESSION_ID) vergleichen (user_id sollte in deiner Datenbank als Bewerter abgespeichert sein)
Wird die Session_id bei der text_id gefunden einen Fehler ausgeben. Du darfst nur einmal bewerten oder sowas.
Gruß
strolch_007
Wenn


----------

