PHP Snippets De små korte Skrevet af Daniel Pedersen
Indhold PHP Snippets De små korte er en samling af små og praktiske kode eksempler med kort forklaring, som med formål at kunne benyttes til opsalgsværk til en overbygning til kursuset. Materiale & guide: PHP guide PHP documentation SQL guide http://www.w3schools.com/php http://php.net/ http://www.w3schools.com/sql/default.asp Tag forbehold for at evt. skal indtastet manuelt og stavefejl! Forudsætninger Det forventes at PHP syntax er forstået og at man kan HTML/CSS. De forskellige kode eksempler er baseret på eksempler fra w3schools.com. Til en overbygning til kursuset er denne guide skrevet med henblik på at danne sig et overblik over en enkel opgave i PHP som bliver gennemgået. Dette kunne f.eks. være at slette noget data fra databasen.
Index 1) Løkker i praksis 2) If sætninger 3) Mysql Forbinde til database Udtræk fra database Indsætte data i databasen Slette data i databasen Redigere data i databasen 4) GET & POST 5) PHP Sessions
Løkker i praksis For løkke Den mest brugte løkke med PHP og generelt i udviklingssprog er for løkken, stærkt efterfulgt af while løkken. For løkken s syntax er: for( init ; condition ; increment ) { // code to be looped through Et eksempel ved brug af for løkken kunne eks. vis være følgende: $str = højtaler ; $txt_array = str_split($str); for($i=0 ; $i < strlen($str) ; $i++) { echo $txt_array[$i]; Løkken ovenover udskriver vores string bogstav for bogstav. Indtast koden og prøv den af. While løkke While løkken er meget brugt når man udskriver data fra arrays som kunne komme fra et databaseudtræk med SQL kommandoer. While løkke syntax: while( condition ) { // code to be looped through Her vises samme opgave som fra for løkken, dog med while istedet. $str = højtaler ; $txt_array = str_split($str); $i = 0; while($i < strlen($str)) { echo $txt_array[$i]; $i++;
If sætninger If sætninger er en vital del af udviklingssprog, med dem kan man spørge på om noget er sat, eksistere, er større end, lig med og så videre. Kort sagt er det måden i kode at skrive kriterier på. Hvis vi f.eks. skulle tjekke om man var logget ind på et website bliver dette gjort med if sætninger. If sætning syntax: if (condition) code to be executed if condition is true; Condition eksempler: 1==1 true er 1 lig med 1==2 false er 1 lig med 2 1 < 2 true er 1 mindre end 2 1 > 2 false er 1 større end 2 1 <= 2 true er 1 mindre eller lig med 2 1 >= 2 false er 1 større eller lig med 2 1!= 1 false er 1 ikke lig med 1 1!= 2 true er 1 ikke lig med 2!1 < 2 true er 1 ikke mindre end 2!1 > 2 false er 1 ikke større end 2 If sætning eks: $navn = "Albert"; if($navn=="albert") { echo "Albert er dit navn"; else if($navn=="hans") { echo "Albert er dit Hans"; else if($navn=="bob") { echo "Albert er dit Bob"; else if($navn=="susanne") { echo "Albert er dit Susanne"; else { echo "Kender ikke dit navn"; Leg med de forskellige conditions og se hvad der sker.
Mysql Mysql er en database der bliver benyttet på rigtig mange websites. Det er en opensource database som også betyder at den er gratis. Den er rigtig god og hurtig, så hvis du skal lave en hjemmeside til normal brug, hvor normalt brug er sites som f.eks. sites med 100.000 brugere er MYSQL egnet perfekt til dette. Kommer du over de 100.000, er MYSQL stadigvæk rigtig god, størrelsen jeg bruger er ikke en måleenhed men blot et eksempel. Når ens database er oprettet og klar til brug kan dette nedenstående stykke PHP kode tage forbindelse til databasen. $con = mysql_connect("localhost","peter","abc123"); if (!$con) { die('could not connect: '. mysql_error()); Koden ovenover opretter kun en forbindelse, men der sker ikke mere før at man selv begynder at trække data ud. Der er dog et par skridt mere for at kunne gøre dette. Valg af database: Når man med PHP siger at man skal vælge en database betyder det at vi vælger det arbejdsområde vores forbindelse skal råde over. Det vil sige at en database er en omfatning af tabeller som indeholder de aktuelle data vi kan udtrække. Metoden til at vælge en database er simpel, og vises nedenunder: mysql_select_db("my_db", $con); På næste side kan du se et database udtræk, hvor forbindelse og database valg er inkluderet i koden.
Udtræk fra databasen: Et udtræk fra en database som i vores tilfælde er MYSQL gøres med sproget SQL. SQL er det scriptsprog som kan udtrække, indsætte, slette, opdatere og udføre matematiske samt logiske udregninger for os, og returnere noget synligt data vi kan vises på vores hjemmeside. Vores database: FirstName LastName Age Peter Griffin 35 Glenn Quagmire 33 Nedenunder vises et udtræk: <?php $con = mysql_connect("localhost","peter","abc123"); if (!$con) { die('could not connect: '. mysql_error()); mysql_select_db("my_db", $con); $result = mysql_query("select * FROM Persons"); while($row = mysql_fetch_array($result)) { echo $row['firstname']. " ". $row['lastname']; echo "<br />"; mysql_close($con);?> Koden ovenover vil udtrække for og efternavn som er vist som FirstName og LastName, dog udskrives disse to på 1 linie med et mellemrum. For at teste koden skal du have en database klar til at arbejde med.
Indsætte data i databasen Når man vil indsætte data i databasen skal man benytte en SQL kommando som hedder insert, med denne kan man indsætte det ønskede data til en tabel. Eks. på at indsætte data i en database: <?php $con = mysql_connect("localhost","peter","abc123"); if (!$con) { die('could not connect: '. mysql_error()); mysql_select_db("my_db", $con); mysql_query("insert INTO Persons (FirstName, LastName, Age) VALUES ('Peter', 'Griffin', '35')"); mysql_query("insert INTO Persons (FirstName, LastName, Age) VALUES ('Glenn', 'Quagmire', '33')"); mysql_close($con);?> Koden ovenover indsætter 2 nye rækker I vores database, men dette er gjort statisk, som betyder at der ikke er noget dynamik over dette. Hvis vi f.eks. skulle indsætte data fra en formular som vi udfylder selv, er der nogle andre koncepter vi skal tage i brug. På næste side kan du se hvordan man med en HTML formular kan indsætte data i databasen.
Indsætte data med en HTML formular Nedenunder kan du se en meget basisk opsætning af et HTML dokument, med en formular. Denne bliver benyttet til at sende data til en fil der hedder insert.php. Filnavn: index.html <html> <body> <form action="insert.php" method="post"> Firstname: <input type="text" name="firstname" /> Lastname: <input type="text" name="lastname" /> Age: <input type="text" name="age" /> <input type="submit" /> </form> </body> </html> Her kan du se at med metoden $_POST I PHP kan du gribe fat i de sendte data fra vores HTML formular. Filnavn: insert.php <?php $con = mysql_connect("localhost","peter","abc123"); if (!$con) { die('could not connect: '. mysql_error()); mysql_select_db("my_db", $con); $sql="insert INTO Persons (FirstName, LastName, Age) VALUES ('$_POST[firstname]','$_POST[lastname]','$_POST[age]')"; if (!mysql_query($sql,$con)) { die('error: '. mysql_error()); echo "1 record added"; mysql_close($con)?>
Sletning I databasen At slette data er nok det nemmeste at gøre i en database. Når man skal slette bliver SQL kommandoen DELETE brugt. <?php $con = mysql_connect("localhost","peter","abc123"); if (!$con) { die('could not connect: '. mysql_error()); mysql_select_db("my_db", $con); mysql_query("delete FROM Persons WHERE LastName='Griffin'"); mysql_close($con);?> I koden ovenover kan du se at vi sletter en person fra vores table Persons med et efternavn der er Griffin. Det betyder naturligvis at alle personer dette efternavn ville blive slettet.
Redigere data i databasen Før vi kan redigere i databasen tag lige et kig på nedenstående tabel. FirstName LastName Age Peter Griffin 35 Glenn Quagmire 33 Koden nedenunder viser hvordan vi kan ændre alderen på en person der har fornavnet Peter og efternavnet Griffin. Formålet er at ændre hans alder til 36, som lige nu er 35. <?php $con = mysql_connect("localhost","peter","abc123"); if (!$con) { die('could not connect: '. mysql_error()); mysql_select_db("my_db", $con); mysql_query("update Persons SET Age = '36' WHERE FirstName = 'Peter' AND LastName = 'Griffin'"); mysql_close($con);?> Efter at koden er blevet udført vil Peter Griffin s alder være ændret til 36, som også vises nedenunder. FirstName LastName Age Peter Griffin 36 Glenn Quagmire 33
GET og POST I PHP findes 2 metoder at gribe fat I data som bliver sendt fra en HTML formular. Den første vi skal kigge på hedder GET. GET metoden håndtere variabel der kommer fra URL linien vi kan se i vores browser. Et eksempel på hvordan dette kunne se ud ville være: http://www.mitsite.dk?minvariabel=1 Her kan du se at der er sat en URL variabel som hedder minvariabel, den er også sat lig med værdien 1. Dette er data som vi kan udskrive eller benytte i vores PHP script. Metoden at gribe fast i disse data kan du se nedenunder. echo $_GET[ minvariabel ]; Her udskriver vi blot URL variabelen s minvariabel værdi til skærmen med en echo kommando. Vi kan også ligge denne værdi over i en normal PHP variabel. $myurlvalue = $_GET[ minvariabel ]; GET er kun til URL variabler, og bliver normal brugt til at vidre sende f.eks. det vi kender fra PID aka. Person ID, som også er den unikke nøgle der bliver brugt til at henvises til en individuel person i vores database.
POST Post metoden er anderledes og kan ikke ses i URL linien. Denne metode at sende data på er brugt mest når skal indsætte data eller logge ind på et website. Med POST metoden er der ikke noget direkte synlig måde se hvad for data vi har sendt fra vores HTML formular. Dette er også meningen da man nok ikke er interesseret i at vise f.eks. password eller vitale oplysninger i en URL linie. Vi ved browere gemmer besøge URLér og derfor ville dette kunne forståes som et sikkerhedshul. Måden at udskrive data der er sendt med metoden POST kan gøres som vist nedenunder. echo $_POST[ firstname ]; Her er vores HTML formular, hvor at name= firstname er det enkeltes tekstfelt unikke identifikation som skal benyttes når vi vil have fat i den sendte data. Kode eksemplet ovenover viser hvordan vi udskriver det første felt kaldet firstname. <html> <body> <form action="insert.php" method="post"> Firstname: <input type="text" name="firstname" /> Lastname: <input type="text" name="lastname" /> Age: <input type="text" name="age" /> <input type="submit" /> </form> </body> </html> Prøv f.eks. at indsætte PHP koden vist på toppen af siden til en HTML med denne formular. Du vil hurtigt se at der kommer en fejl indtil at du trykker på knappen submit.
PHP sessions Sessions i PHP er en metode at gemme data som vi skal have til rådighed på hele vores hjemmeside. Det vil også sige at vi med denne metode kan gemme f.eks. hvis man er logget ind, som også er det man gør i praksis. En session bliver oprettet til den browser du har åbnet hjemmesiden med. Det vil sige at hvis du logger ind facebook med firefox, er du nødvendigvis ikke logget ind med internet explorer. For at få adgang til session på en hjemmeside skal man altid starte med at gøre starte en session. Dette gøres med en funktion som vises nedenunder: <?php session_start();?> <html> <body> </body> </html> Det er vigtigt at du husker at starte sessionen som det første I dit PHP document. Ellers ville der kunne opstå en fejl, da funktionen session_start() sender nogle start op data. Dette kan gå i fejl, og for at undgå dette startes en session altid som det første. Når at vores session er startet har vi frit adgang til alle session data der er oprettet med vores adgang til hjemmesiden. Det vil sige at vi ikke kan få fat i data sidemanden har oprettet selvom at hjemmesiden ligger online, og at vi er på samme tidspunkt. En session bliver oprettet til dig, til din browser og hænger sammen med den, så ved PHP at du er ejeren af sessionen, og det kun er dig som kan tilgå dens data. På næste side kan du se mere om hvordan man arbejder med sessions.
Oprette session variabler Her vises et eks. på hvordan at man opretter en session variabel. Dette er ret nemt og kræver ikke noget særligt at gøre. session_start(); // store session data $_SESSION['views']=1;?> <html> <body> <?php //retrieve session data echo "Pageviews=". $_SESSION['views'];?> </body> </html> Koden overover viser hvordan man opretter et session variabel og sætter værdien 1 ind i denne. Lidt længere nede i koden bliver den udskrevet til skærmen med echo kommandoen. Prøv at opret 2 PHP filer med navn: Index.php Indsæt session kode på denne side Home.php Udskriv session på denne side, efter at du har været på index.php 1 gang Husk at starte session på begge sider i toppen af PHP filen.