Versio

Resource id #5 bij echo'en db data

Overzicht Reageren

Piet Jansen

Piet Jansen

20/01/2012 18:40:24
Quote Anchor link
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:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
<?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>
Gewijzigd op 20/01/2012 18:41:06 door Piet Jansen
 
PHP hulp

PHP hulp

25/05/2012 14:43:09
Gesponsorde koppelingen:
 
- Aar -

- Aar -

20/01/2012 18:42:23
Quote Anchor link
Het is logischer om $result in je mysql_fetch_assoc() te gebruiken.
En gebruik ook goede foutafhandeling.
Gewijzigd op 20/01/2012 18:42:40 door - Aar -
 
Niels Kieviet
Beheerder

Niels Kieviet

20/01/2012 18:43:44
Quote Anchor link
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
 
Piet Jansen

Piet Jansen

20/01/2012 18:48:15
Quote Anchor link
Met deze code kom ik iets verder:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
<?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>


Nu krijg ik dit bericht:
gggArray ( [post] => ggg )

Het eerste bericht in de database (welke ggg is) komt nu ook in beeld.

Wat nu?
 
- Aar -

- Aar -

20/01/2012 18:50:28
Quote Anchor link
dat doet print_r. Die toont een variabele in human_readable formaat.

lees anders eerst eens de link die Niels eerder aangaf.
 
Piet Jansen

Piet Jansen

20/01/2012 18:53:09
Quote Anchor link
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):
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
<?php
                $post
="SELECT post FROM posts";
                $result=mysql_query($post);                
                $row = mysql_fetch_assoc($result);
                echo $row['post'];             
            ?>
 
Thomas de vries

thomas de vries

20/01/2012 19:46:13
Quote Anchor link
Dit kan gedaan worden met een while loop/for loop.

dus zo
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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'];
}

?>
Gewijzigd op 20/01/2012 19:46:27 door thomas de vries
 
Piet Jansen

Piet Jansen

21/01/2012 12:19:42
Quote Anchor link
Hartstikke bedankt! Hoe krijg ik ze nu onder elkaar? Alle posts komen nu dus naast elkaar te staan.
 
Wouter J

Wouter J

21/01/2012 12:29:13
Quote Anchor link
Door een HTML break toe te voegen aan de echo...
 
Piet Jansen

Piet Jansen

21/01/2012 12:34:42
Quote Anchor link
Hoe doe ik dat in dit geval?

Ik heb nu dus dit:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
$post=("SELECT post FROM posts") or die (mysql_error());;
                $result = mysql_query($post);
                while($row = mysql_fetch_assoc($result))
                {
                echo $row['post'];//hier ergens moet dus de <br /> komen, maar hoe zet ik die neer?
                }
 
Gerhard l

gerhard l

21/01/2012 12:41:53
Quote Anchor link
Echo $row['post'].'<br/>';
 
Piet Jansen

Piet Jansen

21/01/2012 12:49:53
Quote Anchor link
hartelijk dank!
 



Overzicht Reageren