Resource id #5 bij echo'en db data
Beste mensen,
Ik ben bezig met een klein blog systeempje om PHP eens onder de knie te krijgen. Ik ben nog wel een behoorlijke beginner, maar dat zal wel geen probleem zijn aangezien ik het al begin te leren;)
Ik heb dus het volgende probleem:
Ik heb een database genaamd 'blog' met een table genaamd 'posts' met daarin een rij genaamd 'post' waar dan weer het berichte in staat. Nu wil ik dus mijn berichten echo'en, dus de posts. Met SQL haal ik de data wel uit mijn database, maar ik krijg ze niet in beeld. Ik krijg geen error of warning, maar wel het stukje tekst van resource id #5. Ergens op dit forum heb ik gelezen dat dit goed is en dat de data moet worden 'gefetched' met de daarvoor aangewezen functies. Ik heb de code en tips van iemand van dat topic (http://www.phphulp.nl/php/forum/topic/resource-id-5/18516/) meegenomen en ben tot het volgende resultaat gekomen: ning: mysql_fetch_assoc() expects parameter 1 to be resource, string given in D:\Program Files\xampp\htdocs\blog\index.php on line 31
Dat is dus niet juist denk ik. Wat moet ik doen om dit te fixen?
Mijn script ziet er als volgt uit:
Ik ben bezig met een klein blog systeempje om PHP eens onder de knie te krijgen. Ik ben nog wel een behoorlijke beginner, maar dat zal wel geen probleem zijn aangezien ik het al begin te leren;)
Ik heb dus het volgende probleem:
Ik heb een database genaamd 'blog' met een table genaamd 'posts' met daarin een rij genaamd 'post' waar dan weer het berichte in staat. Nu wil ik dus mijn berichten echo'en, dus de posts. Met SQL haal ik de data wel uit mijn database, maar ik krijg ze niet in beeld. Ik krijg geen error of warning, maar wel het stukje tekst van resource id #5. Ergens op dit forum heb ik gelezen dat dit goed is en dat de data moet worden 'gefetched' met de daarvoor aangewezen functies. Ik heb de code en tips van iemand van dat topic (http://www.phphulp.nl/php/forum/topic/resource-id-5/18516/) meegenomen en ben tot het volgende resultaat gekomen: ning: mysql_fetch_assoc() expects parameter 1 to be resource, string given in D:\Program Files\xampp\htdocs\blog\index.php on line 31
Dat is dus niet juist denk ik. Wat moet ik doen om dit te fixen?
Mijn script ziet er als volgt uit:
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
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
<?php
include("connection.php");
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<title>Blog</title>
<!--Meta data, stylesheets, JS etc. will come here-->
</head>
<body>
<div id="add_post">
<form action="add_post.php" method="post">
<textarea type="text" name="post" style="width: 500px; height: 100px; resize: none;"></textarea><br />
<input type="submit" value="post" style="width: 500px; height: 40px;" />
</form>
</div>
<hr />
<div id="posts">
<?php
$post="SELECT post FROM posts";
$result=mysql_query($post);
while ($row = mysql_fetch_assoc ($post)) {
echo '<p>'.$row['post'].'</p>';
}
//echo "$result";<--dit probeerde ik zelf, niet op letten...
?>
</div>
</body>
</html>
include("connection.php");
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<title>Blog</title>
<!--Meta data, stylesheets, JS etc. will come here-->
</head>
<body>
<div id="add_post">
<form action="add_post.php" method="post">
<textarea type="text" name="post" style="width: 500px; height: 100px; resize: none;"></textarea><br />
<input type="submit" value="post" style="width: 500px; height: 40px;" />
</form>
</div>
<hr />
<div id="posts">
<?php
$post="SELECT post FROM posts";
$result=mysql_query($post);
while ($row = mysql_fetch_assoc ($post)) {
echo '<p>'.$row['post'].'</p>';
}
//echo "$result";<--dit probeerde ik zelf, niet op letten...
?>
</div>
</body>
</html>
Gewijzigd op 20/01/2012 18:41:06 door Piet Jansen
Gesponsorde koppelingen:
Het is logischer om $result in je mysql_fetch_assoc() te gebruiken.
En gebruik ook goede foutafhandeling.
En gebruik ook goede foutafhandeling.
Gewijzigd op 20/01/2012 18:42:40 door - Aar -
Beste Piet,
Op dit moment fetch je een query. (variabele $post)
Wat jij wilt is het fetchen van het resultaat van je query. Die zit in variabele ($result)
Voor de rest, heb je geen foutafhandeling toegepast. Ik verwijs je daarom door naar deze tutorial waarin netjes wordt uitlegt hoe je een juiste foutafhandeling toepast: tutorial. (hoofdstuk 5)
Ik raad je aan om de tutorial in zijn geheel te lezen, is zeer leerzaam voor beginnende PHPers!
Succes!
Niels Kieviet
Op dit moment fetch je een query. (variabele $post)
Wat jij wilt is het fetchen van het resultaat van je query. Die zit in variabele ($result)
Voor de rest, heb je geen foutafhandeling toegepast. Ik verwijs je daarom door naar deze tutorial waarin netjes wordt uitlegt hoe je een juiste foutafhandeling toepast: tutorial. (hoofdstuk 5)
Ik raad je aan om de tutorial in zijn geheel te lezen, is zeer leerzaam voor beginnende PHPers!
Succes!
Niels Kieviet
Met deze code kom ik iets verder:
Nu krijg ik dit bericht:
gggArray ( [post] => ggg )
Het eerste bericht in de database (welke ggg is) komt nu ook in beeld.
Wat nu?
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
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
<?php
include("connection.php");
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<title>Blog</title>
<!--Meta data, stylesheets, JS etc. will come here-->
</head>
<body>
<div id="add_post">
<form action="add_post.php" method="post">
<textarea type="text" name="post" style="width: 500px; height: 100px; resize: none;"></textarea><br />
<input type="submit" value="post" style="width: 500px; height: 40px;" />
</form>
</div>
<hr />
<div id="posts">
<?php
$post="SELECT post FROM posts";
$result=mysql_query($post);
$row = mysql_fetch_assoc($result);
echo $row['post'];
print_r($row);
?>
</div>
</body>
</html>
include("connection.php");
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<title>Blog</title>
<!--Meta data, stylesheets, JS etc. will come here-->
</head>
<body>
<div id="add_post">
<form action="add_post.php" method="post">
<textarea type="text" name="post" style="width: 500px; height: 100px; resize: none;"></textarea><br />
<input type="submit" value="post" style="width: 500px; height: 40px;" />
</form>
</div>
<hr />
<div id="posts">
<?php
$post="SELECT post FROM posts";
$result=mysql_query($post);
$row = mysql_fetch_assoc($result);
echo $row['post'];
print_r($row);
?>
</div>
</body>
</html>
Nu krijg ik dit bericht:
gggArray ( [post] => ggg )
Het eerste bericht in de database (welke ggg is) komt nu ook in beeld.
Wat nu?
dat doet print_r. Die toont een variabele in human_readable formaat.
lees anders eerst eens de link die Niels eerder aangaf.
lees anders eerst eens de link die Niels eerder aangaf.
Ik snap het. Ik zag dat later en heb het weggehaald waarna ik ook wel degelijk een stukje data uit mijn database in beeld kreeg, namelijk het berichte 'ggg'.
Nu wil ik dus dat alle berichten onder elkaar komen, hoe doe ik dat? Ik heb eens een keer iets gelezen over foreach en dan het bericht echo'en etc...
Mijn code (alleen het php gedeelte nu, anders wordt de pagina hier zo vol):
Nu wil ik dus dat alle berichten onder elkaar komen, hoe doe ik dat? Ik heb eens een keer iets gelezen over foreach en dan het bericht echo'en etc...
Mijn code (alleen het php gedeelte nu, anders wordt de pagina hier zo vol):
Code (php)
1
2
3
4
5
6
2
3
4
5
6
<?php
$post="SELECT post FROM posts";
$result=mysql_query($post);
$row = mysql_fetch_assoc($result);
echo $row['post'];
?>
$post="SELECT post FROM posts";
$result=mysql_query($post);
$row = mysql_fetch_assoc($result);
echo $row['post'];
?>
Dit kan gedaan worden met een while loop/for loop.
dus zo
dus zo
Code (php)
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
<?php
$post = "SELECT post FROM posts";
$result = mysql_query($post);
while($row = mysql_fetch_assoc($result))
{
echo $row['post'];
}
?>
$post = "SELECT post FROM posts";
$result = mysql_query($post);
while($row = mysql_fetch_assoc($result))
{
echo $row['post'];
}
?>
Gewijzigd op 20/01/2012 19:46:27 door thomas de vries
Hartstikke bedankt! Hoe krijg ik ze nu onder elkaar? Alle posts komen nu dus naast elkaar te staan.
Door een HTML break toe te voegen aan de echo...
Hoe doe ik dat in dit geval?
Ik heb nu dus dit:
Ik heb nu dus dit:
Echo $row['post'].'<br/>';
hartelijk dank!



