[mysql]Order & limit

Pagina: 1
Acties:

  • Mark309
  • Registratie: September 2001
  • Niet online

Mark309

Ook wel Piet

Topicstarter
Ik ben een MySQL gastenboekje aan het maken en nu heb ik het volgende probleem.
De paginanummers, mijn bedoeling was om het aantal berichten dat per pagina wordt weergegeven in de link aan kan worden geroepen.
byv. gastenboek.php?berichten=6

Om oudere berichten te bekijken had ik bedacht
gastenboek.php?vanaf=6&berichten=6
en dat hij dan bericht 6 tm 12 weer zou geven in dit geval.

Maar. Jullie raden het al... het lukt niet :P

zodra ik de berichten weer DESC wil sorteren op entry_id krijg ik de error
Warning: Supplied argument is not a valid MySQL result resource

op de limit $vanaf,$totaan kwam ik via Dit! draadje.

Wie kan mij zeggen wat ik fout doe... ik kom er echt niet meer uit.
Hieronder de code.

PHP:
1
2
3
4
if(!$berichten){$berichten = 8;}
if($berichten > 8){$berichten = 8;}
if(!$vanaf){$vanaf = 0;}
$totaan = $vanaf + $berichten;



PHP:
1
2
3
4
5
6
$database_server = mysql_connect(); 
mysql_select_db("gastenboek", $database_server); 
$sql = "select * from gastenboek order by entry_id LIMIT $vanaf,$totaan";  $resultaat = mysql_query($sql); 
$aantal = mysql_num_rows($resultaat); 
echo"<font size='2'>Totaal aantal berichten: $aantal | berichten $vanaf tm $totaan<br></font>";
while ($result = mysql_fetch_object($resultaat)){


Ik hoop dat het verhaal een beetje te volgen is ;)

[ Voor 0% gewijzigd door Mark309 op 26-09-2002 20:01 . Reden: typo :) ]

Productman.nl - Helpt startups in de Achterhoek en Liemers


  • Sybr_E-N
  • Registratie: December 2001
  • Laatst online: 11-09 10:47
Hmmz, gewoon page navigation dus...

Let wel ff op de werking van LIMIT
mysql> SELECT * FROM table LIMIT 5,10; # Retrieve rows 6-15

  • Mark309
  • Registratie: September 2001
  • Niet online

Mark309

Ook wel Piet

Topicstarter
Daar had ik al op gelet.
Het werkt ook perfect zolang ik niet het aantal berichten wil limiten door:
gastenboek.php?vanaf=12?berichten=8 (byv.)

Misschien is het makkelijker als ik de hele code post :?
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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
<?
if(!$berichten){$berichten = 8;}
if($berichten > 8){$berichten = 8;}
if(!$vanaf){$vanaf = 0;}
$totaan = $vanaf + $berichten; 
?>

<html>
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<body bgcolor="#FFFFFF" text="#000000" background="images/back.gif">
<table width="545" border="0" cellspacing="0" cellpadding="0" height="36">
  <tr>
    <td valign="top"> 
      <p>[img]"images/gastenboek.gif"[/img]</p>
      </td>
  </tr>
</table>
<map name="Map"> 
  <area shape="rect" coords="108,17,168,34" href="nieuw.htm">
  <area shape="rect" coords="172,18,213,34" href="#">
  <area shape="rect" coords="216,19,256,32" href="#">
  <area shape="rect" coords="261,18,323,34" href="#">
  <area shape="rect" coords="326,17,361,34" href="#">
</map>

<?
  $database_server = mysql_connect(); 
mysql_select_db("pcsocket", $database_server); 
$sql = "select * from gastenboek LIMIT $vanaf,$totaan"; 
$resultaat = mysql_query($sql); 
$aantal = mysql_num_rows($resultaat); 
echo"<font size='2'>Totaal aantal berichten: $aantal | berichten $vanaf tm $totaan<br></font>";
while ($result = mysql_fetch_object($resultaat)){

$vervang = $result->text;
$avatar = $result->avatar;
include 'ubbcodes.php';
$vervang = stripslashes($vervang);
$email = $result->mail;
$status = $result->status;
$user = $result->usernr;
$moderated = $result->moderated;
$naam = $result->naam;
stripslashes($naam);

echo"
<table width='545' border='0' cellspacing='0' cellpadding='1'>
  <tr> 
    <td width='96' background='images/naam.gif' bgcolor='#FFFFFF'> 
      <div align='center'><font size='2'><b><font color='#000000'>Naam:</font></b></font></div>
    </td>
    <td background='images/midden.gif' bgcolor='#FFFFFF' height='18' width='332'><font size='2' color='#000000'><b>Gepost: 
      [$result->aangemaakt]$result->entry_id";
if($status <> user){echo"-[$status]";}
if($moderated <> unmodded){echo"-[aangepast]";}


echo"</b></font></td>
    <td background='images/midden.gif' bgcolor='#FFFFFF' height='18' width='111'> 
      <table width='85' border='0' cellspacing='0' cellpadding='0' align='right'>
        <tr> 
          <td background='images/knoppen.gif' height='16'>

[img]'images/g_ip.gif'[/img][img]'images/g_hp.gif'[/img]";

if(!$email){
echo"[img]'images/g_em.gif'[/img]";
}else
{   
echo"<a href='meelen.php?email=$email' target=_blank>[img]'images/g_em.gif'[/img]naam te mailen'></a>";} 


if($user == 3){
echo"[img]'images/g_ie.gif'[/img]";
}else
{   
echo"<a href='profiel.php?user=$user' target=_blank>[img]'images/g_ie.gif'[/img]naam'></a>";} 
echo"[img]'images/quote.gif'[/img]

</td>
        </tr>
      </table>
    </td>
  </tr>
</table>


<table width='545' border='0' cellspacing='0' cellpadding='1'>
  <tr> 
    <td width='96' align='center' valign='top' background='images/avatar.gif' bgcolor='#FFFFFF'> 
      <div align='center'><font color='#000000'><b>";

if($status == admin){echo"<font color='red'><b>";}
if($status == poweradmin){echo"<font color='blue>'<b><i>";}
echo"$naam</font></b></i></font>";

echo"</b></font><br>";

if($avatar == geen){echo"<br><br><br>";}else{echo"[img]'$avatar'[/img]";}


echo"        </div>
    </td>
    <td valign='top' bgcolor='#FFFFFF' background='images/bericht.gif' colspan='2'> 
      <p><font color='#000000'>$vervang</font></p>
    </td>
  </tr>
</table>

<br>

";
}
?>
</body>
</html>


Ik weet dat de code niet helemaal optimaal zal zijn :P
* Mark309 is n00b op php gebied

[ Voor 0% gewijzigd door Mark309 op 26-09-2002 20:16 . Reden: [/code] op het eind gezet ]

Productman.nl - Helpt startups in de Achterhoek en Liemers


  • Mark309
  • Registratie: September 2001
  • Niet online

Mark309

Ook wel Piet

Topicstarter
sorry quote ipv edit 8)7

[ Voor 0% gewijzigd door Mark309 op 26-09-2002 20:16 . Reden: sorry quote ipv edit ]

Productman.nl - Helpt startups in de Achterhoek en Liemers


  • CyberSnooP
  • Registratie: Augustus 2000
  • Laatst online: 16-08 06:44

CyberSnooP

^^^^ schrijft --->

* Mark309 is n00b op GoT gebied ;)

De foutmelding gaat er over dat een query niet correct kan worden uitgevoerd. Tip: Maak een abstractie voor queries. Bijv. een functie die je aanroept die automatisch test of het resultaat klopt en zoniet een error weergeeft incl. de uitgevoerde query)

|_____vakje______|


  • whoami
  • Registratie: December 2000
  • Laatst online: 12-09 23:07
Mark309 schreef op 26 september 2002 @ 20:15:
Daar had ik al op gelet.
Het werkt ook perfect zolang ik niet het aantal berichten wil limiten door:
gastenboek.php?vanaf=12?berichten=8 (byv.)

Misschien is het makkelijker als ik de hele code post :?


Neen, dat is het niet.
Het is niet de bedoeling dat je hier uw volledig source post, enkel het relevante onderdeel is meer dan voldoende. Er zal toch niemand de moeite nemen om gans die lap te gaan bestuderen, integendeel, het zal zelfs afschrikken.
P&W is trouwens geen 'post-hier-je-code-en-we-fixen-het'-service/helpdesk.

Je fout zit dus duidelijk bij het SQL statement, dus wat is het nut van al die andere code te posten.

Trouwens, de ORDER BY clause moet de laatste clause zijn van het SELECT statement. Wellicht dat de fout daar ligt.

https://fgheysels.github.io/


  • Mark309
  • Registratie: September 2001
  • Niet online

Mark309

Ook wel Piet

Topicstarter
code:
1
$resultaat = mysql_query("Select * from gastenboek limit $vanaf,$totaan");


Werkt perfect, Maar zodra ik hem wil sorteren:
code:
1
$resultaat = mysql_query("Select * from gastenboek limit $vanaf,$totaan order by entry_id desc");


Gaat het fout. Wie weet hoe ik dit op kan lossen of waar ik er uitleg over kan vinden.

offtopic:
thx voor de tips whoami

Productman.nl - Helpt startups in de Achterhoek en Liemers


  • whoami
  • Registratie: December 2000
  • Laatst online: 12-09 23:07
Gebruik je soms PHP nuke?

https://fgheysels.github.io/


  • Mark309
  • Registratie: September 2001
  • Niet online

Mark309

Ook wel Piet

Topicstarter
Nope.. zelfs nog nooit van gehoord eigenlijk

Productman.nl - Helpt startups in de Achterhoek en Liemers


  • CyberSnooP
  • Registratie: Augustus 2000
  • Laatst online: 16-08 06:44

CyberSnooP

^^^^ schrijft --->

Ik vraag me af of je m'n post gelezen hebt en of je hem hebt begrepen (doorvragen is niet verboden). Bekijk eens goed welke foutmeldingen MySQL teruggeeft (m.b.v. mysql_error).

(en leest de manual zodat je ziet dat limit achter order moet komen en niet andersom)

|_____vakje______|


  • whoami
  • Registratie: December 2000
  • Laatst online: 12-09 23:07
Wellicht heeft het niets te maken met uw script, maar eerder met de configuratie van een of andere app die je gebruikt....

Welk OS, webserver, ... gebruik je?

* whoami is ook geen PHP expert, eerder PHP n00b.. :D

https://fgheysels.github.io/


  • whoami
  • Registratie: December 2000
  • Laatst online: 12-09 23:07
CyberSnooP schreef op 26 september 2002 @ 20:45:

(en leest de manual zodat je ziet dat limit achter order moet komen en niet andersom)


Hoezo? Normaal gezien moet de ORDER BY toch altijd de laatste clausule zijn van uw query? :?

https://fgheysels.github.io/


  • Mark309
  • Registratie: September 2001
  • Niet online

Mark309

Ook wel Piet

Topicstarter
Het os waar deze webserver op draait is op dit moment xp (dit is mn pruts bak zeg maar)
Webserver is apache PHP Version 4.0.4pl1
phpinfo!

offtopic:
whoami zeg maar jij.. u klinkt zo oud.. ben net 17 :P

Productman.nl - Helpt startups in de Achterhoek en Liemers


  • FastWallie
  • Registratie: September 2001
  • Laatst online: 25-11-2024
Zie :

SELECT [STRAIGHT_JOIN]
[SQL_SMALL_RESULT] [SQL_BIG_RESULT] [SQL_BUFFER_RESULT]
[SQL_CACHE | SQL_NO_CACHE] [SQL_CALC_FOUND_ROWS] [HIGH_PRIORITY]
[DISTINCT | DISTINCTROW | ALL]
select_expression,...
[INTO {OUTFILE | DUMPFILE} 'file_name' export_options]
[FROM table_references
[WHERE where_definition]
[GROUP BY {unsigned_integer | col_name | formula} [ASC | DESC], ...
[HAVING where_definition]
[ORDER BY {unsigned_integer | col_name | formula} [ASC | DESC] ,...]
[LIMIT [offset,] rows]
[PROCEDURE procedure_name]
[FOR UPDATE | LOCK IN SHARE MODE]]

Dus limit na de order by

http://www.jawal.nl


  • whoami
  • Registratie: December 2000
  • Laatst online: 12-09 23:07
FastWallie schreef op 26 september 2002 @ 20:54:
Zie :

SELECT [STRAIGHT_JOIN]
[SQL_SMALL_RESULT] [SQL_BIG_RESULT] [SQL_BUFFER_RESULT]
[SQL_CACHE | SQL_NO_CACHE] [SQL_CALC_FOUND_ROWS] [HIGH_PRIORITY]
[DISTINCT | DISTINCTROW | ALL]
select_expression,...
[INTO {OUTFILE | DUMPFILE} 'file_name' export_options]
[FROM table_references
[WHERE where_definition]
[GROUP BY {unsigned_integer | col_name | formula} [ASC | DESC], ...
[HAVING where_definition]
[ORDER BY {unsigned_integer | col_name | formula} [ASC | DESC] ,...]
[LIMIT [offset,] rows]
[PROCEDURE procedure_name]
[FOR UPDATE | LOCK IN SHARE MODE]]

Dus limit na de order by


Bah, strange spul dat MySQL.

https://fgheysels.github.io/


  • Mark309
  • Registratie: September 2001
  • Niet online

Mark309

Ook wel Piet

Topicstarter
als ik hem nu aanroep via: pcsocket.php?vanaf=12
Met deze regel
code:
1
$resultaat = mysql_query("Select * from gastenboek order by entry_id desc limit $vanaf,$totaan ");

werkt hij wel .. Maar geeft hij 19 berichten weer ipv 8 :?

Productman.nl - Helpt startups in de Achterhoek en Liemers


  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

limit doet niet van - tot, maar van - hoeveel

dus als je vanaf 10 tot 20 wilt laten zien moet je 10, 10 opgeven en niet 10, 20 :)

  • Mark309
  • Registratie: September 2001
  • Niet online

Mark309

Ook wel Piet

Topicstarter
ACM schreef op 26 september 2002 @ 21:18:
limit doet niet van - tot, maar van - hoeveel

dus als je vanaf 10 tot 20 wilt laten zien moet je 10, 10 opgeven en niet 10, 20 :)
ACM je bent geweldig :>. t was dus eigenlijk best wel simpel

Vandaar dat hij dus ook 19 berichten gaf ipv 8 zoals de bedoeling was.

Ook de rest bedankt voor het mede oplossen van mijn probleem
code:
1
$resultaat = mysql_query("Select * from gastenboek order by entry_id desc limit $vanaf,$berichten ");
dat is hem nu

[ Voor 0% gewijzigd door Mark309 op 26-09-2002 21:25 . Reden: Toevoeging ]

Productman.nl - Helpt startups in de Achterhoek en Liemers

Pagina: 1