[PHP] Volgende Row weergeven op pagina

Pagina: 1
Acties:
  • 103 views sinds 30-01-2008
  • Reageer

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik heb een website met een huizenarchief. Deze staan mooi met 5 stuks op 1 pagina. En zo meerdere pagina's lang, werkt allemaal goed.

Nu als ik op zo'n huis klik, krijg je de specificaties van deze huizen te zien.

Nu wil ik dat je middels een knop 'volgende' of 'terug' naar een huis verder of terug kan. Alleen ik heb totaal geen idee hoe ik dit voor mekaar moet krijgen.

Want hoe kan je aangeven welk ID de volgende is, hoe haal je dit uit de database? als WHERE ofzo?

Ik zit helemaal met m'n handen in m'n haar, dit is het laatste stukje van de website wat in orde moet komen. en nu krijg ik het niet voor mekaar.

Acties:
  • 0 Henk 'm!

Verwijderd

select * from tabel limiet 0,10

dat is dus vanaf row 0 en dan 10 rijen weer gaan geven

gewoon een offset variabele meegeven aan een link en deze op de plaats 0 zetten :)
wel ff controleren, of men nog verder naar vorige kan, of verder kan...

edit:
of moet je ff stukje code zien?!

[ Voor 8% gewijzigd door Verwijderd op 27-08-2004 21:22 ]


Acties:
  • 0 Henk 'm!

  • djluc
  • Registratie: Oktober 2002
  • Laatst online: 14:28
zoek eens op limit. Dat is de te gebruiken techniek namelijk. Zoekterm paging staat voor die volgende en vorige knopjes.

Acties:
  • 0 Henk 'm!

Verwijderd

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
  $aantal = @mysql_num_rows(@mysql_query("SELECT * FROM tabel"));
  if ($aantal != 0) {
    if (!isset($_GET['vanaf'])) {
      $_GET['vanaf'] = 0;
    }
    if ($_GET['vanaf'] >= 1) {
      $vanaf = $_GET['vanaf'] - 10;
      if ($vanaf < 0) {
        $vanaf = 0;
      }
      echo "&lt; <a href=\"" . $_SERVER['PHP_SELF'] . "?vanaf=" . $vanaf .  "\">vorige</a>";
    }
    else {
      echo "&lt; vorige";
    }
    if ($aantal > $_GET['vanaf'] + 10) {
      $vanaf = $_GET['vanaf'] + 10;
      if ($vanaf > $aantal) {
        $vanaf = $aantal;
      }
      echo "<a href=\"". $_SERVER['PHP_SELF'] . "?vanaf=" . $vanaf .  "\">volgende</a> &gt;";
    }
    else {
      echo "volgende &gt;";
    }
  }


meer kan ik je niet voorkouwen...

edit:
excuses voor layout vernaggeling

[ Voor 21% gewijzigd door Verwijderd op 27-08-2004 21:25 . Reden: layout verpest bericchie ]


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Verwijderd schreef op 27 augustus 2004 @ 21:22:
select * from tabel limiet 0,10

dat is dus vanaf row 0 en dan 10 rijen weer gaan geven

gewoon een offset variabele meegeven aan een link en deze op de plaats 0 zetten :)
wel ff controleren, of men nog verder naar vorige kan, of verder kan...

edit:
of moet je ff stukje code zien?!
Het gaat niet om een limit. het gaat namelijk om 1 row. bv. row met ref 5
de volgende zou bv. (als het gesorteerd is op prijs) ref 298. Dus dan moet er van de specificatie pagina van ref 5, een link komen naar ref 298. (deze is dan bv. ietsje duurder)

Acties:
  • 0 Henk 'm!

Verwijderd

ik kan niet echt begrijpen wat je bedoelt?!

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Het is moeilijk uit te leggen :)

Ik heb een heel 'archief' met allemaal huizen erin: naam + een plaatje.
dit is op huizenlijst.php, deze kunnen gesorteerd zijn op prijs, naam, liggen etc.
huizen hebben allemaal een ref. voorbeeld van volgerd

referentie nr. volgorde: 8 - 288 - 88- 99 - 2

als je op die naam of plaatje klikt dan kom je op
huizenspec.php. waar je de specificaties tezien krijgt van dit huis.

Als je dan op de pagina met specificaties van referentie 88 zit. moet er een link komen met vorig, naar referentie 288, en volgende naar referentie 99.

maar hoe kan ik op de huizenspec.php pagina aangeven dat referentie 99 de volgende is. hoe haal ik dat uit de dbase

Acties:
  • 0 Henk 'm!

  • WPN
  • Registratie: Augustus 2003
  • Laatst online: 24-07 21:14

WPN

Verwijderd schreef op 27 augustus 2004 @ 21:20:
Nu als ik op zo'n huis klik, krijg je de specificaties van deze huizen te zien.

Nu wil ik dat je middels een knop 'volgende' of 'terug' naar een huis verder of terug kan. Alleen ik heb totaal geen idee hoe ik dit voor mekaar moet krijgen.

Want hoe kan je aangeven welk ID de volgende is, hoe haal je dit uit de database? als WHERE ofzo?
je zit dus in de details pagina, waar je verder wilt gaan?
dan weet je dus het huis ID al
als je dan het ID+1 doet heb je het volgende huis te pakken....


als je bedoelt je hebt de listing pagina van 5 of 10 huizen ofzow, en je wilt volgende hebben, dan meot je onthouden welke set je hebt genomen
zoals eerder gezegt: kijk ff naar de sql LIMIT hiermee kan je zeggen vanaf welk record er gekeken moet worden, en hoeveel dat ie er moet bekijken...
dus moet je onthouden welke set je aan het bekijken bent, en daar bij het laatste nummer +1 doen voor de volgende set en +5 voor de hoeveelheid (als je er 5 wilt zien)

vb:
code:
1
2
3
$sql = "SELECT ........
            FROM huizen
            LIMIT 5, 10";



edit: (duurde ff voordat ik dit gepost had, intussen waren er al meerdere posts bijgekomen)
dan moet je de id's uit de database halen en kijken in welke positie het huidige huis zit
bv: $row[6];
en dan moet je dus op je volgende-link $row[7]; krijgen


btw: hoe kom je aan die referentie... staat dat wel in de db ofzow?

[ Voor 22% gewijzigd door WPN op 27-08-2004 23:13 ]

Als ik denk zoals ik dacht, dan doe ik zoals ik deed, als ik doe zoals ik deed, dan denk ik zoals ik dacht! Cogito Ergo Sum


Acties:
  • 0 Henk 'm!

  • djluc
  • Registratie: Oktober 2002
  • Laatst online: 14:28
als je dan het ID+1 doet heb je het volgende huis te pakken....
Onjuist: verwijder eens een rij en het klopt niet meer. Wat je kan doen: in dit soort situaties:
SELECT FROM tabel ORDER BY jeorderveld WHERE id>dehuidigeid LIMIT 1

Acties:
  • 0 Henk 'm!

  • vinnux
  • Registratie: Maart 2001
  • Niet online
De oplossing zit in de combinate van het sorteer gedeelte in de ORDER BY clausule en het gebruik van LIMIT clausule. Stel ik wil het 5e huis hebben in detail.
Dan zeg ik SELECT * FROM huis ORDER BY <waardes> LIMIT 5,1

Het 6e huis word:
SELECT * FROM huis ORDER BY <waardes> LIMIT 6,1
etc etc

Verwijderen van huizen beinvloed dit process niet.

[ Voor 12% gewijzigd door vinnux op 27-08-2004 23:35 ]


Acties:
  • 0 Henk 'm!

  • WPN
  • Registratie: Augustus 2003
  • Laatst online: 24-07 21:14

WPN

@djluc
ik ga ervan uit dat er geen huizen "physiek" worden verwijdert uit de database
als er een veld inzit VERKOCHT of TONEN ofzow... dan moet dat true of false zijn of een bepaalde waarde om niet of wel te laten zien.....
daardoor kan je dus ook een verkoop geschiedenis bijhouden, met de details van het huis

[ Voor 8% gewijzigd door WPN op 27-08-2004 23:45 ]

Als ik denk zoals ik dacht, dan doe ik zoals ik deed, als ik doe zoals ik deed, dan denk ik zoals ik dacht! Cogito Ergo Sum


Acties:
  • 0 Henk 'm!

  • djluc
  • Registratie: Oktober 2002
  • Laatst online: 14:28
Je mag nooit aannemen dat de primary key netjes opeenvolgend is.

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Klopt primaire key is nooit opeenvolgend, referentie ook niet. (vraag niet waarom niet :) ik krijg het ook zo maar aangeleverd)

Inderdaad zit er ook een TRUE/FALSE (verkocht/tonen) in.

PHP:
1
2
SELECT * FROM huis ORDER BY <waardes> LIMIT 6,1
etc etc


deze snap ik. alleen, hoe weet ik dat het nr. 6 moet worden. Hij is al georderd.

ik heb een query

PHP:
1
SELECT * FROM huizen WHERE ref='$ref'


Hoe weet ik dan dat of de volgende LIMIT dan 6 moet zijn bv.? (moet starten bij 6)

Acties:
  • 0 Henk 'm!

  • WPN
  • Registratie: Augustus 2003
  • Laatst online: 24-07 21:14

WPN

...... niet meer relevant door posting van direct hierboven

[ Voor 77% gewijzigd door WPN op 28-08-2004 18:59 ]

Als ik denk zoals ik dacht, dan doe ik zoals ik deed, als ik doe zoals ik deed, dan denk ik zoals ik dacht! Cogito Ergo Sum


Acties:
  • 0 Henk 'm!

  • ixi
  • Registratie: December 2001
  • Laatst online: 27-08 23:59

ixi

Als je op een huis klikt geef je zijn 'LIMIT nummertje' mee ipv zijn ID. In de pagina waar je ze laat zien gewoon een variabele laten optellen (en de vorige pagina's * 5 natuurlijk).

Nummertje + 1: next, nummertje - 1: prev. Lijkt me de makkelijkste oplossing..

Acties:
  • 0 Henk 'm!

  • blizt
  • Registratie: Januari 2003
  • Laatst online: 11-12-2024

blizt

Wannabe-geek

PHP:
1
2
3
4
5
6
7
8
9
10
11
SELECT
    velden
FROM
    tabel
WHERE
    blog_ID<*huidig_ID*
ORDER BY
    blog_ID
DESC
LIMIT
    0,1

met 'n query als deze heb je de vorige te pakken lijkt mij

United we stand, and divided we fall


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
ixi schreef op 29 augustus 2004 @ 03:16:
Als je op een huis klikt geef je zijn 'LIMIT nummertje' mee ipv zijn ID. In de pagina waar je ze laat zien gewoon een variabele laten optellen (en de vorige pagina's * 5 natuurlijk).

Nummertje + 1: next, nummertje - 1: prev. Lijkt me de makkelijkste oplossing..
Dit is een oplossing, morgen ff uitwerken denk ik, maar ik blijf het vaag vinden dat je dit niet gewoon uit de dbase kan halen, tóch?
Pagina: 1