Rijnummer van gekozen ID

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Dimitri Van Reeth

Dimitri Van Reeth

27/08/2012 00:03:44
Quote Anchor link
Hallo iedereen,

Ik heb zojuist een pagina-navigatie op mijn website gezet. (Vorig artikel - Volgend Artikel).
Alleen weet ik niet goed hoe ik moet weergeven op welke rij het gekozen artikel staat..

Vb. Artikel 2 van de 7

Dus m.a.w: het gekozen artikel met bv. ID=13 staat op de 2de rij van de 7 in mijn tabel.

Ik weet wel al hoe ik de plaats van alle rijen kan weergeven:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
SELECT @rownum:=@rownum+1 rownum, news.* FROM (SELECT @rownum:=0) r, news


maar hoe kan ik er nu bijzetten dat hij gewoon ziet op welke plaats ID 13 staat?

Alvast bedankt!
 
PHP hulp

PHP hulp

29/04/2024 13:02:05
 
Erwin H

Erwin H

27/08/2012 09:44:28
Quote Anchor link
Als ik je goed begrijp wil je dus aan de hand van het id van een item het rijnummer weten, zonder alle gegevens op te halen?

Aangezien de rijnummers elke keer berekend worden in je query kan je dus niet dit doen:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
SELECT @rownum:=@rownum+1 rownum, news.*
FROM (SELECT @rownum:=0) r, news
WHERE news.id = 13

Doe je dit dan krijg je er altijd 1 uit. Als je maar 1 rij selecteert is dat altijd de eerste rij.

Je zal dus met een subquery moeten gaan werken:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
SELECT rownum
FROM (
  SELECT @rownum:=@rownum+1 rownum, news.*
  FROM (SELECT @rownum:=0) r, news
) sub
WHERE id = 13

Nu wordt eerst de hele tabel gemaakt, waardoor wel alle rijen de juiste rijnummers krijgen. Daar selecteer je alleen degene van die je wilt hebben en dan heb je dus het juiste rijnummer.
 
Eddy E

Eddy E

27/08/2012 09:44:30
Quote Anchor link
Even alle ID's (gesorteerd op wat-dan-ook: datum, id, aantal-gelezen oid) uit je database halen en in een array zetten.

Met een count() kijk je hoeveel artikelen er zijn.
Met een array_search() zoek je op het ID van je artikel. Je kijkt welke key daarbij hoort... dat artikel is het dan (van totaal count()).

Kort:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
<?php
// array komt uit database
$array = array(1 => "Arend", 2 => "Beer", 3 => "Cobra", 4 => "Dolfijn");
$huidig_artikel = "Cobra";


$aantal = count($array); // geeft 4
$x_van_x = array_search($huidig_artikel, $array); // geeft 3
echo 'U bekijkt artikel '.$x_van_x .' van '.$aantal.' totaal';
?>
 
Crispijn -

Crispijn -

27/08/2012 10:10:39
Quote Anchor link
Waarom zo'n php oplossing kiezen terwijl dit ook eenvoudig te doen is met de standaard LIMIT functie in SQL?
 
Eddy E

Eddy E

27/08/2012 10:51:43
Quote Anchor link
Omdat je dan 3 queries moet draaien ipv 1.

En de kans dat hij toch alles in 1 kolom gooit en gewoon CSS gaat gebruiken is dan makkelijker te maken ;).
Want CSS kan prima met kolommen omgaan. En die dingen tonen op welke plek ook kan ook met CSS.
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

27/08/2012 11:07:05
Quote Anchor link
Je hoeft helemaal geen 3 queries te draaien, en dat soort dingen hoort gewoon niet in PHP opgelost te worden.
Wat jij doet moet je zelf weten, maar stop er eens mee om als ergens goede oplossingen gegeven worden daar idiote alternatieven voor te geven.
Gewijzigd op 27/08/2012 11:15:42 door Ger van Steenderen
 
Eddy E

Eddy E

27/08/2012 11:21:15
Quote Anchor link
Euh, wacht: verkeerde topic. Die 3 queries sloeg op dat topic met 3 kolommen. Net zoals de rest van het bericht.

Nu het goede bericht:
Dit is net zo snel en kan korter geschreven worden tot 1 regel zonder heel raar te doen. En omdat je toch al die array hebt scheelt het wel een (sub)query.
 
Erwin H

Erwin H

27/08/2012 11:24:25
Quote Anchor link
En als je nu 80.000 records in je database hebt staan. Wil je dan nog steeds eerst alles selecteren, uitlezen, in een array stoppen, in geheugen houden en met php erdoorheen lopen om dat id te zoeken?

Ik mag toch echt hopen van niet....
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

27/08/2012 11:27:28
Quote Anchor link
Eddy, wat jij doet is een hoop data (waarvan het grootste gedeelte overbodig is) in een array laden en dan PHP dingen laten filteren, zoeken etc. Daar hebben ze nu juist de database voor uitgevonden.

Edit:

Erwin was me voor.
Gewijzigd op 27/08/2012 11:28:31 door Ger van Steenderen
 
Eddy E

Eddy E

27/08/2012 11:32:20
Quote Anchor link
Euh.... wellicht. Zou ik even moeten meten wat sneller is. Vooral omdat je toch al wil linken naar relevante artikelen (dwz: bij een zoekquery alleen resultaten ophalen.
Doe je toch wel ergens in een overzicht/link-bulk etc.
 
Erwin H

Erwin H

27/08/2012 11:37:37
Quote Anchor link
Nu ben je aan het brabbelen Eddy. Niemand die 80.000 items op een pagina gaat zetten. En als je het niet doet voor de grote aantallen, moet je het ook niet doen voor de kleinere aantallen.

Maar goed, nutteloze discussie natuurlijk weer.
 
Dimitri Van Reeth

Dimitri Van Reeth

27/08/2012 12:30:51
Quote Anchor link
Bedankt voor de snelle reacties!
Het is perfect gelukt met de oplossing van Erwin H.
 
Eddy E

Eddy E

27/08/2012 15:03:59
Quote Anchor link
Je hebt gelijk Erwin. Jouw oplossing is gewoon veel beter. Ik ben gewoon waardeloos. En mijn codes al helemaal. Kan net zo goed mijn account maar weggooien, alle PHP-scripts verwijderen en de websites die ik heb gemaakt maar voor een paar cent te koop zetten.

Dan kan je beter met subqueries met @rownum:= gaan werken!
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

27/08/2012 16:43:41
Quote Anchor link
Zelfkennis siert de mens!.
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.