For at kunne forstå/lære noget som helst af denne manual, bør du have en solidt kendskab til HTML og Engelsk..
Hvis du endnu ikke er HTML ekspert, så tag et smut ind på www.html.dk og læs deres tutorials.
Hvis du ikke kan engelsk… så opgiv med det samme.
Da jeg selv bruger Windows, så vil programmer osv. være til Windows , og beskrevet ud fra en Windows-brugers synspunkt.
1.0 Hvad der kræves af programmer.
For at kunne skrive php kræves der ingen specielle programmer, notepad er fin. Dog vil jeg anbefale en avanceret udgave af notepad kaldet ConTEXT , som indeholder en hightlighter til php, dvs. den farver specielle kodestumper, hvilket giver et meget bedre overblik.
ConTEXT kan downloades her: www.context.cx
Udover det skal du bruge en webserver som kan køre php (og helst MySQL , men det kommer først senere). Hvis du ikke har et webhotel eller egen server så vil jeg anbefale dig at bruge www.frac.dk som giver et godt gratis webhotel som understøtter php & MySQL.
Hvis du ønsker at bruge en webserver, så vil jeg anbefale dig at kigge på WebCafe.dk’s artikler : www.webcafe.dk/artikler
2.0 Dit først program.
2.1 “Hello World” version 1.
Okay, lad os nu lave dit først php program.
Først kommer koden, herefter forklaringen.
[code]
echo "Hello World";
?>
[/code]
Okay, nu har vi lavet et program/script som viser “Hello World” som tekst på skærmen,dette kaldes at “udskrive”.
‘echo’ er en php kommando som bruges til at udskrive. I stedet for ‘echo’ kan vi også benytte ‘print’
bruger henholdsvis til at starte et stykke php-kode og slutte et stykke php-kode.
Du kan også bruge i stedet for
2.2 "Hello World" version 2.
Her kommer så en anden udgave af HelloWorld
[code]
$hej = "Hello World";
echo $hej;
?>
[/code]
Præcis det samme som før, denne gang laver vi bare en VARIABEL som vi ligger en stykke tekst (Hello World) ind i
$ bruges til at sige at dette ord $ordet er en variable, og kan så herefter bruges videre i scriptet.
2.3 Kommentarer
Når du koder kan det være rart at kunne indsætte en kommentar eller 2 inde i scriptet.
Dette kan gøres på 3 måde i php
// Alt efter de 2 / tegn bliver til en kommentar.
/* Alt mellem disse tegn bliver til kommentarer */
# Alt efter dette tegn bliver til kommentarer.
Ved større script eksempler vi du opleve at forklaringen er skrevet i en kommentar
2.4 Fejl ved brug af (x)HTML doctype.
Hvis du er en af de dygtige personer som bruger doctype, og normal bruger xhtml doctypen, vil du opleve en fejl.
ved denne sætning vil alt imellem og ?> blive betragtet som php kode, og da det ikke er php kode, så vil du få en fejl.
Dette er dog en løsning på.
Du skriver bare i stedet:
[code]
echo'';
?>
[/code]
Her snyder vi altså compileren og udskriver xhtml doctypen, og herefter vil du så ikke få fejl (pga. dette)
3.0 Forgreninger.
3.1 IF-sætning
Okay, her kommer så noget smart.
Man kan bestemme indholdet/udskriften af en værdi med nogle kommandoer:
Jeg vil kun gennemgå de mest bruge af dem. Resten kan du finde i manualen.
[code]
if ()
'if' betyder 'hvis' på dansk. En 'hvis' sætning kan se sådan her ud.
if ( 1 < 10 ) { echo"1 er mindre end 10" }
[/code]
Oversat står det: Hvis 1 er mindre end 10 , skriv "1 er mindre en 10"
Den kan så udbygges med en 'else' kommando, som betyder 'ellers'
[code]
if ( 1 < 10 { echo"1 er mindre end 10" } else { echo"1 er ikke mindre end 10" }
en 'if' sætning kan beskrives sådan:
if ( } else {
[/code]
Og dette er, ligesom stort set alle php-kommandoer, enig bare plan engelsk,
evt. lettere forkortet.
3.2 Switch
En anden type forgrening er en switch() sætning.
F.eks.
[code]
switch($tal){
case 1;
echo "Tallet er 1";
break;
case 2;
echo "Tallet er 2";
break;
}
[/code]
Lidt forklaring
switch(værdi) værdi vil typisk være en variabel.
case
break; slutter case.
!BEMÆRK. I php kan du godt lave switch på både TAL og ORD , hvor det normal (i andre programmeringssprog) kun er på tal (int).
3.3 Loops / Løkker
Her kommer så noget mere smart, loops (løkker).
Der gør at du kan udskrive ting inden for en bestemt interval.
en sætning kan f.eks. være
[code]
$tal = 0;
while( $tal <= 9 ) { echo $tal; $tal++ }
[/code]
som så vil udskrive 123456789
Forklaring:
$tal = 0; <- Her skriver vi startværdien.
while ( $tal <= 9 ) <- '<=' er en operator, og denne her betyder "mindre end, eller ligmed". Det som står i { } er så betingelse. og her skrive vi så $tal ud.
$tal++ <- Dette er en forøgelse, og ++ betyder at vi forøger tallet med +1
!BEMÆRK. Du kan kun bruge forøgelse på tal.
3.4 Arrays
Okay, nu bliver det så lidt sværere, så læs grundigt.
Som i de fleste andre programmerings sprog kan du lave et Array.
Et array er en tabel med noget info, som f.eks. kan se sådan her ud
[code]
Array
(
[0] => hej
[1] => med
[2] => dig
)
[/code]
Dette array er lavet med kommandoen array()
Og koden er:
[code]
array("hej","med","dig")
[/code]
Dette kan så udskrives som overstående med funktionen print_r()
Hvis du vil have det til at så pænt, så bør du tilføje HTML kommandoen
uden om.
Dette kan måske virke lidt uforståeligt lige nu, men det vil blive lidt mere uddybet efterhånden som vi arbejder med dem.
4.0 Globale værdier.
I php er det noget som hedder globale værdier. Nogle af de mest bruge er
$_GET[] og $_POST[] da disse typisk bliver brugt til at behandle inputs fra en HTML form.
Et eksempel
Du har en html form
[code]
[/code]
Denne form sender et input til action.php via en POST værdi.
action="" angiver den fil som skal sendes til.
method="" angiver om det er POST eller GET værdi.
i action.php kan du så vise indholdet af
# action.php
[code]
echo "Dit navn er ";
echo $_POST['navn'];
?>
[/code]
Dette vil så udskrive det som er indtastet i html formen.
[code]
$_POST['værdi']
[/code]
Hvor værdi er
altså name delen af dit input.
Du kunne også bruge GET som method, og så kunne du udskrive det med
[code]
echo "Dit navn er ";
echo $_GET['navn'];
?>
[/code]
Men så ville adresselinjen se sådan ud
http://www.etdomæne.dk/action.php?navn=etnavn
hvor 'etnavn' er det som brugeren har indtastede. Dette er smart nok til nogle ting.
Dog ikke hvis du skal sende mange informationer, og specielt ikke ved passwords og lign.
Hvis dit webhotel har slået register-globals til, så SKAL du bruger $_POST og $_GET, modsat hvis de ikke har det, så er det ikke absolut nødvendig, men gør det alligevel så undgår du ubehagelige overraskelser.
Okay, nu er du vist lidt inde i php, så her kommer noget smart.
Hvis du vil lave en hjemmeside uden iframes/frames så kan du gøre det via. php og samtidigt lave din egen 404 (fejl) side.
først laver vi en index.php
[code]
$side = $_GET['side']; // Henter side information fra adresselinjen
if ($side == ""){ // Hvis der ikke er angivet nogen side, så må det jo være forsiden.
$side = "forsiden.php"; // og her angives den fil som er forsiden
}
if(!@file_exists($side)) { $side = "404.php"; };
// Hvis $side ikke findes så inkludere vi en fejl side i stedet.
?>
include($side); // Dette inkluderer indholdet af $side ?>
[/code]
Lidt forklaring.
Du kan nu lave links som f.eks.
Så behøver du ikke skrive
osv. i din tagwall.php fil.Her er så 2 nye kommandoer.
file_exists() // Den checker om en fil findes.
include() // inkluderer indholdet af den fil som er angivet i ().
Smart ikke :-)
5.0 Databaser
Nå, nu har vi kedet os lang tid nok med php-intro, og du sidder og tænker:
"Hvornår skal jeg lære at lave en gæstebog og et loginsystem ?"
Og svaret er: Snart !.
Vi skal dog lige lære at bruge databaser først.
Databaser er meget smarte, da du kan have en forbandet masse informationer i dem.
F.eks. Hvis du har en gæstebog, så kan du lave Tekst, links, brugernavn, e-mails osv.
Du kan have næsten alt.
Til databaser er de typiske muligheder: Access (kombineret med ASP) og MySQL som bruges meget sammen med PHP.
Du kan også bruge MSSQL, men det koster fra omkring 1-200.000 kr. og opefter.
Så vi holder os til MySQL.
Stort set alle web-hoteller med php, har tilknyttet en MySQL database.
Også frac.dk
Det at snakke med database bruger man endnu et nyt sprog. SQL , dette er dog en meget simpelt sprog, som kun bruges til databaser.
5.1 At forbinde til en database.
At forbinde til en database.
Et 'connect' til en MySQL database ser sådan ud.
[code]
@mysql_connect("host", "brugernavn", "password") or die("Der kunne ikke oprettes forbindelse til databasen");
@mysql_select_db("database") or die("Databasen kunne ikke findes");
?>
[/code]
or die() giver mulighed for at du kan lave dine egne fejlmeddelelser.
mysql_connect() Forbinder til din host, som typisk er xguiden.dk.
mysql_select_db() vælger en database, dog har du i mange tilfælde kun én til rådighed.
Nu har du adgang til databasen.
i php bruger man mysql_query("") or die("Der er sket en fejl. Fejl: ".mysql_error());
til at skrive, opdatere eller slette informationer
Denne 'or die()' besked som jeg har skrevet vil lave en besked som skriver, at der er sket en fejl, og så skrive den en uddybelse af fejlen.
Når du så engang (snart) for brug for hjælp til mere avanceret kode, så vil alle eksperterne gerne have 'uddybelse af fejlen'.
Men hvad kan vi bruge en tom database til ? Intet..
Så derfor skal vi lige have nogle rækker.
Du kan enten bruger phpmyadmin eller kører en mysql_query() med noget sql i.
Jeg vil ikke uddybe phpmyadmin i denne tutorial, men det er ret let at bruge, så du kan bare prøve dig frem. Eller gøre sådan:
[code]
mysql_query("
CREATE TABLE tagwall (
id int(11) NOT NULL,
navn text NOT NULL,
email text NOT NULL,
website text NOT NULL,
besked text NOT NULL,
) TYPE=MyISAM
");
?>
[/code]
Forklaring:
CREATE TABLE
navn text NOT NULL
angiver at der skal være en række som hedder navn, og som indeholder tekst, og som ikke er NULL, når den er tom, dvs. du kan ikke bruge UPDATE (se forklaring længere nede) når den er tom.
id int(11) NOT NULL
Denne er lidt speciel, da det ikke er tekst men en 'int' . int står for integrer og betyder heltal. Hvis du skal arbejde med heltal så skal du bruge denne her.
Hvis du skal arbejde med decimaltal (der bruges punktum i stedet for komma) så skal du bruger DOUBLE i stedet.
Et eksempel på et INSERT
[code]
@mysql_connect("host", "brugernavn", "password") or die("Der kunne ikke oprettes forbindelse til databasen");
@mysql_select_db("database") or die("Databasen kunne ikke findes");
$id = time();
@mysql_query("
INSERT INTO tagwall (id,navn,email,website,besked,ip,date)
VALUES ('$id','$_POST[navn]','$_POST[$email]','$_POST[$website]','$_POST[$tekst')
") or die("Der er sket en fejl. Fejl: ".mysql_error());
?>
[/code]
Dette stykke kode er fra min gæstebog, som indsætte værdierne af nogle inputs ind i databasen ved brug af SQL-kommandoen:
INSERT INTO tabel (rækker) VALUES (værdier)
Du skal altid huske at have dit database connect i samme fil som dit mysql_query()
Men frygt dog ej, du behøver ikke skrive det hver gang.
Du laver bare en fil som hedder connect.php og indsætte connectet i den.
og så skriver du
[code]
include('connect.php'); // Inkluderer database forbindelsen.
$id = time();
@mysql_query("
INSERT INTO tagwall (id,navn,email,website,besked,ip,date)
VALUES ('$id','$_POST[navn]','$_POST[$email]','$_POST[$website]','$_POST[$tekst')
") or die("Der er sket en fejl. Fejl: ".mysql_error());
?>
[/code]
Smart ikke ;-)
En lille liste over hyppige SQL kommandoer
[code]
SELECT * FROM tabel
Henter alt informationer fra en tabel.
INSERT INTO tabel (rækker) VALUE (værdier)
Indsætte nye data
UPDATE tabel SET dbværdi='$EnNyVærdi'
Ændre i data
DELETE FROM tabel WHERE noget='noget'
Slette i data.
[/code]
Som du kan se i overstående har jeg en som hedder SELECT
den bruge nemlig når vi vil have vores database information ud igen.
Her er så når nogle information bliver udskrevet igen.
[code]
@include('connect.php'); // Indeholder mit database connect.
$query = @mysql_query("SELECT * FROM tagwall ORDER BY id DESC") or die("Der er sket en fejl. Fejlnr. ".mysql_errno());
# Hiver informationerne ud. Og da 'id' er et timestampt som indeholder tiden i sekunder siden 1970
# så Bestemmer vi rækkefølgen ud fra det.
# DESC henter den højeste værdi først (10 til 1), modsat standart som henter den laveste værdi først (1 til 10)
while ($row = @mysql_fetch_array($query)) {
# mysql_fetch_array laver et array med informationerne.
# arrayet hedder row, og kan informationerne kan hentes med $row[rækkenavn]
# f.eks. $row[navn] er navnet som står i den post , og som så udskrives med et whileloop
# laver et while loop, som udskriver alle informationerne én gang pr. post.
?>
Navn: echo "$row[navn]"?>
Email: "> echo "$row[email]"?>
Hjemmeside: " target="_new"> echo "$row[website]"?>
echo "$row[besked]"?>
}; // afslutter whileloopet
?>[/code]
Der står forklaringer inde i scriptet.
6.0 Eksempler på script hvor der er brugt php og MySQL.
6.1 Nyhedssystem.
Okay, her er et nyhedssystem + forklaring.
Hvis du bare copy-paster uden at læse teksten så lærer du INTET.
Dump af min database struktur
[code]
CREATE TABLE nyhedsys (
headline text NOT NULL,
news text NOT NULL,
date datetime NOT NULL default '0000-00-00 00:00:00',
id int(3) NOT NULL default '0',
UNIQUE KEY date (date),
KEY date_2 (date)
) TYPE=MyISAM;
[/code]
nyheder.php Viser nyhederne
[code]
@include('config.php'); # Database connect
$query = mysql_query("select *,date_format(date, '%e/%c %Y - %H:%i') AS tid FROM nyhedsys order by date desc") or die("Der er sket en fejl. Fejlnr. ".mysql_errno());
#henter informationerne, og formateret datoen så det ligner dansktid, og ikke amr.
while ( $row = mysql_fetch_array($query)) {
#henter informationerne, og udskriver dem i et while loop
$headline = stripslashes($row[headline]); // Fjern \ fra \' osv. (forklaring kommer senere.
$news = stripslashes($row[news]);
$news = nl2br($news); // Gør at når du har lavet linjeskift da du skrev nyheden, også bliver vist nu.
?>
| echo "$headline" ?> |
| echo "$news" ?> |
| echo "$row[tid]" ?> |
} // Afslutter fremvisningen.
?>
### add_nyhed.php ##
# Skrive nyheder #
### add_nyhed_sql.php ###
# sql-delen til overstående #
include ('config.php'); // db-connect
$id = time(); // laver et unix timestamp, med antal sekunder sinden 1970.
$headline = addslashes($_POST[headline]); // addslashes gør at du kan skrive " og ' uden at mysql melder fejl.
$news = addslashes($_POST[news]);
mysql_query("
INSERT INTO nyhedsys (id,headline,email,news,date)
VALUES ('$id','$headline'','$news',now())") or die(mysql_error());
header("Location: nyheder.php"); // sender dig tilbage til nyhedsoversigten.
?>
### del_nyhed.php ###
# slette nyheder #
include('login.php');
include('config.php');
?>
if( isset($_GET['slet']) ) { // checker om $_GET['slet'] eksisterer
$id = addslashes($_GET['slet']); // gør du der ikke bliver lavet onsindet kode
mysql_query("DELETE FROM nyhedsys WHERE id = '$id'") or die(mysql_error()); // slette nyheden
}
$resultat = mysql_query("select * FROM nyhedsys order by date desc"); // henter db info
while ($row = mysql_fetch_array($resultat)) { // viser info
?>
|
echo "$row[headline]" ?>
|
| echo "$row[news]" ?> |
|
echo "$row[date]" ?> - ">SLET Overskrift: " name="headline"> Nyhed:
} edit_nyhed_sql.php sql-delen til overstående [code] $headline = addslashes($_POST[headline]); # Det samme som før, bare med UPDATE i stedet for INSERT eller DELETE. mysql_query("UPDATE nyhedsys SET headline='$headline',news='$news' WHERE id='$_GET[id]' ") or die(mysql_error()); header("Location: nyheder.php"); ?>[/code] Dette er måske ikke så let at forstå, men igen prøv dig frem, Hvis du heller ville have en gæstebog i stedet for et nyhedssystem, så er det præcis samme kode/princip, bare et lidt andet design. 7.0 Final kommentar Sådan, det var så enig min hjælp til at begynde på php. Og nu sidder du som lovefuld php-koder, og tænker jaa, nu kan jeg lave alt muligt smart, og så begyder du. Først downloader du MANULEN i .chm (windows hjælpfil format) fordi så kan du søge i det. Når du så har lavet noget advanceret som ikke virker så er det mange stedet er få hjælp Men først skal du lige læse hvordan man stille et spørgsmål KIG I MANULEN IGEN , OG SØG PÅ GOOGLE Hvis du vil have hjælp så bør du lige kigge en ekstra gang i manualen, og google lidt først. 7.1 Sjove / smarte funktioner osv. Sjove / Smarte ting som er værd at kigge på Cookies - Til autologin osv. Related posts |

tirs, feb 9, 2010
Danske guides, PHP/Mysql