Avatar billede pepsiman Juniormester
02. november 2008 - 11:42 Der er 11 kommentarer og
2 løsninger

Øvelse - topics_forum - fejl line 21?

Hej alle.

jeg øver mig med at skrive kode fra bogen: PHP, MySQL og apache.

jeg bruger wamp som server.

jeg skrive kode ind og opload det. det siges at det er noget fejl på line 21:

Parse error: syntax error, unexpected T_LNUMBER in C:\wamp\www\forums\do_addtopic.php on line 21.

fejl ligger hos:
<table cellpadding="3" cellspacing="1" border="1">


lille afsnit:

$display_block .= "
    <table cellpadding="3" cellspacing="1" border="1">
    <tr>
    <th># of POSTS</th>
    </tr>";

Kan nogen hjælpe mig?
Avatar billede w13 Novice
02. november 2008 - 11:55 #1
Ja, du kan jo ikke bruge anførselstegn på den måde inde i en string med anførselstegns..

Så skal man "escape" anførselstegnene sådan her:

$display_block .= "
    <table cellpadding=\"3\" cellspacing=\"1\" border=\"1\">
    <tr>
    <th># of POSTS</th>
    </tr>";
Avatar billede pepsiman Juniormester
02. november 2008 - 12:09 #2
jeg har retter op med din kode,men ny problem med line 30

line 30:
$topic_title =
        stripslashes(topic_info['topic_title']);


while ($topic_info =
    mysql_fetch_array($get_topics_res)) {
        $topic_id = $topic_info['topic_id'];
        $topic_title =
            stripslashes(topic_info['topic_title']);
        $topic_create_time =
            $topic_info['fmt_topic_create_time'];
        $topic_owner =
            stripslashes($topic_info['topic_owner']);


fuld kode:

<?php
// skab forbindelse til server og vælge database
$conn = mysql_connect("localhost", "*****", "*****") or die(mysql_error());
mysql_select_db("forum",$conn) or die(mysql_error());

// hent emnerne
        $get_topics = "select topic_id, topic_title, date_format(topic_create_time, topic_owner  from forum_topics order by topic_create_time decs";
        $get_topics_res = mysql_query($get_topics,$conn) or die(mysql_error());
if (mysql_num_rows($get_topics_res) < 1) {

// er det ingen emner, så fortæl det
    $display_block = "<p><em>No topics exist.</em></p>";
    } else {
// opret streng til udskriften
    $display_block = "
    <table cellpadding=\"3\" cellspacing=\"1\" border=\"1\">
    <tr>
    <th>TOPIC TITLE</th>
    <th># of POSTS</th>
    </tr>";

    while ($topic_info =
    mysql_fetch_array($get_topics_res)) {
        $topic_id = $topic_info['topic_id'];
        $topic_title =
            stripslashes(topic_info['topic_title']);
        $topic_create_time =
            $topic_info['fmt_topic_create_time'];
        $topic_owner =
            stripslashes($topic_info['topic_owner']);
   
// hent antal indlæg
    $get_num_posts = "select count(post_id) from forum_post where topic_id = $topic_id";
    $get_num_post_res = mysql_query($get_num_posts,$conn) or die(mysql_error());
    $num_post = mysql_rsultat($get_num_posts_res,0,'count(post_id)');

// føj til udskriften
    $display_block = ."
    <tr>
    <td><a href=\"showtopic.php?topic_id=$topic_id\"><strong>$topic_title</strong></a><br>
    create on $topic_create_time by $topic_owner</td>
    <td align="center">$num_posts</td>
    </tr>";
    }
   
    // afslut tabel
    $display_block .= "</table>";
    }
    ?>
<html>
<head>
<title>Topics in my forum</title>
</head>   
<body>
<h1>Topic in my forum</h1>
<?php print you like to <a href="addtopic.thml">add a topic </a>?</p>
</body>
Avatar billede w13 Novice
02. november 2008 - 12:11 #3
Du glemmer at fortælle, hvad den nye fejlbesked er. Den skal vi bruge for at vide, hvad der er galt.
Avatar billede pepsiman Juniormester
02. november 2008 - 12:12 #4
Parse error: syntax error, unexpected '[' in C:\wamp\www\forums\do_addtopic.php on line 30
Avatar billede w13 Novice
02. november 2008 - 12:14 #5
$topic_title =
            stripslashes(topic_info['topic_title']);

skal være:

$topic_title =
            stripslashes($topic_info['topic_title']);

Det står der sikkert også i din bog. =)
Avatar billede pepsiman Juniormester
02. november 2008 - 12:28 #6
ups.. hehe.

ny problem. jeg håber det er sidste fejl.
det står i bogen at jeg skrive sådan.

line 46:
<td align="center">$num_posts</td>

--------------
$display_block .= "
    <tr>
    <td><a href=\"showtopic.php?topic_id=$topic_id\"><strong>$topic_title</strong></a><br>
    create on $topic_create_time by $topic_owner</td>
    <td align="center">$num_posts</td>
    </tr>";
Avatar billede w13 Novice
02. november 2008 - 12:29 #7
Det er det samme som første fejl.

Ret:

<td align="center">$num_posts</td>

til:

<td align=\"center\">$num_posts</td>

Men står der ikke det i bogen?
Avatar billede pepsiman Juniormester
02. november 2008 - 12:32 #8
Mange tak..

det undrer mig at det er ikke noget \ i bogen.

svar
Avatar billede w13 Novice
02. november 2008 - 12:33 #9
Problemet er jo, at du har:

$display_block .= "
    ...
    ";

Dvs. du åbner og lukker en tekststreng med anførselstegn.

Derfor kan du ikke bruge anførselstegn inde i strengen - du skal derfor bruge \" i stedet, hvilket kaldes at escape et anførseltegn.
Avatar billede w13 Novice
02. november 2008 - 12:33 #10
:)
Avatar billede w13 Novice
02. november 2008 - 12:35 #11
Tak for points!
Avatar billede pepsiman Juniormester
02. november 2008 - 12:41 #12
jeg overvejer at bruge bogen,fordi det opstår mange fejl. det betaler ikke sig at bruge bogen.

bogen: PHP 4.2 , mysql 4.0 apache 2.0.

jeg bruger PHP 5 og wamp.

skal jeg bruger anden bogen med PHP 5?
Avatar billede w13 Novice
02. november 2008 - 12:45 #13
Jeg kender desværre ingen PHP-bøger, så det skal jeg ikke kunne sige.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester