Avatar billede venchil Nybegynder
31. marts 2005 - 19:38 Der er 36 kommentarer og
1 løsning

Nyhedssystem-problem

Jeg er ved at lave et nyhedssystem, og meget ad vejen har jeg fulgt en eller udmærket artikel, men alligevel er jeg løbet ind i nogle problemer.

------------------------------
CONTENT_NYHEDER_VISNYHEDER.PHP:
<?php
$conn = mysql_connect("localhost", "brugernavn", "password");

mysql_select_db("database");

$getnews = mysql_query("select id, emne, forfatter, tid, nyhed from nyheder order by tid desc");
if(mysql_num_rows($getnews) > 0)
{
    while($hent = mysql_fetch_array($getnews))
    {
        $nyhedsid = $hent[id];
        $emne = $hent[emne];
        $forfatter = $hent[forfatter];
        $tid = $hent[tid];
        $nyhed = $hent[nyhed];

            $getcommentcount = mysql_query("select COUNT(id) from kommentarer where nyhedsid='".$nyhedsid."'");
            $antalkommentarer = mysql_result($getcommentcount,0,0);
       
        echo "<b>".$emne."</b> - skrevet af ".$forfatter." d. ".$dato;
        echo " (<a href="#" onclick="window.open('content_nyheder_kommentarer.php?id=".$nyhedsid."','flyout',
        'toolbar=no,location=no,directories=no,status=no,menubar=no,resizable=no,
scrollbars=yes,width=400,height=600,top=25,left=25')">
        ".$antalkommentarer." kommentarer</a>)";
        echo "<br />".$nyhed;
    }
}
else
{
    echo "Endnu ingen nyheder tilføjet.";
}
mysql_close($conn);
?>




CONTENT_NYHEDER_KOMMENTARER.PHP:
<?php

$conn = mysql_connect("localhost", "brugernavn", "password");
mysql_select_db("database");

if($_POST[id])
{
    $nyhedsid = $_POST[id];
}
else
{
    $nyhedsid = $_GET[id];
}

if(!$nyhedsid)
{
    echo "Intet nyheds-id angivet.";
}
else
{
    if($_POST[add_comment])
    {
        $navn = $_POST[navn];
        $tid = date("d-m-Y G:i");
        $hjemmeside = $_POST[hjemmeside];
        $kommentar = $_POST[kommentar];
        $addcomment = mysql_query("insert into kommentarer (nyhedsid, navn, hjemmeside, kommentar, tid)
VALUES ('".$nyhedsid."','".$navn."','".$hjemmeside."','".$kommentar."','".$tid."';
        if($addcomment)
        {
            echo "Tak for kommentaren.<br /><br />";
        }
        else
        {
            echo "Der opstod en fejl: ".mysql_error();
        }
    }
    $getcomments = mysql_query("select id, navn, hjemmeside, tid,
kommentar from kommentarer where nyhedsid='".$nyhedsid."'");
    if(mysql_num_rows($getcomments) > 0)
    {
        while($hent = mysql_fetch_array($getcomments))
        {
            $kommentar = $hent[kommentar];
            $dato = $hent[tid];
            $navn = $hent[navn];       
            $hjemmeside = $hent[hjemmeside];
           
            echo "<a href="".$hjemmeside."">".$navn."</a> - ".$tid."<br />";
            echo $kommentar."<br /><br />";
        }
    }   
    else
    {
        echo "Ingen kommentarer tilføjet til denne nyhed endnu.";
    }
?>
<p>
<form action="<?=$_SERVER[PHP_SELF];?>" method="post">
<input type="hidden" name="id" value="<?=$nyhedsid;?>">
Dit navn:<br>
<input type="text" name="navn" class="input"><br><br>
Din e-mail adresse:<br>
<input type="text" name="mail" class="input"><br><br>
Kommentar:<br>
<textarea cols="0" rows="5" name="kommentar" class="input"></textarea><br><br>
<div align="center"><input type="submit" name="add_comment" value=" - Send - " class="button">
</form>

<?
}
mysql_close($conn);
?>
------------------------------

Desuden vil jeg også gerne have inkluderet et billede til hver eneste nyhed.
------------------------------
<table><tr valign="top">
<td>$nyhed</td>
<td><img scr="$billedeurl" alt="$nyhedstitel"></td>
</tr></table>
------------------------------

Jeg får følgende errors, når jeg tester skidtet i browseren:
http://www.darkcloud.dk/animepark/madskjaer/forside.php?id=content_nyheder_visnyheder.php
http://www.darkcloud.dk/animepark/madskjaer/content_nyheder_kommentarer.php
Avatar billede jaw Nybegynder
31. marts 2005 - 19:46 #1
Dit første problem med visnyheder kan løses ved at backslashe nogen af dine " - altså:

echo " (<a href=\"#\" onclick=\"window.open('content_nyheder_kommentarer.php?id=".$nyhedsid."','flyout',
        'toolbar=no,location=no,directories=no,status=no,menubar=no,resizable=no,
scrollbars=yes,width=400,height=600,top=25,left=25')\">
        ".$antalkommentarer." kommentarer</a>)";
Avatar billede jaw Nybegynder
31. marts 2005 - 19:50 #2
Fejl nr. 2 kan så rettes ved at ændre til:

$addcomment = mysql_query("insert into kommentarer (nyhedsid, navn, hjemmeside, kommentar, tid)
VALUES ('".$nyhedsid."','".$navn."','".$hjemmeside."','".$kommentar."','".$tid."')");

hvorefter der opstår en på linie 49, som kan rettes ved at ændre linie 49 til:

echo "<a href=\"".$hjemmeside."\">".$navn."</a> - ".$tid."<br />";
Avatar billede jaw Nybegynder
31. marts 2005 - 19:52 #3
Husk altid at kigge efter antallet af paranteser, "'er og husk at hvis du bruger " til at åbne/lukke dine echo'er, så skal de backslashes i html-koden eller ændres til ' i html-koden.

Altså, du har tre muligheder:
echo"<a href=\"side.php\">side</a>";
eller
echo"<a href='side.php'>side</a>";
eller
echo'<a href="side.php">side</a>';

Alle 3 muligheder er lige gode. Om du bruger " eller ' eller \" er fuldstæning lige lovlige...
Avatar billede venchil Nybegynder
01. april 2005 - 16:49 #4
Det ser ud til at virke. Men kommentar-siden har stadig en error på linje 31.
Avatar billede jaw Nybegynder
01. april 2005 - 17:17 #5
Paste lige hvordan din kommentar-side ser ud nu...
Avatar billede venchil Nybegynder
01. april 2005 - 17:30 #6
<?

$conn = mysql_connect("localhost", "brugernavn", "password");

mysql_select_db("database");

if($_POST[id])
{
    $nyhedsid = $_POST[id];
}
else
{
    $nyhedsid = $_GET[id];
}

if(!$nyhedsid)
{
    echo "Intet nyheds-id angivet.";
}
else
{
    if($_POST[add_comment])
    {
        $navn = $_POST[navn];
        $tid = date("d-m-Y G:i");
        $hjemmeside = $_POST[hjemmeside];
        $kommentar = $_POST[kommentar];
        $addcomment = mysql_query("insert into kommentarer (nyhedsid, navn, hjemmeside, kommentar, tid)
VALUES ('".$nyhedsid."','".$navn."','".$hjemmeside."','".$kommentar."','".$tid."';
        if($addcomment)
        {
            echo "Tak for kommentaren.<br /><br />";
        }
        else
        {
            echo "Der opstod en fejl: ".mysql_error();
        }
    }
    $getcomments = mysql_query("select id, navn, hjemmeside, tid,
kommentar from kommentarer where nyhedsid='".$nyhedsid."'");
    if(mysql_num_rows($getcomments) > 0)
    {
        while($hent = mysql_fetch_array($getcomments))
        {
            $kommentar = $hent[kommentar];
            $dato = $hent[tid];
            $navn = $hent[navn];       
            $hjemmeside = $hent[hjemmeside];
           
            echo "<a href=\"".$hjemmeside."\">".$navn."</a> - ".$tid."<br />";
            echo $kommentar."<br /><br />";
        }
    }   
    else
    {
        echo "Ingen kommentarer tilføjet til denne nyhed endnu.";
    }
?>
<p>
<form action="<?=$_SERVER[PHP_SELF];?>" method="post">
<input type="hidden" name="id" value="<?=$nyhedsid;?>">
Navn:<br>
<input type="text" name="navn" class="input"><br><br>
Hjemmeside:<br>
<input type="text" name="hjemmeside" class="input"><br><br>
Kommentar:<br>
<textarea cols="0" rows="5" name="kommentar" class="input"></textarea><br><br>
<div align="center"><input type="submit" name="add_comment" value=" - Send - " class="button">
</form>

<?
}
mysql_close($conn);
?>
Avatar billede jaw Nybegynder
01. april 2005 - 17:32 #7
Nah, den rettede jeg da vist i går 19.50.42?

$addcomment = mysql_query("insert into kommentarer (nyhedsid, navn, hjemmeside, kommentar, tid)
VALUES ('".$nyhedsid."','".$navn."','".$hjemmeside."','".$kommentar."','".$tid."')");
Avatar billede venchil Nybegynder
01. april 2005 - 17:40 #8
Nu virker det sgu! Men hvordan får jeg billeder ind?

<table><tr valign="top">
<td>$nyhed</td>
<td><img scr="$billedeurl" alt="$nyhedstitel"></td>
</tr></table>

Hvis jeg putter feltet billedurl ind i min tabel med nyheder?
Avatar billede jaw Nybegynder
01. april 2005 - 17:41 #9
Tjah, altså så skal du jo bare have $billedeurl = $hent['billedurl'] også som du har med de andre variabler fra din database - men det skulle ikke være noget problem...
Avatar billede venchil Nybegynder
01. april 2005 - 17:48 #10
Hvordan sætter jeg mine nyheder op i tabeller? Kan ikke finde ud af det midt inde i et echo
Avatar billede jaw Nybegynder
01. april 2005 - 17:50 #11
Det er jo det samme som uden et echo?! Så forstår nok ikke helt hvor du vil hen :/ ?
Avatar billede venchil Nybegynder
01. april 2005 - 17:55 #12
Har prøvet, og der kommer en error når jeg uploader dette dokument:

<?php
$conn = mysql_connect("localhost", "brugernavn", "password");

mysql_select_db("database");

$getnews = mysql_query("select id, emne, forfatter, tid, nyhed from nyheder order by tid desc");
if(mysql_num_rows($getnews) > 0)
{
    while($hent = mysql_fetch_array($getnews))
    {
        $nyhedsid = $hent[id];
        $emne = $hent[emne];
        $forfatter = $hent[forfatter];
        $tid = $hent[tid];
        $nyhed = $hent[nyhed];
        $billedeurl = $hent[billedeurl];

            $getcommentcount = mysql_query("select COUNT(id) from kommentarer where nyhedsid='".$nyhedsid."'");
            $antalkommentarer = mysql_result($getcommentcount,0,0);
       
echo "(<table><tr valign="top"><td>
(<a href=\"#\" onclick=\"window.open('content_nyheder_kommentarer.php?id=".$nyhedsid."','flyout',
        'toolbar=no,location=no,directories=no,status=no,menubar=no,resizable=no,
scrollbars=yes,width=400,height=600,top=25,left=25')\"></td>
    <td><img src="$hent[billedeurl]" alt="$hent[emne]"></td>
    </tr></table>
        ".$antalkommentarer." kommentarer</a>)";
    }
}
else
{
    echo "Endnu ingen nyheder tilføjet.";
}
mysql_close($conn);
?>
Avatar billede jaw Nybegynder
01. april 2005 - 17:58 #13
Ja, lad mig prøve og forklare:

Du åbner dine echo'es med " <- echo"noget";
Når du åbner med ", kan du ikke bruge " i din HTML-kode. Altså echo"<a href="noget.php">noget</a>"; vil ikke virke, da PHP tror du afslutter din echo ved hvert ".
Du har derfor 3 muligheder:
1. Brug: echo"<a href='noget.php'>noget</a>";
2. Brug: echo"<a href=\"noget.php\">noget</a>";
3. Brug: echo'<a href="noget.php">noget</a>';
Avatar billede venchil Nybegynder
01. april 2005 - 19:46 #14
Nu virker det heldigvis. Men der er dog et sidste problem. Der kommer ( og ) imellem starten af emnet til slutningen af "kommentarer", desuden viser den ikke $tid. Og vist heller ikke besked. :S
Avatar billede venchil Nybegynder
01. april 2005 - 20:13 #16
Mit dokument ser sådan ud:


<?php
$conn = mysql_connect("localhost", "brugernavn", "password");

mysql_select_db("database");

$getnews = mysql_query("select id, emne, forfatter, tid, nyhed from nyheder order by tid desc");
if(mysql_num_rows($getnews) > 0)
{
    while($hent = mysql_fetch_array($getnews))
    {
        $nyhedsid = $hent[id];
        $emne = $hent[emne];
        $forfatter = $hent[forfatter];
        $tid = $hent[tid];
        $nyhed = $hent[nyhed];
        $billedeurl = $hent[billedeurl];

            $getcommentcount = mysql_query("select COUNT(id) from kommentarer where nyhedsid='".$nyhedsid."'");
            $antalkommentarer = mysql_result($getcommentcount,0,0);
       
echo "<table><tr valign='top'><td>
(<a href=\"#\" onclick=\"window.open('content_nyheder_kommentarer.php?id=".$nyhedsid."','flyout',
        'toolbar=no,location=no,directories=no,status=no,menubar=no,resizable=no,
scrollbars=yes,width=400,height=600,top=25,left=25')\"></td>
    <td><img src='$hent[billedeurl]' alt='$hent[emne]'></td>
    </tr></table>
        ".$antalkommentarer." kommentarer</a>)";
    }
}
else
{
    echo "Endnu ingen nyheder tilføjet.";
}
mysql_close($conn);
?>
Avatar billede jaw Nybegynder
01. april 2005 - 20:16 #17
Ok, kigger på den lige om lidt...
Avatar billede jaw Nybegynder
01. april 2005 - 20:33 #18
Jeg ved ikke om det er den her fejl du hentyder til, men i hvert fald skal du fjerne i ' i nedenstående linie, så den kommer til at se således ud:

... height=600,top=25,left=25)">
Avatar billede jaw Nybegynder
01. april 2005 - 20:38 #19
Og så kan du forresten ikke køre <a> tagget på tværs af kolonner og rækker + at jeg får en fejl på "flyout", men det kan så blot være et lokalt problem at den ikke er defineret.
Avatar billede venchil Nybegynder
01. april 2005 - 20:44 #20
På tværs af rækker? Desuden ændrer den anden kode ikke ved noget.
Avatar billede jaw Nybegynder
01. april 2005 - 20:49 #21
Så er jeg ikke sikker på jeg forstår. Men du har også en ' foran toolbar=no der skal væk først tror jeg.

Men hvor er det de ( ) er? De eneste 2 ()'er jeg kan se er dem der går fra lige efter "nyheder" og til lige efter "kommentarer" - og dem har du begge to selv placeret. Du kan bare fjerne dem fra din kode, så forsvinder de selvfølgelig...
Avatar billede venchil Nybegynder
01. april 2005 - 20:54 #22
Linket på komentarer virker stadig ikke :(. Jeg er nybegynder til PHP, men dette forstår  jeg simepelthen ikke. Der er ikke engang vist nyheden..
Avatar billede jaw Nybegynder
01. april 2005 - 21:04 #23
Nej, det er der nemlig ikke, det er derfor jeg slet ikke forstår hvad det er du vil. Det er noget mærkeligt noget du har fået lavet. Hvad er det du vil have udskrevet? Du har lavet et link med et billede, når du holder musen over billedet skal den skrive hvad emnet hedder?

Prøv at ændre hele:
echo "<table><tr valign='top'><td>
(<a href=\"#\" onclick=\"window.open('content_nyheder_kommentarer.php?id=".$nyhedsid."','flyout',
        'toolbar=no,location=no,directories=no,status=no,menubar=no,resizable=no,
scrollbars=yes,width=400,height=600,top=25,left=25')\"></td>
    <td><img src='$hent[billedeurl]' alt='$hent[emne]'></td>
    </tr></table>
        ".$antalkommentarer." kommentarer</a>)";
    }

til bare:
echo $hent['emne'] . " " . $antalkommentarer . " kommentarer";
}
Avatar billede venchil Nybegynder
01. april 2005 - 21:08 #24
Vil gerne have et simpelt newssystem. Emne - Tid, og i linjen nedenunder skal der være selve nyheden. Under nyheden skal der være et link til en kommentar-side. og helt ude til højre skal der være et billede. Alt skal justeres efter to tabeller.
Avatar billede venchil Nybegynder
01. april 2005 - 21:09 #25
Prøver lige at ændre til dit kodeeksempel
Avatar billede venchil Nybegynder
03. april 2005 - 10:50 #26
Hmmmm... Jeg har omlagt det hele lidt. Nu har jeg kun brug for at vide, hvordan jeg får URL'en på den nuværende side ind i et array

$url GET_url

Eller noget :P
Avatar billede jaw Nybegynder
03. april 2005 - 15:17 #27
Ja, det må vist være "eller noget" :) Prøv lige igen at forklare hvad det er du vil, og hvad det er du vil opnå. Virkede mit tidligere eksempel som du gerne ville have det til, eller?
Avatar billede venchil Nybegynder
03. april 2005 - 15:26 #28
Jeg har lavet et helt nyt script, det virker faktisk tilfredsstillende :). Jeg er nået til kommentar-delen, og min kode ser sådan ud:

<?php
$conn = mysql_connect("localhost", "brugernavn", "password");

mysql_select_db("database");

$url = "";
$id = explode("=", $url);

$getcomments = mysql_query("select id, nyhedsid, forfatter, tid, kommentar from kommentarer where nyhedsid=$id[1] order by id desc");

    while($hent = mysql_fetch_array($getcomments))
    {
        $kommentarid = $hent[id];
        $forfatter = $hent[forfatter];
        $tid = $hent[tid];
        $kommentar = $hent[nyhed];

echo "<b>$forfatter</b>, $tid";
echo "$kommentar<br /><br>";
}
mysql_close($conn);

include("content_forside_kommentarer_skriv.html");
?>

URL´en til det dokument skulle gerne være:
http://www.darkcloud.dk/animepark/madskjaer/content_forside_nyheder_kommentarer.php?id=1
Jeg vil gerne have overført nyheds-idet fra URLen. Derfor skal variablen $url indeholde en funktion, som tjekker URL´en i toppen, og putter den ind i variablen.
Avatar billede jaw Nybegynder
03. april 2005 - 21:06 #29
Jeg kan godt se at det er blevet noget bedre. Dog virker dit sidste link ikke, og det med id'et du vil have overført igennem en funktion forstår jeg desværre ikke...
Avatar billede venchil Nybegynder
04. april 2005 - 15:49 #30
Hvordan skal jeg så få Id'et fra nyhedssiden?
Avatar billede jaw Nybegynder
04. april 2005 - 16:55 #31
<a href='nyhed_coment.php?id=".$row['Id']."'>".$row['emne']."</a>"; f.eks.
Avatar billede venchil Nybegynder
05. april 2005 - 17:50 #32
Hmmm.... lad mig spørge på en anden måde. Hvordan henter jeg det fra kommentar-siden?
Avatar billede jaw Nybegynder
05. april 2005 - 22:57 #33
Jeg ved ikke hvad du vil. Normalt så har man jo et id på den nyhed man viser. Man laver så et link der indeholder det id, som skrevet ovenfor. På den næste sider henter man så med:

SELECT forfatter, emne FROM tabel WHERE id = ".$_GET['id']."
Avatar billede venchil Nybegynder
06. april 2005 - 14:25 #34
Det skal jeg prøve, tror gerne du må lægge et svar :)
Avatar billede venchil Nybegynder
06. april 2005 - 15:44 #35
Så virker det. Improviserede selv, da jeg ikke lige kunne gennemskue dit...

http://www.darkcloud.dk/animepark/madskjaer/forside.php?id=content_forside.php
Avatar billede jaw Nybegynder
06. april 2005 - 22:31 #36
Nåå, det var det du ville. Det var så sådan ca. det modsatte af hvad jeg prøvede at forklare :) Men anyway, så går jeg ud fra vi er færdige nu?
Avatar billede venchil Nybegynder
07. april 2005 - 18:33 #37
YESSIR!
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