Archief - PHP: News System doesn't work

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

[T-RAW]Freak

Legacy Member
PHP:
<?php
/* user config variables */
$max_items = 5; /* max number of news items to show */

/* make database connection */
$db = mysql_connect ('localhost','root','Berskin99');
mysql_select_db ('test',$db);

function displayNews($all = 0) {
    /* bring in two variables
     * $db is our database connection
     * $max_items is the maximum number
     * of news items we want to display */
    global $db, $max_items;
    
    /* query for news items */
    if ($all == 0) {
        /* this query is for up to $max_items */
        $query = "SELECT id,title,newstext," . 
                 "DATE_FORMAT(postdate, '%Y-%m-%d') as date " . 
                 "FROM news ORDER BY postdate DESC LIMIT $max_items";
    } else {
        /* this query will get all news */
        $query = "SELECT id,title,newstext," . 
                 "DATE_FORMAT(postdate, '%Y-%m-%d') as date " .
                 "FROM news ORDER BY postdate DESC";
    }
    $result = mysql_query ($query);
    while ($row = mysql_fetch_assoc ($result)) {
        /* display news in a simple table */
        echo "<TABLE border=\"1\" width=\"300\">\n";

        /* place table row data in 
         * easier to use variables.
         * Here we also make sure no
         * HTML tags, other than the
         * ones we want are displayed */
        $date = $row['date'];        
        $title = htmlentities ($row['title']);
        $news = nl2br (strip_tags ($row['newstext'], '<a><b><i><u>'));
        
        /* display the data */
        echo "<TR><TD><b>$title</b> posted on $date</TD></TR>\n";
        echo "<TR><TD>$news</TD></TR>\n";
        
        /* get number of comments */
        $comment_query = "SELECT count(*) FROM news_comments " .
                         "WHERE news_id={$row['id']}";
        $comment_result = mysql_query ($comment_query);
        $comment_row = mysql_fetch_row($comment_result);
        
        /* display number of comments with link */
        echo "<TR><TD><a href=\"{$_SERVER['PHP_SELF']}" .
             "?action=show&id={$row['id']}\">Comments</a>" .
             "($comment_row[0]}</TD></TR>\n";
        
        /* finish up table*/
        echo "</TABLE>\n";
        echo "<BR>\n";
    }
    
    /* if we aren't displaying all news, 
     * then give a link to do so */
    if ($all == 0) {
        echo "<a href=\"{$_SERVER['PHP_SELF']}" .
             "?action=all\">View all news</a>\n";
    }
}

function displayOneItem($id) {
    global $db;
    
    /* query for item */
    $query = "SELECT * FROM news WHERE id=$id";
    $result = mysql_query ($query);
    
    /* if we get no results back, error out */
    if (mysql_num_rows ($result) == 0) {
        echo "Bad news id\n";
        return;
    }
    $row = mysql_fetch_assoc($result);
    echo "<TABLE border=\"1\" width=\"300\">\n";

    /* easier to read variables and 
     * striping out tags */
    $title = htmlentities ($row['title']);
    $news = nl2br (strip_tags ($row['newstext'], '<a><b><i><u>'));
    
    /* display the items */
    echo "<TR><TD><b>$title</b></TD></TR>\n";
    echo "<TR><TD>$news</TD></TR>\n";
    
    echo "</TABLE>\n";
    echo "<BR>\n";
    
    /* now show the comments */
    displayComments($id);
}

function displayComments($id) {
    /* bring db connection variable into scope */
    global $db;
    
    /* query for comments */
    $query = "SELECT * FROM news_comments WHERE news_id=$id";
    $result = mysql_query ($query);
    echo "Comments:<BR><HR width=\"300\">\n";
    
    /* display the all the comments */
    while ($row = mysql_fetch_assoc ($result)) {
        echo "<TABLE border=\"1\" width=\"300\">\n";
        
        $name = htmlentities ($row['name']);
        echo "<TR><TD><b>by: $name</b></TD></TR>\n";
    
        $comment = strip_tags ($row['comment'], '<a><b><i><u>');
        $comment = nl2br ($comment);
        echo "<TR><TD>$comment</TD></TR>\n";
    
        echo "</TABLE>\n";
        echo "<BR>\n";
    }
    
    /* add a form where users can enter new comments */
    echo "<HR width=\"300\">";
    echo "<FORM action=\"{$_SERVER['PHP_SELF']}" .
         "?action=addcomment&id=$id\" method=POST>\n";
    echo "Name: <input type=\"text\" " .
         "width=\"30\" name=\"name\"><BR>\n";
    echo "<TEXTAREA cols=\"40\" rows=\"5\" " .
         "name=\"comment\"></TEXTAREA><BR>\n";
    echo "<input type=\"submit\" name=\"submit\" " .
         "value=\"Add Comment\"\n";
    echo "</FORM>\n";
     
}

function addComment($id) {
    global $db;
    
    /* insert the comment */
    $query = "INSERT INTO news_comments " .
             "VALUES('',$id,'{$_POST['name']}'," .
             "'{$_POST['comment']}')";
    mysql_query($query);
    
    echo "Comment entered. Thanks!<BR>\n";
    echo "<a href=\"{$_SERVER['PHP_SELF']}" .
         "?action=show&id=$id\">Back</a>\n";
}

/* this is where the script decides what do do */

echo "<CENTER>\n";
switch($_GET['action']) {
    
    case 'show':
        displayOneItem($_GET['id']);
        break;
    case 'all':
        displayNews(1);
        break;
    case 'addcomment':
        addComment($_GET['id']);
        break;
    default:
        displayNews();
}
echo "</CENTER>\n";
?>

http://codewalkers.com/tutorials/19/7.html

Komt hiervan met dit : http://freak.frozenone.net/test/ Als resultaat ...


Als beginnende PHP'er vind ik die fouten natuurlijk niet ...


Heb dit:

CREATE TABLE news (
id int(10) unsigned NOT NULL auto_increment,
postdate timestamp(14),
title varchar(50) NOT NULL,
newstext text NOT NULL,
PRIMARY KEY (id),
KEY postdate (postdate)
);


CREATE TABLE news_comments (
id int(10) unsigned NOT NULL auto_increment,
news_id int(10) unsigned DEFAULT '0' NOT NULL,
name varchar(40) NOT NULL,
comment text NOT NULL,
PRIMARY KEY (id),
KEY news_id (news_id)
);

In een .sql bestand gestopt en via phpmyadmin geupload ...

Never the less ... Heb mij hier al gek op gezocht ...

Dank bij voorbaat

[T-RAW]Freak

Legacy Member
Heb ik gedaan, maar hier wel niet opgezet .. Ben niet super dom :D

Maar toch voor de zekerheid:
$db = mysql_connect ('localhost','root','pass');
mysql_select_db ('test',$db);

Dat moet dit worden, niet ? :

$db = mysql_connect ('domeinnaam[bvb: www.google.net].net,'root','pass');
mysql_select_db ('test',$db);

Als ik het zo verkeerd heb gedaan ben ik al een stapje verder :)

BloodSeaker

Legacy Member
[T-RAW]Freak zei:
Heb ik gedaan, maar hier wel niet opgezet .. Ben niet super dom :D

Maar toch voor de zekerheid:
$db = mysql_connect ('localhost','root','pass');
mysql_select_db ('test',$db);

Dat moet dit worden, niet ? :

$db = mysql_connect ('domeinnaam[bvb: www.google.net].net,'root','pass');
mysql_select_db ('test',$db);

Als ik het zo verkeerd heb gedaan ben ik al een stapje verder :)

Neen, dikke kans blijft die localhost behouden.

[T-RAW]Freak

Legacy Member
Nu, misschien een hele domme vraag ... Maar ik moet zelf nog een entry systeem ineenflansen zeker?
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan