hulp bij gebruik LIMIT in SQL opdracht
Ik gebruik een database en ik heb in die database wel 100 rijen gevuld met een naam.
Met de link "volgende>>" geef ik de nieuwe positie van de pointer door naar de pagina die de namen plaatst en waar het script staat dat de gegevens uit de database gehaalt worden.En die dan de volgende pagina met de volgende 5 namen moet laten zien.
Echter de namen staan in dezelfde database en hebben een andere rubriek_id (bv Jongesnamen een 1 als rubriek_id en meisjesnamen een 2 als rubriek_id).
De moeilijkheid is dat ik dan ook (in de link) tegelijk met de positie van de pointer ook de rubrieks_id moet doorgeven.
PS Ik snap dat het het makkelijkst is als ik voor de jongensnamen en voor de meisjesnamen aparte databases gebruik. Maar ik heb 1 database en gebruik in die database twee rubrieks_id's. En hoe doe je dat dan?
Bertus
Gewijzigd op 16/11/2011 16:37:25 door Bertus Wikkerink
Hoe je twee dingen in een link meegeeft?
pagina.php?var1=xxxx&var2=yyyy&var3=zzzz
De linken die ik gebruik heb ik hier bijgevoegd:
$new_pos_next=$pos+$count;
if($new_pos_next>=$no_data){
$link_next="<font family='verdana' size='2'</font> Einde>>";
}else {
$link_next="<a class=\"volgende\" href=../pad naar deze pagina/naampagina.php?pos=" . $new_pos_next . ">Volgende >></a>";
}
$new_pos_prev=$pos-$count;
if($new_pos_prev<0){
$link_prev="<font family='verdana' size='2'</font><< Begin";
}else{
$link_prev="<a class=\"volgende\" href=../pad naar deze pagina/naampagina.php?pos=" . $new_pos_prev . "><< Vorige</a>";
}
Echter in de database haal ik de juiste gegevens op met behulp van een rubriek_id.
Deze rubriek_id is vanuit een andere pagina doorgegeven via $_GET.
Voor de eerste 5 artikelen werkt het en worden ze goed doorgegeven.
Maar bij de volgende 5 artikelen krijg ik de foutmelding dat de rubriek_id niet bekend is en dus de desbetreffende artikelen niet uit de database kunnen worden opgehaald.
Op de 1 of andere manier moet ik dus bovenstaande linken werkzaam maken zoals U beschreven hebt. Maar dat lukt mij niet.
Bertus
Toevoeging op 16/11/2011 16:58:29:
Op deze manier haal ik de gegevens op uit de database.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?php
//De inhoud
$object_SQL="SELECT * FROM database
WHERE ..._id=" . $rubriek['..._id'] . "
LIMIT $pos,$count";
$object_result=mysql_query($object_SQL);
while($object=mysql_fetch_array($object_result)){
//Nu komt weergave van pagina
......
}
?>
//De inhoud
$object_SQL="SELECT * FROM database
WHERE ..._id=" . $rubriek['..._id'] . "
LIMIT $pos,$count";
$object_result=mysql_query($object_SQL);
while($object=mysql_fetch_array($object_result)){
//Nu komt weergave van pagina
......
}
?>
Bertus
Code (php)
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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
<?php
function getEntries($origin) {
global $con, $adminmode;
$sql = "SELECT * FROM guestbook ORDER BY isSticky DESC, postDate DESC LIMIT ". $origin . ", 5";
$result = mysql_query($sql, $con);
$data = '';
while ($row = mysql_fetch_array($result)) {
$data .= '<div class="gb_title"><div>'.$row['title'] . '</div>';
if ($adminmode) {
$data .= '<div style="float:right; margin-top: -24px;"><a href="#" onclick="gbEditItem(' . $row['id'] . ')">';
$data .= '<img src="/images/edit_icon.png" border="0" title="Bewerken" alt="Bewerken" /></a>';
$data .= '<a href="#" onclick="gbRemoveItem(' . $row['id'] . ')">';
$data .= '<img src="/images/delete_trash_icon.png" border="0" title="Verwijderen" alt="Verwijderen"/></a></div>';
}
$data .= '</div>';
$data .= '<div class="gb_msgbody" id="gbmsg' . $row['id'] . '">'.$row['msg'].'</div>';
$data .= '<div class="gb_footer">Door <b>'.$row['senderName'].'</b> op '.date('d-m-Y H:i', strtotime($row['postDate'])).'</div>';
$data .= '<div class="gb_spacer"> </div>';
}
return $data;
}
$sql = "SELECT post_id FROM guestbook";
$rec = mysql_num_rows(mysql_query($sql, $con));
$pagenum = floor($rec / 5);
if ($rec % 5 > 0) {
$pagenum += 1;
}
if (!isset($_GET['start'] || empty($_GET['start'])
$origin = 0;
else
$origin = $_GET['start'];
?>
html stuff
<?php
echo getEntries($start);
if ($pagenum > 1) {
echo '<div class="paging"><ul>';
for ($i=0; $i < $pagenum; $i++) {
$page = $i + 1;
$start = $i * 5;
echo '<li><a href="/include/guestbook.php?start='.$start.'">'. $page . '</a>';
}
echo '</ul></div>';
}
?>
function getEntries($origin) {
global $con, $adminmode;
$sql = "SELECT * FROM guestbook ORDER BY isSticky DESC, postDate DESC LIMIT ". $origin . ", 5";
$result = mysql_query($sql, $con);
$data = '';
while ($row = mysql_fetch_array($result)) {
$data .= '<div class="gb_title"><div>'.$row['title'] . '</div>';
if ($adminmode) {
$data .= '<div style="float:right; margin-top: -24px;"><a href="#" onclick="gbEditItem(' . $row['id'] . ')">';
$data .= '<img src="/images/edit_icon.png" border="0" title="Bewerken" alt="Bewerken" /></a>';
$data .= '<a href="#" onclick="gbRemoveItem(' . $row['id'] . ')">';
$data .= '<img src="/images/delete_trash_icon.png" border="0" title="Verwijderen" alt="Verwijderen"/></a></div>';
}
$data .= '</div>';
$data .= '<div class="gb_msgbody" id="gbmsg' . $row['id'] . '">'.$row['msg'].'</div>';
$data .= '<div class="gb_footer">Door <b>'.$row['senderName'].'</b> op '.date('d-m-Y H:i', strtotime($row['postDate'])).'</div>';
$data .= '<div class="gb_spacer"> </div>';
}
return $data;
}
$sql = "SELECT post_id FROM guestbook";
$rec = mysql_num_rows(mysql_query($sql, $con));
$pagenum = floor($rec / 5);
if ($rec % 5 > 0) {
$pagenum += 1;
}
if (!isset($_GET['start'] || empty($_GET['start'])
$origin = 0;
else
$origin = $_GET['start'];
?>
html stuff
<?php
echo getEntries($start);
if ($pagenum > 1) {
echo '<div class="paging"><ul>';
for ($i=0; $i < $pagenum; $i++) {
$page = $i + 1;
$start = $i * 5;
echo '<li><a href="/include/guestbook.php?start='.$start.'">'. $page . '</a>';
}
echo '</ul></div>';
}
?>
Gewijzigd op 16/11/2011 17:37:03 door Ger van Steenderen
ik heb geprobeerd om Uw script te volgen. Maar het is voor mij te hoog gegrepen.
Kunt U per kopje in Uw script uitleggen(met behulp van //) waar ik dat onderdeel van UW script in mijn script mee moet vergelijken?
Bij voorbaat dank!
Bertus Wikkerink
Hieronder een paar opmerkingen van mij toegevoegd.
Code (php)
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
27
28
29
30
31
32
33
34
35
36
37
38
39
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
27
28
29
30
31
32
33
34
35
36
37
38
39
<?php
//Is dit niet hetzelfde als: $_GET['rubriek_id'].
function getEntries($origin) {
//Het global maken is anders als in mijn listing maar dan verliezen mijn linken hun waarde.
global $con, $adminmode;
//Het oproepen met $origing is toch hetzelfde als bij mij met $_GET['rubriek_id']?
$sql = "SELECT * FROM guestbook ORDER BY isSticky DESC, postDate DESC LIMIT ". $origin . ", 5";
$result = mysql_query($sql, $con);
$data = '';
while ($row = mysql_fetch_array($result)) {
//Vanaf hier ben ik de weg kwijt. Dit is voor mij te hoog gegrepen.
$data .= '<div class="gb_title"><div>'.$row['title'] . '</div>';
if ($adminmode) {
$data .= '<div style="float:right; margin-top: -24px;"><a href="#" onclick="gbEditItem(' . $row['id'] . ')">';
$data .= '<img src="/images/edit_icon.png" border="0" title="Bewerken" alt="Bewerken" /></a>';
$data .= '<a href="#" onclick="gbRemoveItem(' . $row['id'] . ')">';
$data .= '<img src="/images/delete_trash_icon.png" border="0" title="Verwijderen" alt="Verwijderen"/></a></div>';
}
$data .= '</div>';
$data .= '<div class="gb_msgbody" id="gbmsg' . $row['id'] . '">'.$row['msg'].'</div>';
$data .= '<div class="gb_footer">Door <b>'.$row['senderName'].'</b> op '.date('d-m-Y H:i', strtotime($row['postDate'])).'</div>';
$data .= '<div class="gb_spacer"> </div>';
}
return $data;
}
$sql = "SELECT post_id FROM guestbook";
$rec = mysql_num_rows(mysql_query($sql, $con));
$pagenum = floor($rec / 5);
if ($rec % 5 > 0) {
$pagenum += 1;
}
if (!isset($_GET['start'] || empty($_GET['start'])
$origin = 0;
else
$origin = $_GET['start'];
?>
//Is dit niet hetzelfde als: $_GET['rubriek_id'].
function getEntries($origin) {
//Het global maken is anders als in mijn listing maar dan verliezen mijn linken hun waarde.
global $con, $adminmode;
//Het oproepen met $origing is toch hetzelfde als bij mij met $_GET['rubriek_id']?
$sql = "SELECT * FROM guestbook ORDER BY isSticky DESC, postDate DESC LIMIT ". $origin . ", 5";
$result = mysql_query($sql, $con);
$data = '';
while ($row = mysql_fetch_array($result)) {
//Vanaf hier ben ik de weg kwijt. Dit is voor mij te hoog gegrepen.
$data .= '<div class="gb_title"><div>'.$row['title'] . '</div>';
if ($adminmode) {
$data .= '<div style="float:right; margin-top: -24px;"><a href="#" onclick="gbEditItem(' . $row['id'] . ')">';
$data .= '<img src="/images/edit_icon.png" border="0" title="Bewerken" alt="Bewerken" /></a>';
$data .= '<a href="#" onclick="gbRemoveItem(' . $row['id'] . ')">';
$data .= '<img src="/images/delete_trash_icon.png" border="0" title="Verwijderen" alt="Verwijderen"/></a></div>';
}
$data .= '</div>';
$data .= '<div class="gb_msgbody" id="gbmsg' . $row['id'] . '">'.$row['msg'].'</div>';
$data .= '<div class="gb_footer">Door <b>'.$row['senderName'].'</b> op '.date('d-m-Y H:i', strtotime($row['postDate'])).'</div>';
$data .= '<div class="gb_spacer"> </div>';
}
return $data;
}
$sql = "SELECT post_id FROM guestbook";
$rec = mysql_num_rows(mysql_query($sql, $con));
$pagenum = floor($rec / 5);
if ($rec % 5 > 0) {
$pagenum += 1;
}
if (!isset($_GET['start'] || empty($_GET['start'])
$origin = 0;
else
$origin = $_GET['start'];
?>
html stuff
Code (php)
Toevoeging op 22/11/2011 22:14:56:
Geachte SanThe,
dat wat U mij meegeeft is precies zoals ik denk dat de oplossing is. Maar mijn script weigert mee te werken.
Uw:
pagina.php?var1=xxxx&var2=yyyy&var3=zzzz
heb ik geprobeerd bij MIJN link (hierboven):
$link_next="<a class=\"volgende\" href=../pad naar deze pagina/naampagina.php?pos=" . $new_pos_next . ">Volgende >></a>";
En mijn link:
$link_prev="<a class=\"volgende\" href=../pad naar deze pagina/naampagina.php?pos=" . $new_pos_prev . "><< Vorige</a>";
Deze heb ik volgens Uw mededeling proberen te veranderen in:
$link_next="<a class=\"volgende\" href=../pad naar deze pagina/naampagina.php?pos=" . $new_pos_next . " & ". $_GET['rubriek_id'] . ">Volgende >></a>";
En in:
$link_prev="<a class=\"volgende\" href=../pad naar deze pagina/naampagina.php?pos=" . $new_pos_prev . " & ". $_GET['rubriek_id'] . "><< Vorige</a>";
Maar beide veranderingen hebben geen invloed.
Ik blijf de melding houden dat rubriek_id bij de tweede pagina met 5 artikelen
niet bekend is.
Wel wordt keurig de nieuwe pos(=positie van de pointer) doorgegeven.
Kunt U mij laten zien wat ik dan verkeerd doe? BV In de syntax.
Bertus Wikkerink
Het script van Gert is bijna kant en klaar. Wat je moet aanpassen is de query (jouw tabelnaam, veldnamen, etc.).
Code (php)
1
$link_prev="<a class=\"volgende\" href=../pad naar deze pagina/naampagina.php?pos=" . $new_pos_prev . " & ". $_GET['rubriek_id'] . "><< Vorige</a>";
Wat zie je in de broncode van je pagina staan als je je pagina opvraagt? Wordt daarin $new_pos_prev en rubriek_id wel goed weergegeven?
Haal die spaties rond & eens weg.
Gewijzigd op 22/11/2011 22:23:51 door Obelix Idefix
Ik zou hier géén spaties in gebruiken.
Dit is de code die ik gebruik voor de linken:
Code (php)
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
27
28
29
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
27
28
29
<?php
$new_pos_next=$pos+$count;
if($new_pos_next>=$no_data){
$link_next="<font family='verdana' size='2'</font> Einde>>";
}else {
$link_next="<a class=\"volgende\" href=../pad naar deze pagina/naampagina.php?pos=" . $new_pos_next . ">Volgende >></a>";
}
$new_pos_prev=$pos-$count;
if($new_pos_prev<0){
$link_prev="<font family='verdana' size='2'</font><< Begin";
}else{
$link_prev="<a class=\"volgende\" href=../pad naar deze pagina/naampagina.php?pos=" . $new_pos_prev . "><< Vorige</a>";
}
Daarna ga ik over tot de weergave van de artikelen. Hiervoor haal ik de juiste artikelen op met behulp van $rubriek_id. En geef ik met behulp van $pos per pagina 5 artikelen weer:
//De inhoud
$object_SQL="SELECT * FROM database
WHERE ..._id=" . $rubriek['..._id'] . "
LIMIT $pos,$count";
$object_result=mysql_query($object_SQL);
while($object=mysql_fetch_array($object_result)){
//Nu komt weergave van pagina
......
}
?>
$new_pos_next=$pos+$count;
if($new_pos_next>=$no_data){
$link_next="<font family='verdana' size='2'</font> Einde>>";
}else {
$link_next="<a class=\"volgende\" href=../pad naar deze pagina/naampagina.php?pos=" . $new_pos_next . ">Volgende >></a>";
}
$new_pos_prev=$pos-$count;
if($new_pos_prev<0){
$link_prev="<font family='verdana' size='2'</font><< Begin";
}else{
$link_prev="<a class=\"volgende\" href=../pad naar deze pagina/naampagina.php?pos=" . $new_pos_prev . "><< Vorige</a>";
}
Daarna ga ik over tot de weergave van de artikelen. Hiervoor haal ik de juiste artikelen op met behulp van $rubriek_id. En geef ik met behulp van $pos per pagina 5 artikelen weer:
//De inhoud
$object_SQL="SELECT * FROM database
WHERE ..._id=" . $rubriek['..._id'] . "
LIMIT $pos,$count";
$object_result=mysql_query($object_SQL);
while($object=mysql_fetch_array($object_result)){
//Nu komt weergave van pagina
......
}
?>
Voor SanThe:
ik heb mijn linken aangepast en krijg in de balk:
naampagina.php?pos=5&5
te zien.
Ook werken de html linken dan niet meer en krijg ik bij aanklikken van vorige of volgende of bij hoofdmenu niet meer de juiste pagina te zien.
Pos gebruik ik om de volgende 5 artikelen op een volgende pagina weer te geven.
Als ik niks wijzig aan mijn script, werkt pos correct en geeft de balk netjes de nieuwe pos weer.bv:
naampagina.php?pos=5
naampagina.php?pos=10
enz.
Bij vorige pagina telt ie ook netjes terug.
Alleen er staan geen artikelen op die pagina omdat ie zegt dat ie het rubriek_id niet herkend.
Bertus
Toevoeging op 23/11/2011 17:44:14:
Voor SanThe,
ik ben al weer verder aan het uitproberen.
Als ik de linken aangepast heb(zoals U voorstelde),
krijg ik nu op de volgende pagina waar de volgende 5 artikelen moeten staan:
naampagina.php?pos=5&5 te staan (als rubriek_id van die artikelen 5 is)
en
naampagina.php?pos=5&1 te staan (als rubriek_id van die artikelen 1 is)
Maar nog steeds de melding dat rubriek_id niet bekend is!
Bertus
Toevoeging op 23/11/2011 18:58:17:
EUREKA!!!
Het werkt!!!
SanThe had de oplossing. Nogmaals hartelijk dank!
naampagina.php?pos=5&5
moest alleen nog worden:
naampagina.php?pos=5&rubriek_id=5
Toen werkte het.
Nogmaals bedankt voor jullie hulp.
Groeten,
Bertus
Dit topic is hiermede gesloten.
Gewijzigd op 23/11/2011 17:23:11 door Bertus Wikkerink