Blog / Gastboek
ik had een gastenboek en ik heb nu een blog geschreven maar nu heb ik een probleem met de navigatie. Het probleem is dat ik het id uit de url haal:
http://jasperdesmet.bplaced.net/blog.php?id=56?start=5
zoals je ziet staat er na ?id=.. ?start=5 dat dient voor de reacties op verschillende pagina's te zetten als ik nu het id opvraag met $_GET[id] dan haal ik het id op maar daar achter staat dan bv: ?start=5 endan krijg ik een mysql error.
Warning: mysql_num_rows() expects parameter 1 to be resource, boolean given in /users/jasperdesmet/www/blog.php on line 42
geen bericht gevonden
Warning: mysql_num_rows() expects parameter 1 to be resource, boolean given in /users/jasperdesmet/www/blog.php on line 73
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '?start=5' at line 1
Ik weet niet hoe dit heet(ik kan het dus niet zoeken)
Iemand een idee hoe ik dit oplos?
voor het duidelijker te maken
www.jasperdesmet.bplaced.net
klik daar op bekijk reacties of voeg reactie toe bij eigen site en dan kan je het zien.
Als je niet snap wat ik bedoel met de reacties op verschillende pagina's zetten kijk dan op de index bij de reacties die er staan. (dat is van mijn vorig gatsenboek)
Alvast bedankt
index.php?a=1&b=2&c=3
En pas correcte controles en validaties toe!!
Indien je dat had dan was die query geen eens afgevuurd geweest geworden!
Gewijzigd op 21/08/2010 15:25:22 door Noppes Homeland
Noppes Homeland op 21/08/2010 15:24:02:
je moet toch onderhand wel weten hoe je meerdere parameters in de url moet zetten
index.php?a=1&b=2&c=3
En pas correcte controles en validaties toe!!
Indien je dat had dan was die query geen eens afgevuurd geweest geworden!
index.php?a=1&b=2&c=3
En pas correcte controles en validaties toe!!
Indien je dat had dan was die query geen eens afgevuurd geweest geworden!
edit: lukt me nog niet. xs
Gewijzigd op 21/08/2010 15:39:18 door Jasper DS
GEEN ENE KLOOT
Dus wees duidelijk in het geen er dan nog niet lukt - verduidelijk het aan de hand van wat relevante code -. Overigens kan je in die paar minuten natuurlijk nooit je code hebben aangepast, zodat je wel een correcte url verkrijgt en de benodigde controles en validaties uitvoert op $_GET / $_POST waarden
Gewijzigd op 21/08/2010 15:56:52 door Noppes Homeland
Noppes Homeland op 21/08/2010 15:48:42:
En wat hebben we aan de melding: "edit: lukt me nog niet. xs"
GEEN ENE KLOOT
Dus wees duidelijk in het geen er dan nog niet lukt - verduidelijk het aan de hand van wat relevante code -. Overigens kan je in die paar minuten natuurlijk nooit je code hebben aangepast, zodat je wel een correcte url verkrijgt en de benodigde controles en validaties uitvoert op $_GET / $_POST waarden
GEEN ENE KLOOT
Dus wees duidelijk in het geen er dan nog niet lukt - verduidelijk het aan de hand van wat relevante code -. Overigens kan je in die paar minuten natuurlijk nooit je code hebben aangepast, zodat je wel een correcte url verkrijgt en de benodigde controles en validaties uitvoert op $_GET / $_POST waarden
ik weet niet waar de fout zit. ik kan moeilijk de hele code plaatsen
ik zal de navigatie code plaatsen:
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
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
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
<?php
$_GET['id'];
$sql = sprintf("SELECT * FROM blog WHERE id=$_GET[id]") or die (mysql_error());
$res = mysql_query($sql);
if(mysql_num_rows($res) == 0) echo 'geen bericht gevonden';
else{
$result = mysql_fetch_assoc($res);
$titel = htmlentities($result['titel']);
$bericht = htmlentities($result['bericht']);
$datum = $result['datum'];
}
echo "<strong>".$titel."</strong><br />";
echo $datum;
echo nl2br($bericht);
/// NAVIGATIE
//max weergeven per pagina
$per_page = 5;
// get start variable
$start = $_GET['start'];
// count records
$record_count = mysql_num_rows(mysql_query("SELECT * from reageer_index where blog=$_GET[id]")) or die (mysql_error());
// count max pages
$max_pages = $record_count / $per_page; //may come out as decimal
if (!$start)
$start = 0;
//display data
//setup prev and next var
$prev = $start - $per_page;
$next = $start + $per_page;
//show prev but
if (!($start <= 0))
echo "<a href='blog.php?id=$_GET[id];start=$prev' class='gastboek1'>Vorige</a> ";
//show page numb
// set variable voor eerste pag.
$i=1;
for ($x=0;$x<$record_count;$x=$x+$per_page)
{
echo "<a href='blog.php?id=$_GET[id];start=$x' class='gastboek1'>$i</a> ";
$i++;
}
//show next but
if (!($start>=$record_count-$per_page))
echo " <a href='blog.php?id=$_GET[id];start=$next?' class='gastboek1'>volgende</a>";
/// EINDE NAVIGATIE
?>
$_GET['id'];
$sql = sprintf("SELECT * FROM blog WHERE id=$_GET[id]") or die (mysql_error());
$res = mysql_query($sql);
if(mysql_num_rows($res) == 0) echo 'geen bericht gevonden';
else{
$result = mysql_fetch_assoc($res);
$titel = htmlentities($result['titel']);
$bericht = htmlentities($result['bericht']);
$datum = $result['datum'];
}
echo "<strong>".$titel."</strong><br />";
echo $datum;
echo nl2br($bericht);
/// NAVIGATIE
//max weergeven per pagina
$per_page = 5;
// get start variable
$start = $_GET['start'];
// count records
$record_count = mysql_num_rows(mysql_query("SELECT * from reageer_index where blog=$_GET[id]")) or die (mysql_error());
// count max pages
$max_pages = $record_count / $per_page; //may come out as decimal
if (!$start)
$start = 0;
//display data
//setup prev and next var
$prev = $start - $per_page;
$next = $start + $per_page;
//show prev but
if (!($start <= 0))
echo "<a href='blog.php?id=$_GET[id];start=$prev' class='gastboek1'>Vorige</a> ";
//show page numb
// set variable voor eerste pag.
$i=1;
for ($x=0;$x<$record_count;$x=$x+$per_page)
{
echo "<a href='blog.php?id=$_GET[id];start=$x' class='gastboek1'>$i</a> ";
$i++;
}
//show next but
if (!($start>=$record_count-$per_page))
echo " <a href='blog.php?id=$_GET[id];start=$next?' class='gastboek1'>volgende</a>";
/// EINDE NAVIGATIE
?>
Gewijzigd op 21/08/2010 16:09:39 door Jasper DS
2. $sql = sprintf("SELECT * FROM blog WHERE id=$_GET[id]") or die......
- sprintf is foutief gebruikt
- geen controle validatie op $_GET['id']
- sql injectie is mogelijk
- or die is niet van toepassing, je wilt fatsoenlijke foutafhandeling op het moment dat bij het uitvoeren van de query een fout op treed
3. je moet de mysql functies niet nesten, onmogelijk om dat correcte foutafhandeling te doen
4. je url is nog steeds niet correct
href='blog.php?id=$_GET[id];start=$next?'
waar oh waar is nu de & en waarom in vredesnaam aan het eind nu nog een ongepast vraagteken plaatsen
- je doet er verstandiger aan om
4.1 je html te quoten met '' en niet met ""
4.2. html attribuutwaarden te qouten met "" ipv ''
4.3. php variabelen buiten de quotes te plaatsen
en zo kunnen we elke regel van jouw code wel van commentaar voorzien.
kijk eens op
http://www.phphulp.nl/php/tutorials/
of je daar niet wat gerelateerde artikelen tegen komt met betrekking tot jouw nietszeggende problemen
Gewijzigd op 21/08/2010 16:33:52 door Noppes Homeland
Je gebruikt wel een harde aanpak xo
Gewijzigd op 21/08/2010 16:42:24 door Jasper DS
Met andere woorden:
denk eerst zelf eens na, zoek zaken zelf uit, alvorens je onzinnige vragen gaat stellen.