Avatar billede sebastianrped Nybegynder
09. juni 2006 - 11:01 Der er 20 kommentarer

nyhedssystem med kategorier!

Hej folkens

Jeg er en nybegynder i PHP, og har kastet mig ud i at programmere et nyhedssystem.

Ind til videre har jeg programmeret sådan at man kan skrive en nyhed, sende nyheden ind til min database og til sidst hente nyheden fra min database og vise den på min hjemmeside.

Men men men! Jeg vil gerne kunne indele mine nyheder i kategorier. Altså når jeg skriver en nyhed skal jeg have mulighed for at vælge hvilken kategori nyheden handler om. Og når jeg så viser mine nyheder kan jeg vælge kun at vise nyheder fra EN kategori.

Mit problem er så at jeg ikke er sikker på hvordan det skal programmeres. Mit gæt er at jeg skal lave en ny tabel i min database, som skal indholde mine nyheds kategorier.

For lige at gøre det nemmere for jer poster jeg lige koden til mit nyheds system:

SKRIV NYHED
-------------------------------------------------------------
        <form action="news.php?act=add" method="post">
            <table>
                <tr>
                  <td><strong>Forfatter:</strong></td>
                  <td><input type="text" name="forfatter" size="53"></td>
                </tr>
                <tr>
                  <td><strong>Date:</strong></td>
                  <td><input type="text" name="date" size="53"></td>
                </tr>
                <tr>
                  <td><strong>Billed:</strong></td>
                  <td><input type="text" name="image" size="53"></td>
                </tr>
                <tr>
                    <td><b>Overskrift:</b></td>
                    <td><input type="text" name="overskrift" size="53"></td>
                </tr>
                <tr>
                    <td valign="top"><b>Indledning:</b></td>
                    <td><textarea name="indledning" rows="3" cols="40"></textarea></td>
                </tr>
                <tr>
                    <td valign="top"><b>Nyhed:</b></td>
                    <td><textarea name="nyhed" rows="13" cols="40"></textarea></td>
                </tr>
                <tr>
                    <td></td>
                    <td><input type="submit" name="submit" value="Tilføj Nyhed" />                  </td>
                </tr>
            </table>       
        </form>
-------------------------------------------------------------


GEM NYHED
-------------------------------------------------------------
<?php
$conn = mysql_connect("localhost", "...", "...");
mysql_select_db("...");



if(isset($_POST['submit']) && $_REQUEST["act"] == 'add'){
            $author = addslashes($_POST['forfatter']);
            $date = addslashes($_POST['date']);
            $image = addslashes($_POST['image']);
            $overskrift = addslashes($_POST['overskrift']);
            $synopsis = addslashes($_POST['indledning']);
            $nyhed = addslashes($_POST['nyhed']);
                       

                $insert = mysql_query("INSERT INTO nyhed (forfatter, date, image, overskrift, indledning, nyhed) VALUES ('$author', '$date', '$image', '$overskrift', '$synopsis', '$nyhed')")  or die(mysql_error());
                $message = '<b>Din nyhed er blevet tilføjet til databasen!</b>';
            }
       
        echo $message;
        ?>
-------------------------------------------------------------


VIS NYHED:
-------------------------------------------------------------
<?php

$conn = mysql_connect("localhost", "...", "...");
mysql_select_db("...") or die(mysql_error());

if(is_numeric($_GET['id']) && $_GET['id'] > 0)
{
    $id = mysql_real_escape_string($_GET['id']);
    $resultat = mysql_query("Select * from nyhed where id = $id limit 1");
    if(mysql_num_rows($resultat) == 1)
    {
        $raekke = mysql_fetch_array($resultat);

echo '<table width="469">';
echo  '<tr>';
echo    '<td colspan="2"><p style="font-family:arial; font-size:20px; color:#990000">'.$raekke['overskrift'].'</td>';
echo  '</tr>';
echo  '<tr>';
echo    '<td colspan="2"><p style="font-family:arial; font-size:11px; color:#999999">'.$raekke['forfatter'].' - '.$raekke['date'].'</td>';
echo  '</tr>';
echo  '<tr>';
echo    '<td width="302" rowspan="3" valign="top"><p style="font-family:arial; font-size:12px;"><strong>'.$raekke['indledning'].'</strong><br><br>'.$raekke['nyhed'].'</p></td>';
echo    '<td width="155" valign="top"><div align="center"><img src=\''.$raekke['image'].'\' border="1"></div></td>';
echo  '</tr>';
echo '</table>';
    }
}
else
{
    $resultat = mysql_query("Select * from nyhed order by id DESC limit 1");
    if(mysql_num_rows($resultat) > 0)
    {
        echo '<table width="224">';
        while ($raekke = mysql_fetch_array($resultat))
        {
            echo '<tr>';
            echo '<td width="224"><center><img src=\''.$raekke['image'].'\' border="1"></center><tr>';
            echo '<td width="224"><a href="nyheder.php?id='.$raekke['id'].'"><strong><p style="font-family:arial; font-size:15px; color:#990000">'.$raekke['overskrift'].'</p></strong></a><tr>';
            echo '<td width="224"><p style="font-family:arial; font-size:12px;">'.$raekke['indledning'].'</p></td>';
            echo '<table><td width="131"><div align="left"><p style="font-family:arial; font-size:11px; color:#999999">'.$raekke['date'].'</p></div><td>';
            echo '<td width="80"><a href="nyheder.php?id='.$raekke['id'].'"><div align="right"><img src="/image/mere.png" border="0"></div</a></td>';
            echo '</tr>';
        }
        echo '</table></table>';
    }
}

?>
-------------------------------------------------------------


Ja mit spørgsmål er altså hvordan jeg kan gøre så jeg kan indele mine nyheder i kategorier.
Avatar billede iss Novice
09. juni 2006 - 11:12 #1
Vil du have faste grupper?

Og smid lige et dump fra SQL med strukturen.
Avatar billede sebastianrped Nybegynder
09. juni 2006 - 11:18 #2
Er ikke lige sikker på hvad du mener med faste grupper. Men det skal være sådan at jeg kan tilføje kategorier (via min phpmyadmin).


CREATE TABLE nyhed (
  id int(11) NOT NULL auto_increment,
  overskrift varchar(100) NOT NULL default '',
  indledning text NOT NULL,
  nyhed text NOT NULL,
  date datetime NOT NULL default '0000-00-00 00:00:00',
  forfatter varchar(60) NOT NULL default '',
  image varchar(100) NOT NULL default '',
  PRIMARY KEY  (id)
) TYPE=MyISAM;
Avatar billede iss Novice
09. juni 2006 - 11:25 #3
Så du får en dropdown boks med faste valg...
Avatar billede sebastianrped Nybegynder
09. juni 2006 - 11:28 #4
Ja det var i den retning jeg tænkte på
Avatar billede iss Novice
09. juni 2006 - 11:30 #5
Så kom lige med nogle,,,
Avatar billede elskermad.dk Nybegynder
09. juni 2006 - 11:32 #6
Eftersom du siger du er nybegynder vil jeg lige give dig et tip :)

Du skriver teksten ud til browseren via echo. I stedet for at lukke strengen efter hver linie kan du godt køre den videre således at det kommer til at se sådan her ud:

echo'
Hej med dig, nu bryder jeg lige linien så jeg
slipper for at skulle slutte echo
hver gang jeg skriver en linie
';

Det gør det noget nemmere at opdatere tekster og du slipper for en del skriven i din kode :)
Avatar billede sebastianrped Nybegynder
09. juni 2006 - 11:33 #7
FC København
Brøndby
AaB

(Vil så have samtlige SAS ligahold)
Avatar billede sebastianrped Nybegynder
09. juni 2006 - 11:34 #8
Tak for tippet elskermad.dk :)
Avatar billede iss Novice
09. juni 2006 - 11:37 #9
Jeg kan ikke skrive FuCK desvære...

En endnu bedre løsning på alle de der echo... lad være med at blande PHP og HTML sammen...

Nogen grund til der kun skal vises en nyhed hvis ingen id er sat???
Avatar billede sebastianrped Nybegynder
09. juni 2006 - 11:39 #10
Ah det er fordi at det eksempel jeg har postet her, er fra et sted på siden hvor der kun skal vises en nyhed, altså en slags "top nyhed, med billed".
Avatar billede iss Novice
09. juni 2006 - 11:51 #11
<form action="news.php?act=add" method="post">
<table>
<tr>
    <td><strong>Emne</strong></td>
    <td><select name="emne">
            <option value="Brøndby" SELECTED>BIF RULEZ</option>
            <option value="Andre">Andre</option>
    </td></select>
</tr>
<tr>
    <td><strong>Forfatter:</strong></td>
    <td><input type="text" name="forfatter" size="53"></td>
</tr>
<tr>
    <td><strong>Date:</strong></td>
    <td><input type="text" name="date" size="53"></td>
</tr>
<tr>
    <td><strong>Billed:</strong></td>
    <td><input type="text" name="image" size="53"></td>
</tr>
<tr>
    <td><b>Overskrift:</b></td>
    <td><input type="text" name="overskrift" size="53"></td>
</tr>
<tr>
    <td valign="top"><b>Indledning:</b></td>
    <td><textarea name="indledning" rows="3" cols="40"></textarea></td>
</tr>
<tr>
    <td valign="top"><b>Nyhed:</b></td>
    <td><textarea name="nyhed" rows="13" cols="40"></textarea></td>
</tr>
<tr>
    <td></td>
    <td><input type="submit" name="submit" value="Tilføj Nyhed" /></td>
</tr>
</table>     
</form>

-----------------

<?php
$conn = mysql_connect("localhost", "...", "...");
mysql_select_db("...");
if(isset($_POST['submit']) && $_REQUEST["act"] == 'add'){
    $author = addslashes($_POST['forfatter']);
    $date = addslashes($_POST['date']);
    $image = addslashes($_POST['image']);
    $overskrift = addslashes($_POST['overskrift']);
    $synopsis = addslashes($_POST['indledning']);
    $nyhed = addslashes($_POST['nyhed']);
    $emne = addslashes($_POST['emne']);
    $insert = mysql_query("INSERT INTO nyhed (forfatter, date, image, overskrift, indledning, nyhed, emne) VALUES ('$author', '$date', '$image', '$overskrift', '$synopsis', '$nyhed', '$emne')")  or die(mysql_error());?>
<b>Din nyhed er blevet tilføjet til databasen!</b><?
}
?>

-------------------------

<?php

$conn = mysql_connect("localhost", "...", "...");
mysql_select_db("...") or die(mysql_error());
if (is_numeric($_GET['id']) && $_GET['id'] > 0) {
    $id = mysql_real_escape_string($_GET['id']);
    $resultat = mysql_query("SELECT * FROM nyhed WHERE id = $id");
    if (mysql_num_rows($resultat) == 1) {
        $raekke = mysql_fetch_array($resultat);?>
<table width="469">
<tr>
    <td colspan="2"><p style="font-family:arial; font-size:20px; color:#990000"><?=$raekke['overskrift']?></td>
</tr>
<tr>
    <td colspan="2"><p style="font-family:arial; font-size:11px; color:#999999"><?=$raekke['forfatter']?> - <?=$raekke['date']?></td>
</tr>
<tr>
    <td width="302" rowspan="3" valign="top"><p style="font-family:arial; font-size:12px;"><strong><?=$raekke['indledning']?></strong><br><br><?$raekke['nyhed']?></p></td>
    <td width="155" valign="top"><div align="center"><img src=\''.$raekke['image'].'\' border="1"></div></td>
</tr>
</table>
<?    }
}
elseif ($_POST['emne']) {
    $resultat = mysql_query("SELECT * FROM nyhed WHERE emne = '".$_POST['emne']."' ORDER BY id DESC");
    if (mysql_num_rows($resultat) > 0) {?>
<table width="224">
<?        while ($raekke = mysql_fetch_array($resultat)) {?>
<tr>
    <td width="224"><center><img src="<?=$raekke['image']?>" border="1"></center><tr>
    <td width="224"><a href="nyheder.php?id=<?=$raekke['id']?>"><strong><p style="font-family:arial; font-size:15px; color:#990000"><?=$raekke['overskrift']?></p></strong></a><tr>
    <td width="224"><p style="font-family:arial; font-size:12px;"><?=$raekke['indledning']?></p></td>
</tr>
</table>
<table>
    <td width="131"><div align="left"><p style="font-family:arial; font-size:11px; color:#999999"><?=$raekke['date']?></p></div><td>
    <td width="80"><a href="nyheder.php?id=<?=$raekke['id']?>"><div align="right"><img src="/image/mere.png" border="0"></div</a></td>
</tr>
<?        }?>
</table>
<?    }
}
else {
    $resultat = mysql_query("SELECT * FROM nyhed ORDER BY id DESC");
    $resemner = mysql_query("SELECT DISTINCT(emne) FROM nyhed");
    if (mysql_num_rows($resultat) > 0) {?>
<table width="224">
<tr>
    <td colspan="3"><form action="<?=$PHP_SELF?>" method="post"><select name="emne"><?while ($emne = mysql_fetch_array($resemner)) {?><option value="<?$emne['emne']?>"><?$emne['emne']?></option><?}?></select></form></td>
</tr>
<?        while ($raekke = mysql_fetch_array($resultat)) {?>
<tr>
    <td width="224"><center><img src="<?=$raekke['image']?>" border="1"></center><tr>
    <td width="224"><a href="nyheder.php?id=<?=$raekke['id']?>"><strong><p style="font-family:arial; font-size:15px; color:#990000"><?=$raekke['overskrift']?></p></strong></a><tr>
    <td width="224"><p style="font-family:arial; font-size:12px;"><?=$raekke['indledning']?></p></td>
</tr>
</table>
<table>
    <td width="131"><div align="left"><p style="font-family:arial; font-size:11px; color:#999999"><?=$raekke['date']?></p></div><td>
    <td width="80"><a href="nyheder.php?id=<?=$raekke['id']?>"><div align="right"><img src="/image/mere.png" border="0"></div</a></td>
</tr>
<?        }?>
</table>
<?    }
}

?>


-------------------------------

CREATE TABLE `nyhed` (
  `id` int(11) NOT NULL,
  `overskrift` varchar(100) NOT NULL default '',
  `indledning` text NOT NULL,
  `nyhed` text NOT NULL,
  `date` datetime NOT NULL default '0000-00-00 00:00:00',
  `forfatter` varchar(60) NOT NULL default '',
  `image` varchar(100) NOT NULL default '',
  `emne` varchar(30) NOT NULL,
  PRIMARY KEY  (`id`)
) TYPE=MyISAM AUTO_INCREMENT=1 ;
Avatar billede sebastianrped Nybegynder
09. juni 2006 - 12:06 #12
Hvis vi nu siger jeg KUN vil vise nyheder med emnet "Brøndby"

Hvad skal jeg så skrive i: $resultat = mysql_query("SELECT * FROM nyhed WHERE emne = '".$_POST['emne']."' ORDER BY id DESC");
Avatar billede iss Novice
09. juni 2006 - 12:09 #13
Erstatte ".$_POST['emne']." med det du sætter i databasen for BIF

<option value="Brøndby" SELECTED>BIF RULEZ</option> <- det er det der står i value.
Avatar billede sebastianrped Nybegynder
09. juni 2006 - 12:18 #14
Stiller lige et dumt spørgsmål :)

Nu skrev jeg så:

$resultat = mysql_query("SELECT * FROM nyhed WHERE emne = '".Brøndby."' ORDER BY id DESC");

Men det virkede ikke
Avatar billede iss Novice
09. juni 2006 - 12:23 #15
Nej, det gør det ikke, gør som jeg skrev...
Avatar billede sebastianrped Nybegynder
09. juni 2006 - 12:34 #16
Nu har jeg prøvet at skrive alt muligt men skriver ikke det rigtige.

anyways smid et svar :)
Avatar billede iss Novice
09. juni 2006 - 12:38 #17
$resultat = mysql_query("SELECT * FROM nyhed WHERE emne = 'Brøndby' ORDER BY id DESC"); skulle du prøve med... Virker det ikke, så skal du nok kigge på noget med tegnsæt i din SQL (kræver dog nyere database.)

Og behold du bare dine point selv.
Avatar billede sebastianrped Nybegynder
09. juni 2006 - 12:41 #18
Mange tak for hjælpen :)

forsat go' dag!
Avatar billede iss Novice
09. juni 2006 - 12:42 #19
ilm
Avatar billede hent-det Nybegynder
12. juni 2006 - 13:17 #20
Lukker
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