Hallo,

Ik heb een probleempje met mijn database en paginanummering: als iemand in mijn gastenboek een entry plaatst wordt daarbij een ID opgeslagen. Ook wordt UNMODERATED op 1 gezet totdat ik het bericht heb gelezen en heb geaccepteerd of afgewezen, dan wordt UNMODERATED op 0 gezet. Ik laad mijn berichten dus ook met "blablabla where UNMODERATED is 0" (of zoiets tenminste). Maar het probleem is dat mijn paginanummering de ID's telt en alles daarop ordent: het probleem is dus dat er teveel ID's zijn en er dus een paar lege pagina's extra worden aangemaakt door de paginanummering. Kan ik dit met een querie oplossen, of weet iemand een andere manier, of moet het toch echt in php?

Alvast bedankt!
Sorry, maar ik heb er dagen over gedaan om dit script in te bouwen. Ik wil het echt gewoon oplossen met een querie of door wat code te veranderen ofzo:S
Met de info die jij gegeven hebt, kan ik niet veel... misschien kan ik een stukje code zien?

Hint: Misschien een stukje met de precieze query en wat er allemaal met deze query gebeurd. (echo enzo)
SELECT * FROM VGB_ENTRY where UNMODERATED = 0 order by ID asc limit

Verder gebeurt er niet veel mee, hier zie je het probleem al: unmoderated wordt niet 'geladen' maar de ID van unmoderated wel en zo worden er dus teveel pagina's aangemaakt:S
Ik bedoelde hoe je paginanummering eruit zag... Waarom gebruik je in namen van Kolommen en Tabellen hoofdletters? (Vind ik zelf nogal onhandig:
SELECT * FROM vgb_entry WHERE unmoderated = 0 ORDER BY id ASC LIMIT
vind ik veel makkelijker te lezen: De hoofdletterz ijn de acties en de kleine letters de namen. Bij jou switchen ze halverwege)

Hmm... maar het ligt denk ik niet aan de query...
Dat was de querie van de paginanummering. De oplossing is om te zorgen dat er net zo veel ID's geladen worden als "alle ID's min alle UNMODERATED=1". Dit zou misschien wel kunnen in een querie, maar dan zit je weer met het probleem dat je misschien de verkeerde gaat uisluiten. Maar als de entrie weergeven wordt met ID en UNMODERATED bij elkaar, kan die ook weergeven worden met UNMODERATED en ID bij elkaar. (wazig, hier de uitleg) Dus volgens mij is het mogelijk om bij UNMODERATED=1 de ID te vinden die daarbij hoort want het is ook mogelijk om bij een ID UNMODERATED te vinden (en de rest van de entry). Dus moet de ID die bij de UNMODERATED=1 hoort, niet geladen worden. Maar hoe doe je dat in een querie?: iets van "WHERE unmoderated = 1 DON'T LOAD (bijbehorende) ID" of zo (:P). Weet iemand hoe dit mogelijk is in een querie??
SELECT COUNT(`id`) FROM `table` WHERE `unmoderated` = 1

Deze query telt hoeveel berichten jij nog moet lezen (of moderaten). Of bedoel je dat niet? Het is mij niet helemaal duidelijk.
Het leek meer op een query die de gastenboek-entries ophaalt, gezien de SELECT *

Gezien je zelf al aangeeft dat er teveel pagina's aangemaakt worden, moet je het zoeken bij een query die iets heeft van SELECT COUNT(*) o.i.d.

Daar moet je de WHERE unmoderated=1 aan toevoegen.
"alle ID's min alle UNMODERATED=1"
En dit is toch precies gelijk aan alle id's waar unmoderated = 0?

Dus het lijkt me dat die query die je in het begin gaf echt wel klopt. Als jij alleen de id's van berichten wilt ophalen die jij al gelezen hebt, gebruik je dus:

SELECT id
FROM tabel
WHERE unmoderated = 0
Blanche, dat heeft hij al:

Ik citeer:
SELECT * FROM VGB_ENTRY where UNMODERATED = 0 order by ID asc limit


Maar.. dit ziet er ook erg uit als de query die je gebruikt voor de echo: LIMIT staat erin. Hmm... heb je nog een query?

Reageren