Simpelt nyheds system - speciel-skrevet til begyndere
ForordEn artikel der gennemgår de mest basale ting i et nyhedssystem. Hej og "velkommen" til min lille artikel om at programmere et meget simpelt nyheds system. Du har sikkert allerede opdaget, at der måske er en artikel, med netop dette emne? Men vi alle laver jo på hver sin måde. Så hvorfor ikke bare begynde?
Vi starter med at sætte vores tabel op! Det gør vi sådan her:
CREATE TABLE `news` (
`id` int(11) NOT NULL auto_increment,
`name` varchar(30) NOT NULL default "",
`author` varchar(30) NOT NULL default "",
`date` varchar(30) NOT NULL default "",
`text` text NOT NULL,
PRIMARY KEY (`id`)
) AUTO_INCREMENT=1 ;
En meget simpel tabel som du burde kunne forstå! Hvis ikke - skal du ikke læse videre, men derimod starte på et lidt "lettere begyndere" niveo.
Lad os gå videre til vores "config.php".
<?php
mysql_connect("localhost", "BRUGERNAVN", "KODEORD") or die(mysql_error()); // Udfylde inputsne med egen data
mysql_select_db("DATABASE") or die(mysql_error()); // Og det samme gør du her
?>
Den er måske lidt tricky at huske? Men du skal heller ikke bruge den så meget mere end det. Nu skal vi igang med det sjove! Nemlig "vis.nyheder.php".
<?php
// Vi inkluderer vores config fil, som holder forbindelsen til vores database
include ("config.php");
// Hent al data fra tabellen "news" sortér af ID nyest
$loadNews = mysql_query("SELECT * FROM news ORDER BY id DESC") or die(mysql_error());
// Men vi skal da lige tjekke, om der overhovedet er oprettet nogle nyheder i vores databse! Det gør vi med mysql_num_rows();
// Vi tæller simpelthen hvor mange data der er indsat, hvis der er 0 data udskriver vi en meddelse
if(mysql_num_rows($loadNews) == 0) {
echo "Der er ikke blevet tilføjet nogle nyheder.";
// Hvis der er mere end 0 nyheder oprettet et databasen udskriver vi dem alle
} else {
// Ved hjælp af en while() også kaldt "løkke", udskriver vi nyhederne
while($showNews = mysql_fetch_array($loadNews)) {
$nName = stripslashes($showNews["name"]); // Vi opretter en variable for overskriften. stripslashes(); fjerner "/" fra selve overskriften hvis dette skulle være tilfældet
$nAuthor = stripslashes($showNews["author"]); // Vi opretter endnu en variable for forfatteren, og bruger stripslashes();
$nText = nl2br(stripslashes($showNews["text"])); // En til variable! Denne gang for selve nyheden. nl2br(); er en funktion der bruges som linjeskift ved ENTER, istedet for man skal bruge <br /> for hver linjeskift, ret smart ikk"?
$nDate = $showNews["date"]; // Og til sidst en variable for datoen!
echo "<b>".$nName."</b><br />"; // Udskriv overskriften med "fed"
echo "<i>Skrevet af ".$nAuthor.", d. ".$nDate."</i><br />"; // Udskriv forfatter og date med "kursiv"
echo "".$nText.""; // Udskriv selve nyheden
echo "<br /><br />"; // Laver plads til næste nyhed
} // Lukker vores while()
} // Lukker vores if();
// Et link som fører til tilfoj.nyhed.php, hvor der kan oprettes nyheder
echo "<a href=\"tilfoj.nyhed.php\" title=\"Tilføj nyhed\">Tilføj nyhed</a>";
?>
Puha! En ordentlig omgang, men som du ser har jeg kommenteret hver eneste linje - netop for at hjælpe dig! Vi skal have fat i endnu en krabat, og som sikkert volder problemer for mindre øvede programmører. Ja, lad os gå igang med "tilfoj.nyhed.php".
<?php
// Vi inkluderer vores config fil, som holder forbindelsen til vores database
include ("config.php");
// Vi laver en variable ud af vores "action". Det gør det hele meget lettere
$action = $_GET["action"];
// Hvis "action" er lig med "submitNews", gør vi klar til at indsætte selve nyheden
if($action == "submitNews") {
$cName = htmlspecialchars(addslashes($_POST["newsName"])); // Vi opretter en variable for overskriften. htmlspecialchars(); gør så der ikke kan bruges HTML i overskrift. addslashes(); sætter / ved " og ", hvis det er tilfældet
$cAuthor = htmlspecialchars(addslashes($_POST["newsAuthor"])); // Vi gør de samme ved forfatter, ligesom vi gjorde ved overskriften
$cText = htmlspecialchars(addslashes($_POST["newsText"])); // Og endnu en gang ved selve nyheden
$cDate = date("d-m/Y"); // Skaffer den nuværende dato og laver en variable af den
// Her bruger vi empty() til at tjekke om et felt er tomt. Læg mærke til at jeg har sat "!" foran. Så nu er det omvendt! Den spørger: "Hvis overskrift, forfatter og text er udfyldt, så indsætter vi i databasen"
if(!empty($cName) && !empty($cAuthor) && !empty($cText)) {
// Simpel mysql_query(); hvor vi indsætter nyheden i databasen
mysql_query("INSERT INTO news (name, author, date, text)VALUES("".$cName."", "".$cAuthor."", "".$cDate."", "".$cText."")") or die(mysql_error());
// Jubii! Det lykkedes os at oprette en nyhed. Vi udskriver en besked
echo "<span style="color: green; font-weight: bold;">Nyheden "".$cName."" er blevet tilføjet!</span>";
// Hvis overskrift, forfatter og selve nyheden var tomme udskriver vi en meddelse
} else {
echo "Du skal udfylde alle felter!";
} // Lukker vores if();
// Hvis "action" ikke var lig med "submitNews" udskriver vi html-formularen til at oprettelsen af en nyhed
} else {
// Simpel html-formular som jeg ikke vil bruge tid på at forklare
echo "<form action="?action=submitNews" method="POST">";
echo "<b>Overskrift:</b><br />";
echo "<input type="text" name="newsName"><br />";
echo "<b>Forfatter:</b><br />";
echo "<input type="text" name="newsAuthor"><br />";
echo "<b>Overskrift:</b><br />";
echo "<textarea name="newsText" style="width: 400px; height: 120px;"></textarea><br />";
echo "<input type="submit" value="OK">";
echo "</form>";
} // Lukker vores if();
?>
Det var det!
Jeg har ikke skrevet så meget tekst, uden for selve scriptet, men til gengæld kommenteret en stor del. Håber det har hjulpet dig på vej - en dag kan det være, dig der sidder og hjælper andre nye programmører godt igang.
Tak fordi du læste med!
Edit: Opdaterede en fejl med "==". :) Sidst redigeret 13:35 29/06/2007 af Rowl |
Oprettet af:
Ukendt bruger
PHP
Point modtaget: 0
Rate:
18:37 20/01/2007
|
Kommentarer
Giv din mening tilkende om denne artikel, eller læs andres.
Har du spørgsmål eller brug for hjælp til denne artikel henvises du til forummet.
Jeg er Newbie til PHP, men her er et spørgsmål (måske "lidt" dumt)
I denne her kode , hvad er en database :), hvad er en db database :|
- Patrick |
10:54 13/03/2007
|
Det er det, der er problemet. Artiklen er altså ikke specielt godt forklaret. For det første er der mere kode end forklaring, for det andet er dine kommentarer ikke så rammende. mysql_num_rows tæller ikke antal data men antal rækker, som navnet lyder.
"// Vi opretter en variable for overskriften. stripslashes(); fjerner "/" fra selve overskriften hvis dette skulle være tilfældet"
Hvorfor skal / fjernes? Og faktisk er det jo den fjerner, ikke /.
Jeg kunne blive ved. Du får et 2-tal. |
14:41 16/03/2007
|
|
Du kunne ikke blive ved, og det er menneskeligt at fejle. |
15:26 24/03/2007
|
Martin > Du kan tro jeg kunne blive ved, og med Rowls muligheder er det også menneskeligt at rette sine fejl. Det kræver du klikker på en knap og redigerer i din tekst.
For det andet kan det da ikke være rigtigt, at jeg ikke kan komme med kritik uden du brokker dig? Sidst redigeret 13:34 - 17/04/2007 |
13:56 16/04/2007
|
Jeg gider ikke rette? =)
For det andet brokker jeg mig ikke, men siger derimod, at du ikke kan blive ved - 10.000 år efter ... hm, nej så kan du vidst ikke mere.
Edit: Faktisk ... kan jeg ikke rette den? Da min bruger som jeg skrev artiklen på, ikke eksisterer mere. =) Sidst redigeret 09:29 - 21/04/2007 |
09:27 21/04/2007
|
Underligt, får en fejl:
- Linje 39-40:
mysql_query("INSERT INTO news (name, author, date, text)VALUES("".$cName."", "".$cAuthor."", "".$cDate."", "".$cText."")") or die(mysql_error());
|
02:11 27/01/2008
|
Der er denne fejl
Parse error: syntax error, unexpected '"' in C:\Programmer\xampp\htdocs\gnoz.dk\nyheder\tilfoj.nyhed.php on line 39
Men kan ikk finde ud af hvad der skal rettes :S
<?php
// Vi inkluderer vores config fil, som holder forbindelsen til vores database
include ("config.php");
// Vi laver en variable ud af vores "action". Det gør det hele meget lettere
$action = $_GET["action"];
// Hvis "action" er lig med "submitNews", gør vi klar til at indsætte selve nyheden
if($action == "submitNews") {
$cName = htmlspecialchars(addslashes($_POST["newsName"])); // Vi opretter en variable for overskriften. htmlspecialchars(); gør så der ikke kan bruges HTML i overskrift. addslashes(); sætter / ved " og ", hvis det er tilfældet
$cAuthor = htmlspecialchars(addslashes($_POST["newsAuthor"])); // Vi gør de samme ved forfatter, ligesom vi gjorde ved overskriften
$cText = htmlspecialchars(addslashes($_POST["newsText"])); // Og endnu en gang ved selve nyheden
$cDate = date("d-m/Y"); // Skaffer den nuværende dato og laver en variable af den
// Her bruger vi empty() til at tjekke om et felt er tomt. Læg mærke til at jeg har sat "!" foran. Så nu er det omvendt! Den spørger: "Hvis overskrift, forfatter og text er udfyldt, så indsætter vi i databasen"
if(!empty($cName) && !empty($cAuthor) && !empty($cText)) {
// Simpel mysql_query(); hvor vi indsætter nyheden i databasen
mysql_query("INSERT INTO news (name, author, date, text)VALUES("".$cName."", "".$cAuthor."", "".$cDate."", "".$cText."")") or die(mysql_error());
// Jubii! Det lykkedes os at oprette en nyhed. Vi udskriver en besked
echo "<span style="color: green; font-weight: bold;">Nyheden "".$cName."" er blevet tilføjet!</span>";
// Hvis overskrift, forfatter og selve nyheden var tomme udskriver vi en meddelse
} else {
echo "Du skal udfylde alle felter!";
} // Lukker vores if();
// Hvis "action" ikke var lig med "submitNews" udskriver vi html-formularen til at oprettelsen af en nyhed
} else {
// Simpel html-formular som jeg ikke vil bruge tid på at forklare
echo "<form action="?action=submitNews" method="POST">";
echo "<b>Overskrift:</b><br />";
echo "<input type="text" name="newsName"><br />";
echo "<b>Forfatter:</b><br />";
echo "<input type="text" name="newsAuthor"><br />";
echo "<b>Overskrift:</b><br />";
echo "<textarea name="newsText" style="width: 400px; height: 120px;"></textarea><br />";
echo "<input type="submit" value="OK">";
echo "</form>";
} // Lukker vores if();
?>
Sidst redigeret 09:20 08/04/2008 |
09:19 08/04/2008
|
Jeg har et problem!
I den første tekst.
CREATE TABLE `news` (
`id` int(11) NOT NULL auto_increment,
`name` varchar(30) NOT NULL default "",
`author` varchar(30) NOT NULL default "",
`date` varchar(30) NOT NULL default "",
`text` text NOT NULL,
PRIMARY KEY (`id`)
) AUTO_INCREMENT=1 ;
Hvor skal den være? Han forklar ikke helt hvor den skal sætted hen eller hvad jeg skal gøre ved den.. Kan i hjælpe mig? Sidst redigeret 16:20 05/10/2008 |
16:18 05/10/2008
|
|
Det er seriøst irriterne nu har ejg endelig læst den færdig også virker den ikke engang |
16:07 04/03/2011
|
Du skal være oprettet og logget ind for at kommentere en artikel
|