Åbn artikel i ny fane
Gå til kommentarer

Hvor svært ka' det være? [Del 2]

For længe siden skrev jeg artiklen "Hvor svært ka' det være?" som omhandlede at lave sin egen avis og hvor svært det egentlig er at lave en avis. Det er nemlig ikke bare lige at knipse med fingrene og få en avis til at fungere.
Artiklen kan læses her.

I denne artikel vil jeg vise hvordan man kan kode et simpelt artikelsystem til sin avis.

Del 2
Der forventes i denne artikel at du har lidt kendskab til HTML.
Mange aviser bruger PHP (Hypertext PreProcessor) til deres systemer så de kan skrive artikler og nyheder online og ikke behøver at skrive dem og derefter uploade dem.
Med disse systemer bliver det nemmere og sjovere at drive en avis så i denne artikel vil jeg vise jer hvordan i kan lave jeres eget artikel system.
Det skal lige siges at dette system ikke er 100% sikkert!

PHP's historie
Inden man kaster sig ud i at lave koderne er det en god idé at vide hvordan PHP egentlig blev "født".
Det var en dansker ved navn Rasmus Lerdorf der i starten af 90'erne havde nogle problemer da han skulle arbejde sammen med nogle grafikere med programmering og grafik og han manglede en programmerings form som kunne gøre nogle ting der ikke var muligt dengang.
Noget så simpelt som at byde en gæst velkommen når han havde skrevet hans navn, fyldte 35 linjers kode hvor det i dag kan gøres på én linje.
Rasmus Lerdorf - Klik for at se større
Rasmus Lerdorf - Klik for at se større
Rasmus Lerdorf måtte altså lave sit eget kodesprog og da han satte sig ned og begyndte, havde han ingen idé om, at det skulle blive et nyt og kendt kodesprog.

Da folk fik øjnene op for det nye kodesprog begyndte de at spørge ham "Kan du ikke gøre så det kan gøre sådan og sådan?" og det kunne Rasmus godt.

Kodesproget kaldte han "PHP/FI" (Personal Home Page and Forms Interpreter)

To israelere fra "Technion - Israel Institute of Technology" skulle lave deres universitetsprojekt og foreslog deres lærer at bruge PHP. Selvom deres lærer aldrig havde hørt om PHP, fik de til sidst læreren overtalt til det.
Zeev Suraski - Klik for at se større
Zeev Suraski - Klik for at se større
Andi Gutmans - Klik for at se større
Andi Gutmans - Klik for at se større

Da de to israelere var begyndt på projektet stødte de på nogle fejl og skrev på www.php.net som Rasmus Lerdorf ejede og havde ladet den være "Open Source" så alle kunne se kildekoderne og være med i udviklingen af det nye programmeringssprog. Rasmus Lerdorf svarede at det ikke var deres koder der var noget galt med men at der var fejl i PHP. De to israelere faldte over flere fejl og snakkede mere med Rasmus Lerdorf og til sidst lavede de PHP3 og PHP kom til at stå for "Personal Home Page" og i dag står det for "Hypertext PreProcessor".

Programmeringen
Nu skal vi til den sjove del af dette nemlig at programmere et artikel system!
Vores artikel system består af 13 filer.
  • index.php
  • (Her ses artiklerne)
  • vis.php
  • (Her læses hele artiklen)
  • tilfoj.php
  • (Her tilføjes artikler)
  • tilfoj_ok.php
  • (Her gemmes artiklen i databasen)
  • slet.php
  • (Her slettes artkler)
  • slet_ok.php
  • (Her slettes artiklen fra databasen)
  • artikler.php
  • (Her er en oversigt over hvilke artikler der kan rettes)
  • ret.php
  • (Her rettes artikler)
  • ret_ok.php
  • (Her rettes artiklen i databasen)
  • login.php
  • (Her logges ind til admindelen)
  • tjeklogin.php
  • (Her tjekkes login)
  • admin.php
  • (Her vises link til login.php)
  • config.php
  • (Her skabes forbindelsen til databasen)

    Husk: Jeg forventer at du har kendskab til HTML.

    Det bør du vide...
    I PHP starter og slutter man en kode med og ?>.
    Når man har fuldendt en kode i php slutter man af med ;
    Man kan udskrive noget med enten echo eller print de to koder gør nøjagtig det samme og når det skal gøres skriver man echo "Teksten";

    Vi starter med index.php:
    Først bruger vi include ("config.php"); til at "flette" config.php ind i filen da vi skal have skabt forbindelse til databasen og oplysningerne som skaber fobindelse til databasen ligger i config.php.
    Vi vælger med SELECT hvad vi vil hente ud fra databasen.
    Vores SELECT kode ser sådan ud:
    mysql_query("SELECT * FROM artikler ORDER BY id DESC") or die(mysql_error());

    Først vælger den hvad den vil udhente fra databasen med * vælger den alt i artikler man kunne også skrive SELECT id FROM... og derefter med FROM vælger vi hvilken database det skal hentes ud fra og i dette tilfælde er det artikler til sidst vælger vi hvordan det skal sorteres når det vises på siden. Den vælger det skal sorteres efter id og til sidst står der DESC som betyder at det id der er højeste der vises først. Havde man nu skrevet ASC havde den sorteret det sådan at det mindste kommer øverst.
    Der står or die(mysql_error()); efter vores kode. Det behøves ikke, men det kan være en fordel da den derved ikke bare skriver noget man ikke forstår hvis der er fejl, men i stedet skriver en sætning vi kan forstå.

    Vi laver en variabel $connect en variabel er når der står $ foran og den variabel tildeler vi værdien mysql_query("SELECT * FROM artikler ORDER BY id DESC") or die(mysql_error()); som jo er der hvor vi vælger hvad der skal hentes ud.

    Vi laver et while som ser sådan ud:
    while($vis = mysql_Fetch_array($connect)) {
    Inde i det while skriver vi $vis = mysql_Fetch_array($connect) som vi senere kan bruge når vi skal udskrive data i databasen, så kan vi skrive $vis[det-der-skal-udskrives].

    Nu laver vi tabellerne det skal stå i og i de tabeller skriver vi så hvad der skal udskrives.
    Vi bruger en echo kode og skriver så $vis[det-der-skal-udskrives] så det kan komme til at se sådan ud:

    Læg mærke til, at vi midt i filen åbner og lukker PHP koden nogle gange, da PHP kan have lidt problemer med HTML midt i det hele.

    I en af koderne skriver vi ikke bare $vis[det-der-skal-udskrives] men skriver i stedet:

    Hvor der står substr inden $vis[artikel] og til sidst skriver vi ,0,90 det betyder hvor mange tegn der skal vises inden man går videre og læser hele artiklen. Hvis du ikke synes der skal vises så mange tegn eller måske flere inden man læser artiklen, ændrer du bare 90 til et andet tal.
    Hvor vi udskriver overskriften laver vi et link som ser sådan ud:

    Hvor den linker til vis.php?id=(Id'et på artikel) som vi senere bruger i vis.php til at forklare koden hvilken artikel den skal hente dataen fra.
    Hvis i ligger mærke til while koden så åbnes den med en { hvilket også betyder at den skal lukkes det gør med en }
    Til sidst laver vi en include ligesom da vi gjorde det ved config.php denne gang er det bare admin.php som indeholder et link til administrations siden.

    Se hele koden her.
    index.php - Klik for at se større

    vis.php
    Denne fil er meget ligesom index.php og derfor ikke så meget at fortælle bortset fra at vi ikke hente én speciel data fra databasen men vi i stedet henter data, hvor et id er specielt.

    Vores SELECT kode ser denne gang sådan ud:
    mysql_query("SELECT * FROM artikler WHERE id = '$_GET[id]'") or die(mysql_error());
    Her bruger den WHERE som oversat betyder "HVOR" altså.. "HENT * FRA artikler HVOR id =.."
    $_GET[id] betyder at når der i browser linjen f.eks. står:
    www.snuzzer.dk/nsextra/vis.php?id=14 så siger den id er 14 og det skriver den så i SLECT linjen så der kommer til at stå:
    SELECT * FROM artikler WHERE id = '14'
    Altså udskriver den kun det hvor id er 14.

    Se hele koden her.
    vis.php - Klik for at se større

    tilfoj.php
    Dette er en helt almidelig HTML formel hvor man indtaster noget data og går til næste side.
    Se hele koden her.
    tilfoj.php - Klik for at se større

    tilfoj_ok.php
    Nu skal vi til at tilføje den data der blev skrevet i tilfoj.php til databasen.
    Vi bruger en INSERT (INDSÆT) kommando som tilføjer til databsen.
    Vores INSERT kommando ser sådan ud:
    mysql_query("INSERT INTO artikler (overskrift, artikel, forfatter, dato) VALUES ('$overskrift', '$artikel', '$forfatter', '$dato')") OR DIE (mysql_error());
    Først vælger vi hvilken database det skal tilføjes i her har vi skrevet artikler og derefter i ( ) forklarer vi i hvilke felter det skal tilføjes til. Efter VALUES vælger vi hvad der skal tilføjes
    VIGTIGT: hvis der står overskrift efter "artikler" skal $overskrift også stå som nr. 1 efter VALUES hvis der i stedet står $artikel vil det du skrev i artikel feltet i tilfoj.php blev tilføjet til feltet overskrift databsen!
    $overskrift, $artikel, $forfatter hænger sammen med tilfoj.php hvor vi kaldte vores felter "overskrift, artikel, forfatter" så det vi skrev i overskrift bliver $overskrift i tilfoj_ok.php.
    $dato havde vi ikke noget felt til i tilfoj.php da det er nemmere for os at det automatisk bliver sat til en bestemt værdi i tilfoj_ok.php hvor vi har skrevet:
    $dato = date('d/m/Y H:i:s');
    d/m/Y er datoen.
    H:i:s er klokken.
    Disse to ting kan skrives på forskellige måder hvis man bytte rundt på de store bogstaver men det vil jeg ikke lige komme nærmere ind på i denne artikel (i kan i stedet søge på nettet).

    Vi laver en variabel $artikel som vi giver værdien nl2br($_POST[artikel]); hvilket betyder at feltet artikel i tilfoj.php nu er lavet så man kan lave linjeskift i stedet for altid at skulle skrive
    for hvis ikke man laver dette og lader være at skrive
    vil den når man laver linjeskift ikke registrere det og i stedet bare skrive det i "en lang smøre".

    Se hele koden her.
    tilfoj_ok.php - Klik for at se større

    slet.php
    Det er i denne fil der udskrives en liste over artiklerne og en slet knap.
    Her er der ikke så meget nyt.
    Den skriver overskriften som er et link som fører til selve artiklen og en slet knap som fører til slet_ok.php hvor artiklen blvier slettet fra databsen.
    slet.php - Klik for at se større

    slet_ok.php
    Her bruger vi en DELETE kommando som sletter noget fra databasen med et bestemt id.
    Koden vi bruger her minder ret meget om koden i vis.php her er det bare DELETE vi bruger i stedet men det fungerer på nøjagtig samme måde.
    slet_ok.php - Klik for at se større

    artikler.php
    Denne fil minder lidt om slet.php her er slet knappen bare udskiftet med en ret knap.
    artikler.php - Klik for at se større

    ret.php
    Denne fil minder ret meget om tilfoj.php, bortset fra at vi her henter data med et specielt id ud fra databasen og putter det ind i felterne.
    Faktisk kan man sige det er en blanding af tilfoj.php og vis.php.
    I formlen går vi ikke bare til en fil på almindeligt vis vi bruger en lille PHP kode til det hvor vi skriver:

    Så den går til:
    ret_ok.php?id=(Et id)
    Dette bruger vi i ret_ok.php så den ved hvor i databasen det er den skal rette.
    ret.php - Klik for at se større

    ret_ok.php
    Vi bruger her en UPDATE sætning som f.eks. ser sådan ud:
    mysql_query("UPDATE artikler set artikel = '$artikel' where id = '$_GET[id]'");
    Kig lidt på den og det er meget simpelt.
    OPDATER artikler SÆT artikel = '$artikel' HVOR id = '$_GET[id]'
    Så forstår i nok bedre meningen med den.
    Først vælger den hvilken database der skal opdateres i.
    Så siger den hvilket felt der skal opdateres og hvad der skal opdateres med.
    Så for at være præcis siger den "HVOR id =.."
    ret_ok.php - Klik for at se større

    login.php
    Dette er bare en helt almindelig HTML formel.
    login.php - Klik for at se større

    tjeklogin.php
    Her bruger vi en if/else (hvis/ellers) sætning.
    En if/else sætning bruger man når man vil gøre noget hvis noget har en bestemt værdi og noget andet hvis ikke det har.
    Lad os kaste os ud i det.
    if ($b == "admin" && $k == "test")
    {
    echo "
    LINKS";
    } else {
    echo "Forkert login!";
    }
    ?>
    I kan se hvis nu $b har værdien admin og $k samtidig har værdien test så skal den udskrive admin delen og hvis ikke den har det udskrive den "Forkert login!".
    I skal her huske at ændre admin til det jeres brugernavn skal være og test til det jees kodeord skal være!r
    tjeklogin.php - Klik for at se større

    admin.php
    Dette er en fil vi ligger ind i index.php og vis.php.
    Filen indeholder kun et link som fører til login.php.
    admin.php - Klik for at se større

    config.php
    Denne fil er enormt vigtig for hele systemet da det er her vi skaber forbindelse til vores database.
    Det eneste i må og skal rette i denne fil er sådan at jeres oplysninger passer.
    Altså:
    HOST = URL'en til dit PHPMYADMIN
    BRUGERNAVN = Det brugernavn du bruger til at logge ind i PHPMYADMIN
    KODEORD = Det kodeord du bruger til at logge ind i PHPMYADMIN
    DATABASE = Det navn din database har i PHPMYADMIN
    Mange bruger Frac og så er dine oplysninger sådan:
    HOST = localhost
    BRUGERNAVN = Dit brugernavn til FTP
    KODEORD = Dit kodeord til FTP
    DATABASE Det samme som dit brugernavn
    config.php - Klik for at se større

    sql.txt
    Denne skal ligges ind i PHPMYADMIN og dette gøres sådan:
    1) Du bruger linket til dit PHPMYADMIN.
    2) Logger ind.
    3) Trykker på din daabse i venstre side.
    4) Trykker på SQL i toppen.
    5) Kopiere teksten i sql.txt ind i feltet.
    6) Trykker udfør (Den første)
    sql.txt er egentlig ikke en fil der er nødvendig at gemme men det er meget praktisk at gøre.
    Først står der "create table" som laver tabellen.
    Så står der de fem felter der skal bruges til systemet dette kan se sådan ud:
    `artikel` VARCHAR( 255 ) NOT NULL ,
    Hvilket betyder at artikel er VARCHAR og 255 betyder hvor mange tegn der kan være der i hvor 255 er max.
    id er auto_increment hvilket betyder at den selv tæller (Sætter id'et).
    sql.php - Klik for at se større


    Så er der ikke mere der skal gøres bortset fra at du skal uploade dine filer.
    Jeg håber du har lært hvordan man kan lave et ret simpelt artikel system men som alligevel virker rigtig godt.

    Nyttige links
    www.s2a.dk - Et godt forum hvor du kan spørge om alt ang. hjemmesider.
    www.netcoders.dk - Endnu et forum.
    www.dejligbjerg.dk - Massere af JavaScripts du kan pynte din side med.
    www.webcafe.dk - Her finder du bla. PHP tutorials.
    www.html.dk - Massere af hjælp til bla. HTML.

    Nyttige bøger
    PHP og MySQL for absolutte begyndere
    Start på MySQL
    PHP-Bogen
    Avanceret PHP

    Skrevet af SnuZZer - [Indsendt]
    23:22 17.11.2005


    Du skal være logget ind for at kunne skrive her...

     WantedGuy
    Det kunne også være fedt hvis en af delene virkede !!!!!!!!
     23:57 7.1.2006

     WantedGuy
    Snuzzer har også lavet et nyhedssytem lignene det her http://snuzzer.dk/s2a/nyhedsys/
     23:55 7.1.2006

     WantedGuy
    SQL SYNTAXEN ER FORKERT!!!!!!!!!!!!!!!
     18:00 30.12.2005

     WantedGuy
    <?php
     16:19 29.12.2005

     WantedGuy
    Lige en bemærkning; Man kan også starte en PHP kode med <?php
     16:17 29.12.2005

     lovboy
    fatter nada
     20:05 19.11.2005

     Stage200 - tidligere ansat på NsExtra
    *Fnis*. Hvor må det værer irreterene at sidde og skrive efter HELE systemet og så finde ud af at der ikke engang er en SQL Dump
     10:37 19.11.2005

     Stage200 - tidligere ansat på NsExtra
    ud fra mine bedømmelser er det da ikke særlig godt system . SnuZZer kan ikke omdane 60 sekunder til 1 minut
     04:05 19.11.2005

     krølleski
    TEGN@@@@@@@@@
     23:00 18.11.2005

     Comaq
    fatter det ikke men du må være god til det
     21:28 18.11.2005

     Dj Tjukkiii
    interessere mig ikke denne artikel
     19:36 18.11.2005

     Zaen 2635
    undskyld for mang tegn hehe sjovt
     16:38 18.11.2005

     Smarnis Mand
    Når jeg forsøger at få det til at virke siger den Parse error: parse error, unexpected '?' in /var/www/hotserv.dk/users/splashx/index.php on line 14
     16:04 18.11.2005

     Smarnis Mand
    Ups - min fejl det er jo index.php
     16:00 18.11.2005

     Smarnis Mand
    Men - hvad er linket til selve systemet? artiker.php? Pllz svar!
     15:59 18.11.2005

     Zokers
    Øhh smart karl man kan jo ikke kopier koden?
     15:26 18.11.2005

     poppe
    5/5 For den flotte guide
     15:02 18.11.2005

     caunter dennis
    Den er god!!!! er også selv ved at lære PHP kan godt programer lidt.
     11:58 18.11.2005

     Smarnis Mand
    Men - det skal nok blive stort TUsind tak for det
     10:46 18.11.2005

     Smarnis Mand
    og fuck det svært siider og roder med det i frontpage
     10:32 18.11.2005

     Smarnis Mand
    Hvad hvis man ikke gider bruge frac fordi der er for lidt plads M
     10:07 18.11.2005

     Tuuuu drengen
    Ved godt du har lavet skide meget Simon og det er sgu også flot af dig men de her artikler siger mig ikke en skid så derfor vil jeg ikke give dig en karakter da jeg ikke alligevel syntes om dette emne
     23:45 17.11.2005