Avatar billede kappel Nybegynder
10. januar 2004 - 21:30 Der er 22 kommentarer og
2 løsninger

Kommentar system til nyhedssystem

Hej

Jeg har et nyhedssystem her: http://super6.kappels.net/index.php

Jeg vil gerne gøre det muligt for mine holdkammerater at kommenterer de enkelte indlæg. Nyhederme ligger i table 'news':
TABLE news (
  id int(11) NOT NULL auto_increment,
  dato tinytext NOT NULL,
  overskrift text NOT NULL,
  text text NOT NULL,
  status int(1) NOT NULL default '1',
  PRIMARY KEY  (id)
) TYPE=MyISAM;

og jeg har lavet en table 'comment':
CREATE TABLE `comment` (
  `id` int(11) NOT NULL auto_increment,
  `newsid` int(11) NOT NULL default '0',
  `text` text NOT NULL,
  `name` varchar(100) NOT NULL default '',
  `mail` varchar(150) NOT NULL default '',
  PRIMARY KEY  (`id`)
) TYPE=MyISAM AUTO_INCREMENT=1 ;

Jeg forestiller mig, at der ved hver nyhed skal være et ikon som sender én til en side hvor brugeren kan tilføje sin kommentar.
Mit spørgsmål er så hvordan knytter jeg det op på databasen og den rigtige nyhed?
Kommentarerne til de enkelte nyheder skal listes under hver nyhed.

/kappel
Avatar billede kappel Nybegynder
10. januar 2004 - 21:33 #1
news.php ser således ud:

<?php
    include('include.php');
    include('tagster_lib.php');
    mysql_select_db($database, $db);

    echo "<hr>";
   
    $res = mysql_query("select overskrift, dato, text from news where status = '1' order by id desc limit ".$numofposts);
        setlocale (LC_TIME, 'danish');
    while($data = mysql_fetch_array($res)){
            echo "</br><b>".stripslashes(trim(nl2br($data['overskrift'])))."</b>
            - ".strftime('%A den %d. %B' ,$data['dato'])."<br>"
        .tagster_format(stripslashes(trim($data['text'])))."<hr>";
        }
       
    mysql_close();
?>

/kappel
Avatar billede ahv Nybegynder
10. januar 2004 - 21:34 #2
Det ser ud til du har fint forstabd på PHP, så istedet for vi poster en løsning så kan du tjekke her ->
http://www.ahv.starthotel.dk/news.zip

Det er et nyhedssytem jeg har kodet med kommentar system.
Avatar billede ahv Nybegynder
10. januar 2004 - 21:57 #3
Volder det stadig problmer så må du skrive dem her.
Avatar billede kappel Nybegynder
10. januar 2004 - 21:57 #4
Det har jeg faktisk siddet og kigget på både idag og igår. Det er virkelig fedt det du har lavet.
Jeg har ikke brug for 'læs mere...' delen - jeg vil gerne have hele nyheden vist på en gang.

Derfor har jeg været ved at kigge på om jeg kunne placere kommentar-delen du har i show.php nederst i index.php og så skulle man vælge hvilken nyhed man ville skrive kommentaren til, evt. med en dropdown, men det opgav jeg, da jeg ikke er så god til mysql.

du kan forresten se dit system køre her: http://eif.kappels.net/

/kappel
Avatar billede ahv Nybegynder
10. januar 2004 - 21:59 #5
Jeg kan godt prøve at rette det til for dig, du vil have kommentarene vist efter hver nyhed?
Avatar billede ahv Nybegynder
10. januar 2004 - 22:06 #6
Du kan prøve det her (index.php), hvis det kommer med fejl må du lige sige til:


<html>
<head>
<title>index</title>
</head>
<body>

<?php
include("config.php");
if($_POST['send'] && $_POST['name'] != "navn" && isset($_POST['name'])){
    $_POST['text'] = ereg_replace("<([^>]+)>", "", $_POST['text']);
    mysql_query("INSERT INTO comment (newsid, text, name, mail) values ('$_POST[newsid]', '$_POST[text]', '$_POST[name]', '$_POST[mail]')");
    header("Location: index.php");
}

$query = mysql_query("SELECT id, file, title, text FROM news ORDER BY id DESC");
while ($row = mysql_fetch_array($query)) {
    echo "<p><b>$row[title]</b><br>";
    echo "<img border='0' src='$row[file]' style='float: left;' width='75' height='75'>";
    echo "<font size='1' face='Tahoma'>";
    echo "$row[text]";
    echo "</font></p>";
    echo "<br><br>";
    $querys = mysql_query("SELECT name, text, mail FROM comment WHERE newsid='$row[id]' ORDER BY id DESC");
    while ($rows = mysql_fetch_array($querys)) {
        echo "<hr size='1' color='#000000' noshade>";
        echo "<p><b>".nl2br($rows['text'])."</b><b><br>";
        echo "</b>af <a href='mailto:$row[mail]'>$rows[name]</a><br><br>";
    }
}
echo "<br><br>Kommenter en nyhed:<br>";
?>
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
Kommenter nyhed:
<select name="to" class="text">
<?php
$listnews = mysql_query("SELECT id, title FROM news ORDER BY id DESC");
while($rownews = mysql_fetch_array($listnews)) {
?>
<option value="<?php echo $rownews["id"]; ?>" ><?php echo $rownews["title"]; ?></option>
<?php
}
?>
</select><br>
<p align="center"><input type="text" name="name" size="20" value="navn"><br>
<input type="text" name="mail" size="20" value="e-mail"></p>
<p align="center"><textarea rows="2" name="text" cols="20">kommentar</textarea></p>
<p align="center"><input type="submit" value="Send" name="send"></p>
<input type="hidden" name="newsid" value="<?php echo $row['id']; ?>">
</form>

<?php
echo "<p align='center'><a href='admin_login.php'>Admin</a></p>";
?>

</body>
</html>
Avatar billede kappel Nybegynder
10. januar 2004 - 23:33 #7
Tak har lige prøvet det.
den melder fejl:

Unknown column 'file' in 'field list'

Jeg kan se det er file. Hvis man vedhæfter et billede, hvordan skal man så kunne se det på nettet egentlig.

/kappel
Avatar billede kappel Nybegynder
10. januar 2004 - 23:36 #8
drop fejlen det virker nu: http://eif.kappels.net/

Så det er kun
Hvis man vedhæfter et billede, hvordan skal man så kunne se det på nettet egentlig?
Avatar billede kappel Nybegynder
10. januar 2004 - 23:46 #9
Når jeg prøver at skrive en kommentar melder den headers sent: http://eif.kappels.net/index.php

Warning: Cannot add header information - headers already sent by (output started at /customers/kappels.net/kappels.net/httpd.www/eif/index.php:14) in /customers/kappels.net/kappels.net/httpd.www/eif/news/index.php on line 12

skal jeg prøve med: // i starten
<?php
ob_start();
?>

//til slut
<?php
ob_end_flush();
?>

??
Avatar billede ahv Nybegynder
11. januar 2004 - 00:27 #10
Nej bare flyt dette op i toppen:

if($_POST['send'] && $_POST['name'] != "navn" && isset($_POST['name'])){
    $_POST['text'] = ereg_replace("<([^>]+)>", "", $_POST['text']);
    mysql_query("INSERT INTO comment (newsid, text, name, mail) values ('$_POST[newsid]', '$_POST[text]', '$_POST[name]', '$_POST[mail]')");
    header("Location: index.php");
}

HELT op i toppen :)
Avatar billede kappel Nybegynder
11. januar 2004 - 01:17 #11
Hvordan kommer index.php til at se ud så?

Har prøvet det men der kommer fejl når man kommenterer en nyhed:
Warning: Cannot add header information - headers already sent by (output started at /customers/kappels.net/kappels.net/httpd.www/eif/index.php:14) in /customers/kappels.net/kappels.net/httpd.www/eif/news/index.php on line 11
Avatar billede schaefner Juniormester
11. januar 2004 - 01:20 #12
Avatar billede ahv Nybegynder
11. januar 2004 - 01:22 #13
<?php
include("config.php");
if($_POST['send'] && $_POST['name'] != "navn" && isset($_POST['name'])){
    $_POST['text'] = ereg_replace("<([^>]+)>", "", $_POST['text']);
    mysql_query("INSERT INTO comment (newsid, text, name, mail) values ('$_POST[newsid]', '$_POST[text]', '$_POST[name]', '$_POST[mail]')");
    header("Location: index.php");
}
?>

<html>
<head>
<title>index</title>
</head>
<body>

<?php
$query = mysql_query("SELECT id, file, title, text FROM news ORDER BY id DESC");
while ($row = mysql_fetch_array($query)) {
    echo "<p><b>$row[title]</b><br>";
    echo "<img border='0' src='$row[file]' style='float: left;' width='75' height='75'>";
    echo "<font size='1' face='Tahoma'>";
    echo "$row[text]";
    echo "</font></p>";
    echo "<br><br>";
    $querys = mysql_query("SELECT name, text, mail FROM comment WHERE newsid='$row[id]' ORDER BY id DESC");
    while ($rows = mysql_fetch_array($querys)) {
        echo "<hr size='1' color='#000000' noshade>";
        echo "<p><b>".nl2br($rows['text'])."</b><b><br>";
        echo "</b>af <a href='mailto:$row[mail]'>$rows[name]</a><br><br>";
    }
}
echo "<br><br>Kommenter en nyhed:<br>";
?>
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
Kommenter nyhed:
<select name="to" class="text">
<?php
$listnews = mysql_query("SELECT id, title FROM news ORDER BY id DESC");
while($rownews = mysql_fetch_array($listnews)) {
?>
<option value="<?php echo $rownews["id"]; ?>" ><?php echo $rownews["title"]; ?></option>
<?php
}
?>
</select><br>
<p align="center"><input type="text" name="name" size="20" value="navn"><br>
<input type="text" name="mail" size="20" value="e-mail"></p>
<p align="center"><textarea rows="2" name="text" cols="20">kommentar</textarea></p>
<p align="center"><input type="submit" value="Send" name="send"></p>
<input type="hidden" name="newsid" value="<?php echo $row['id']; ?>">
</form>

<?php
echo "<p align='center'><a href='admin_login.php'>Admin</a></p>";
?>

</body>
</html>
Avatar billede kappel Nybegynder
11. januar 2004 - 02:36 #14
Den siger stadig:
Warning: Cannot add header information - headers already sent by (output started at /customers/kappels.net/kappels.net/httpd.www/eif/index.php:14) in /customers/kappels.net/kappels.net/httpd.www/eif/news/index.php on line 6
linie 6:
    header("Location: index.php");

Godnat
/kappel
Avatar billede ahv Nybegynder
11. januar 2004 - 11:35 #15
hvad indeholder config.php?
Avatar billede kappel Nybegynder
11. januar 2004 - 11:43 #16
oplysningerne til min database
Avatar billede ahv Nybegynder
11. januar 2004 - 13:18 #17
ikke nogen echo's eller HTML?
Avatar billede ahv Nybegynder
11. januar 2004 - 13:18 #18
men ellers så vil det jo så virke hvis du indsætter:

<?php
ob_start();
?>

//til slut
<?php
ob_end_flush();
?>
Avatar billede kappel Nybegynder
11. januar 2004 - 15:24 #19
nej ingen af delene.
Prøver lige med det viste.
Avatar billede ahv Nybegynder
11. januar 2004 - 16:28 #20
virker det med ob_start(); ? jeg kan ikke lige få øje på hvor der er noget output
Avatar billede kappel Nybegynder
11. januar 2004 - 17:36 #21
-> schaefner
Jeg kiggede lidt på det system du viste, det er det der umiddelbart kører på: http://eif.kappels.net (faktisk et overlegen sæt af php sider du har lavet :-)
Men jeg vil gerne gøre sådan at "hele nyheden og kommentarerne" bliver inkluderet i mit layout og det har ikke haft held med endnu. Det drejer sig vel om laes.php, har du en ide om hvordan man kan gøre det?

/kappel
Avatar billede ahv Nybegynder
11. januar 2004 - 18:54 #22
kappel -> Har du prøvet at tilføje ob_start(); og ob_end_flush(); ? Hvis det da virker så må vi se hvor outputtet er henne så vi kan få det til at fungere ordenligt.
Avatar billede kappel Nybegynder
14. januar 2004 - 15:51 #23
Det virker ikke og jeg har ikke tiden til det.
Avatar billede kappel Nybegynder
14. januar 2004 - 15:53 #24
håber du er tilfreds med lidt point, du har trods alt brugt tiden... :-)

/kappel
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
Vi tilbyder markedets bedste kurser inden for webudvikling

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