Simpel, alsidig, objekt-orienteret pagination (paging) i PHP

Størrelse: px
Starte visningen fra side:

Download "Simpel, alsidig, objekt-orienteret pagination (paging) i PHP"

Transkript

1 Denne guide er oprindeligt udgivet på Eksperten.dk Simpel, alsidig, objekt-orienteret pagination (paging) i PHP Der findes masser af bud på, hvordan man kan lave paging (pagination) i PHP. Nogle løsninger er håbløse, andre er for specifikke - og de sidste er som regel for komplekse! I det følgende præsenteres en simpel OO-tilgang, der kan håndtere de fleste behov. Skrevet den 03. Feb 2009 af jensgram I kategorien Programmering / PHP [ Introduktion ] I det følgende behandles emnet "paging", sideopdeling eller "pagination" (jeg benytter sidstnævnte betegnelse): Det vil sige det problem der opstår, når data fra en database skal udtrækkes i mindre portioner og serveres på individuelle sider - som eksempelvis artiklerne her på Eksperten. I og for sig er logikken ikke ret kompleks. Det store problem er derimod, at man ofte finder sig selv i færd med at kopiere store stykker kode fra pagination af gæstebogen til brugerlisten til kommentarerne til... Formålet med denne artikel er at gennemgå tankerne bag en simpel abstrakt PHP-klasse, der kan tage sig af alt det kedelige så du blot skal beskrive, hvordan de enkelte elementer skal renderes. (Kode følger løbende - de nysgerrige kan scrolle til bunden, hvor den samlede klasse forefindes.). Hermed rustes læseren til at tage det sidste skridt og implementere løsningen på site eget site. Artiklen kan ved første øjekast synes lang, hvilket skyldes, at kode og forklaring følges ad. Kan du undvære forklaringen, så skimlæs og hæft dig ved den samlede kode nær artiklens bund. (Det skal i parentes bemærkes, at jeg er klar over, at der på Eksperten findes mindst to andre artikler om dette emne. At dømme ud fra kritikken, lader det imidlertid ikke til at kunne skade med et nyt perspektiv.) [ De overordnede problemstillinger ] Jeg vil for det følgende angribe pagination-problematikken som to sammenhængende udfordringer: 1. Håndtering af dataudtræk fra databasen (heri benyttes MySQL; arbejder du med en anden database vil du sikkert let kunne tilpasse koden), samt opdelingen i sider 2. Problemet, der opstår ved store kollektioner, der skaber mange sider og derved en uoverskuelig navigation. Sidstnævnte er i nogen grad en outsider (ihvertfald i forhold til den gængse artikel om pagination), så for at sikre fællesforståelse med læseren, tillader jeg mig at uddybe: Antag at vi har poster i databasen og vil præsentere ti ad gangen. Den simple løsning er at liste 180 links med siderne Meget uoverskueligt og derved komplet uanvendeligt. I stedet har det været et krav til den til artiklen udviklede løsning, at sidenavigationen ville se ud à la *1* [2] [3]... [180], hvor asterisk indikerer den aktuelle side, mens kantede parenteser repræsenterer sidelinks. Ellipsen (...) er bogstavelig. Befinder vi os på side 65 (posterne 650-9) skal navigationen antage formen [1]... [63] [64] *65* [66] [67]... [180] etc.

2 [ En objekt-orienteret tilgang ] Den objekt-orienterede tilgang afspejler den måde, hvorpå mennesket ser verden. Som introduktion til OO et det oplagt (og udbredt) at lave eksempler på nedarvningshierarkier, tilstand og funktionalitet på fænomener og begreber fra hverdagen, e.g. køretøjer, cykler og biler. Nogle gange er vi imidlertid tvunget til at modellere begreber, der ikke kan hentes fra omgivelserne, men som snarere er udtryk for en formaliseringsproces fra udviklerens side. I dette tilfælde eftersøger vi et begreb, der kan konkretiseres til noget, derkan håndtere pagination - resultat: Vi modellerer og udvikler en "Paginator": <?php abstract class Paginator { abstract protected function renderitem(&$row);?> Som omtalt ovenfor, kan stort set hele logikken bag pagination genbruges på tværs af kontekster. Faktisk er det kun et spørgsmål om at implementere en konkret renderingsmekanisme til hver af disse. Det kunne være en kommentar-rendering, gæstebogsindlæg-rendering etc. Som følge af denne betragtning har jeg valgt, at Paginator-klassen skal være abstrakt, idet metoden renderitem() skal realiseres til hver kontekst. Jeg skal senere vende tilbage til denne metode. En Paginator skal i al sin enkelthed kunne håndtere følgende scenarie: 1. Find det totale antal af elementer, der skal gøres til genstand for pagination 2. Udregn det samlede antal sider = total / elementer-per-side 3. Sæt aktuel side som intern tilstand. Er ingen side angivet, antages det, at vi befinder os på første side (som internt er side nul). 4. Tilbyd rendering af den aktuelle sides elementer. 5. Tilbyd rendering af relevante navigationsmuligheder, jf. pkt. 2 i foregående afsnit. Som det altid gør sig gældende, er der behov for tilstand og funktionalitet, så lad os først tilføje de nødvendige metodesignaturer: <?php abstract class Paginator { public function renderitems() {... public function rendernavigation() {... abstract protected function renderitem(&$row);?>

3 [ Den interne tilstand ] Hvert objekt af typen Paginator skal kende sin interne tilstand. Denne er givet gennem følgende attributter: * tables: En streng med den eller de tabeller (forespørgslen, der udtrækker data fra databasen er ikke begrænset til én tabel), hvorfra data hentes. Denne værdi sættes ved instantiering. * fields: En streng med de felter, der ønskes udtrukket. Denne værdi sættes ved instantiering. * where: En streng med betingelsen for udtrækket (uden LIMIT - den del håndteres internt). Denne værdi sættes ved instantiering. * orderby: En streng med rækkernes sorteringsrækkefølge. Denne værdi sættes ved instantiering. * cntperpage: Antallet af elementer pr. side. Denne værdi sættes ved instantiering. * key: GET-nøgle til at forespørge side. Som udgangspunkt benyttes "page" således at URL'erne i navigationen indeholder "?page=n". Attributten er kun medtaget for at muliggøre simpel tilpasning. Denne værdi kan sættes ved instantiering. * page: Objektets aktuelle side. Sættes internt baseret på GET-værdien for ovennævnte key og vil altid være i intervallet [0; cntpages[. * cntpages: Det samlede antal af sider. Beregnes internt som antallet elementer divideret med elementer pr. side. Disse føjes til skelettet: <?php abstract class Paginator { private $tables; // (string) private $fields; // (string) private $where; // (string) private $orderby; // (string) private $cntperpage; // (int) Items per page private $key; // (string) The query string key for page navigation private $page; // (int) Current page private $cntpages; // (int) Number of pages public function renderitems() {... public function rendernavigation() {... abstract protected function renderitem(&$row);

4 ?> [ Fælles funktionalitet ] Først og fremmest må vi have en konstruktør, hvormed vi kan instantiere et nyt objekt af typen Paginator. (Konkret kan det naturligvis først gøres når renderitem() er blevet realiseret, men det er en anden sag. Vi kommer dertil om et øjeblik.). Denne laver blot lidt simpel argumenthåndtering: public function construct($tables, $fields, $where, $orderby, $cntperpage, $key = 'page') { if (intval($cntperpage) < 1) { die('illegal argument: cntperpage must be greater than zero.'); $this->tables = $tables; $this->fields = $fields; $this->where = empty($where)? '1=1' : $where; $this->orderby = $orderby; $this->cntperpage = intval($cntperpage); $this->key = $key; // Perform calculations to set cntpages and page... $sql = sprintf('select COUNT(*) FROM %s WHERE %s', $this->tables, $this->where); $res = mysql_query($sql); $cnt = mysql_result($res, 0); $this->cntpages = ceil($cnt / $this->cntperpage); $this->page = (isset($_get[$this->key]) && intval($_get[$this->key]) > 0? intval($_get[$this->key]) - 1 : 0); //?page=1 gives $this->page = 0 $this->page = max(0, min($this->page, $this->cntpages - 1)); // Never accept values greater than the number of pages Ingen magi hér! Konstruktøren sørger for, at den initielle tilstand sættes, hvorefter det udregnes, hvor mange sider der skal benyttes, samt hvilken side der forespørges (i.e. der tildeles værdier til cntpages og page). Bemærk, at side 1 repræsenteres som $this->page = 0. renderitem() er erklæret abstrakt, så vi kan være sikre på, at metoden er realiseret (implementeret) inden et konkret Paginator-objekt kan oprettes. Idéen hermed er, at renderitems() (bemærk "s" - der tales hér om den offentlige metoder, der sørger for at renderer den aktuelle sides elementer) blot kan kalde renderitem() for hver række fra databasen, der skal være en del af den aktuelle side: public function renderitems() { $out = '';

5 $sql = sprintf('select %s FROM %s WHERE %s ORDER BY %s LIMIT %d, %d', $this->fields, $this->tables, $this->where, $this->orderby, $this->page * $this->cntperpage, $this->cntperpage); $res = mysql_query($sql); while ($row = mysql_fetch_assoc($res)) { $out.= $this->renderitem($row); // Calling the concrete implementation for each row return $out; [ Navigationen ] Ovenstående er nu et fungerende skelet, der i sig selv kan håndtere pagination (når man har realiseret renderitem() - eksempel følger i næste afsnit). Det er imidlertid ikke meget ved det, førend man også har mulighed for at navigere mellem siderne. Som allerede omtalt, ønsker jeg at lave et system, der kan håndtere endda meget store kollektioner, i.e. mange sider. Desuden ønsker jeg at kunne styre udseendet meget præcist, så hvert element skal forsynes med relevante CSS-klasser: * seqfirst: Første side * seqlast: Sidste side * seqcurrent: Den aktuelle side - side 1 som udgangspunkt * seqbefore: Sider før den aktuelle * seqafter: Sider efter den aktuelle * seqgap: Udeladte sider (ellipse) Eksemplet fra tidligere - [1]... [63] [64] *65* [66] [67]... [180] - ønskes renderet som følger: <ul class="paginatornavigation"> <li class="seqfirst seqbefore"><a href="">1</a></li> <li class="seqbefore seqgap">...</li> <li class="seqbefore"><a href="?page=63">63</a></li> <li class="seqbefore"><a href="?page=64">64</a></li> <li class="seqcurrent">65</li> <li class="seqafter"><a href="?page=66">66</a></li> <li class="seqafter"><a href="?page=67">67</a></li> <li class="seqafter seqgap">...</li> <li class="seqlast seqafter"><a href="?page=180">180</a></li> </ul> Og så et lille intermezzo: Da ingen sideangivelse svarer til at få serveret side 1, ønsker jeg ikke, at der

6 bliver genereret et link til "?page=1". Desuden skal Paginator være let at bruge, så jeg må på en måde gøre det muligt for folk at kunne håndtere selve genereringen af sidelinkenes URL'er. Det kan eksempelvis være, at man i ét specifikt tilfælde vil angive sidetallet på det, jeg kalder "mod_rewrite"-vis: i stedet for som GET-parameter. Man kan ikke tage hensyn til alle typer scenarier, så i stedet overlader jeg muligheden til brugeren ved at lave en metode - generatelinkurl() - der kan overskrives, hvis man ønsker mere fleksibilitet end blot at kunne omdøbe GET-parametren (jf. attributten key): protected function generatelinkurl($linkprefix, $key, $page) { $var = (strpos($linkprefix, '?') === false? '?' : '&'). $key. '='. $page; return $linkprefix. ($page > 1? $var : ''); // Don't add page data if link goes to first page Argumenterne turde være selvforklarende. De to sidste kunne have været undværet, da implementøren blot kan tilgå $this->key hhv. $this->page. Personligt foretrækker jeg dog denne afkobling. Jeg vil ikke gå i dybden med hver linie i rendernavigation(), da jeg i nogen grad finder koden selvforklarende. I store træk går det ud på at iterere over alle siderne (1 - cntpages) og påklistre de korrekte klasser, jf. ovenstående liste. Der er imidlertid ingen grund til at gennemgå alle sider, så jeg springer over hvor jeg kan (i.e. hvor sider er udeladt). Metoden er forsynet med to parametre: rendernavigation($linkprefix = '', $cntaround = 2). Det første videresendes til generatelinkurl() og kan benyttes til at angive sidelinkenes udgangspunkt. Andet argument er antallet af sidelinks direkte omkring den aktuelle side. Sættes den til 1 bliver det løbende eksempel til [1]... [64] *65* [66]... [180], sættes den til 0 fås [1]... *65*... [180]. Negative værdier tolkes som et fravalg af udeladte sider, hvilket betyder, at der genereres sidelinks til alle sider. (Det var netop det vi ville undgå, men det kan jo være, at du er af en anden opfattelse, så nu har du muligheden. Jeg gengiver forresten ikke eksemplet hér!) Da denne metode er den sidste, ser jeg ingen grund til at vise den for sig. I stedet præsenterer jeg - tadaaaah... [ Den samlede klasse ] Vejen hertil var lang, men her er det du kom for: <?php abstract class Paginator { private $tables; // (string) private $fields; // (string) private $where; // (string) private $orderby; // (string) private $cntperpage; // (int) Items per page private $key; // (string) The query string key for page navigation

7 private $page; // (int) Current page private $cntpages; // (int) Number of pages public function construct($tables, $fields, $where, $orderby, $cntperpage, $key = 'page') { if (intval($cntperpage) < 1) { die('illegal argument: cntperpage must be greater than zero.'); $this->tables = $tables; $this->fields = $fields; $this->where = empty($where)? '1=1' : $where; $this->orderby = $orderby; $this->cntperpage = intval($cntperpage); $this->key = $key; // Perform calculations to set cntpages and page... $sql = sprintf('select COUNT(*) FROM %s WHERE %s', $this->tables, $this->where); $res = mysql_query($sql); $cnt = mysql_result($res, 0); $this->cntpages = ceil($cnt / $this->cntperpage); $this->page = (isset($_get[$this->key]) && intval($_get[$this->key]) > 0? intval($_get[$this->key]) - 1 : 0); //?page=1 gives $this->page = 0 $this->page = max(0, min($this->page, $this->cntpages - 1)); // Never accept values greater than the number of pages public function renderitems() { $out = ''; $sql = sprintf('select %s FROM %s WHERE %s ORDER BY %s LIMIT %d, %d', $this->fields, $this->tables, $this->where, $this->orderby, $this->page * $this->cntperpage, $this->cntperpage); $res = mysql_query($sql); while ($row = mysql_fetch_assoc($res)) { $out.= $this->renderitem($row); // Calling the concrete implementation for each row return $out; public function rendernavigation($linkprefix = '', $cntaround = 1) { $out = ''; $isgap = false; $classes = ' '; for ($i = 0; $i < $this->cntpages; $i++) { $isgap = false; $classes = ''; $classes.= ($i == 0? 'seqfirst ' : ''); $classes.= ($i == $this->cntpages - 1? 'seqlast ' : ''); $classes.= ($i == $this->page? 'seqcurrent ' : '');

8 $classes.= ($i < $this->page? 'seqbefore ' : ''); $classes.= ($i > $this->page? 'seqafter ' : ''); // Are we at a gap? if ($cntaround >= 0 && $i > 0 && $i < $this->cntpages - 1 && abs($i - $this->page) > $cntaround) { $isgap = true; $classes.= 'seqgap '; // Skip to next linked item (or last if we've already run past the current page) $i = ($i < $this->page? $this->page - $cntaround : $this->cntpages - 1) - 1; $lnk = ($isgap? '...' : ($i + 1)); if ($i!= $this->page &&!$isgap) { $lnk = '<a href="'. $this->generatelinkurl($linkprefix, $this->key, $i + 1). '">'. $lnk. '</a>'; $out.= "\t<li class=\"". trim($classes). '">'. $lnk. "</li>\n"; return "<ul class=\"paginatornavigation\">\n". $out. '</ul>'; protected function generatelinkurl($linkprefix, $key, $page) { $var = (strpos($linkprefix, '?') === false? '?' : '&'). $key. '='. $page; return $linkprefix. ($page > 1? $var : ''); // Don't add page data if link goes to first page abstract protected function renderitem(&$row);?> [ Brugseksempel ] Du er nu veludrustet (!) til at realisere din egen Paginator. Jeg har gjort således: class PaginatedGuestbook extends Paginator { protected function renderitem(&$row) { $o = "\nindlæg fra ". $row['navn']. "<br />\n". "Overskrift: <em>". $row['overskrift']. "</em><br />\n"

9 . "Indhold: ". $row['indhold']. "<br />\n"; // Her kunne man udskrive flere data fra rækken ($row) return $o; $gb = new PaginatedGuestbook('gaestebog', 'tidspunkt, navn, overskrift, indhold', 'hidden=0 AND deleted=0', 'tidspunkt DESC', 5); print $gb->renderitems(); print "<br />\n\n"; print $gb->rendernavigation('minside.php'); Husk, at der næsten ikke er noget overarbejde. Du skulle alligevel have skrevet renderingskode. Eneste forskel er blot, at du nu skal pakke det ind i en på forhånd navngivet metode. Resten får du forærende! Simpelt? Anvendeligt? Jæs! Det er nu du begynder at vinde pengene tilbage! [ Afslutning ] Jeg håber, at du som læser har fået noget ud af artiklen. Den bliver noget længere end planlagt, men jeg håber så, at der måske har sneget sig et par fornuftige ord om objekt-orientering ind. Kopiér koden og se, om ikke den kan bruges i dit unikke tilfælde. Kunne du godt tænke dig at se, hvordan pagination-klassen opfører sig, så kig forbi (og skriv gerne en hilsen). Den benyttede CSS finder du på (der skal ledes lidt). Eventuelle fjel og wrangler bekagles. Med venlig hilsen - Jens Gram, PS: På kan du finde klassen JgPaginator, der er lige til at gå til uden copy-paste. PPS: Formateringsmulighederne på Eksperten lader stadig noget tilbage at ønske. På fremstår artiklen som jeg havde tiltænkt. Change log: 2009/01/13: Første version publiceret 2009/01/14: Beskrivelse af negativ cntaround-argument til rendernavigation 2009/03/07: Reformateret til E5 (ingen rettelser) Kommentar af superb d. 30. Jan nu jeg ret ny i OOP, hvorfor er det du siger $this->?

10 hvad gør "function construct" og hvad betyder det at noget er "erklæret abstrakt"? Kommentar af zurekk d. 23. Jan

Listen over reserverede ord er meget lang, men de væsentligste vil jeg beskrive her i denne artikel:

Listen over reserverede ord er meget lang, men de væsentligste vil jeg beskrive her i denne artikel: Denne guide er oprindeligt udgivet på Eksperten.dk SQL og ASP En artikel omkring simpel SQL og hvordan disse opbygges, udformes og udføres, sådan at man kan få et brugbart resultat i ASP. Dette ligefra

Læs mere

At klippe en streng over på det mest hensigtsmæssige sted

At klippe en streng over på det mest hensigtsmæssige sted Denne guide er oprindeligt udgivet på Eksperten.dk At klippe en streng over på det mest hensigtsmæssige sted Formålet med denne artikel er at kaste lidt lys over, hvordan man klipper en streng over på

Læs mere

Database for udviklere. Jan Lund Madsen PBS10107

Database for udviklere. Jan Lund Madsen PBS10107 Database for udviklere Jan Lund Madsen PBS10107 Indhold LINQ... 3 LINQ to SQL og Arkitektur... 3 O/R designere... 5 LINQ Den store introduktion med.net 3.5 er uden tvivl LINQ(udtales link): Language-INtegrated

Læs mere

PHP Pagination. Denne guide er oprindeligt udgivet på Eksperten.dk. Skrevet den 01. May 2011 af dab93 I kategorien Programmering / Andre

PHP Pagination. Denne guide er oprindeligt udgivet på Eksperten.dk. Skrevet den 01. May 2011 af dab93 I kategorien Programmering / Andre Denne guide er oprindeligt udgivet på Eksperten.dk PHP Pagination I denne guide lærer du om at lave et pagination system med programmerings sproget PHP og MySQL database. Et pagination system er en "side-skiftende"

Læs mere

Tagwall med Php & MySQL

Tagwall med Php & MySQL Denne guide er oprindeligt udgivet på Eksperten.dk Tagwall med Php & MySQL Her laver vi en tagwall i Php & MySQL... jeg forklarer dog ikke så meget, men jeg håber du kan få det til at blive til en tagwall

Læs mere

Anvendelse af metoder - Programmering

Anvendelse af metoder - Programmering Denne guide er oprindeligt udgivet på Eksperten.dk Anvendelse af metoder - Programmering En forhåbentlig rigtig god forklaring på hvad metoder er og hvordan de anvendes. Lidt om private og public, retur

Læs mere

Introduktion til SQL queries

Introduktion til SQL queries Denne guide er oprindeligt udgivet på Eksperten.dk Introduktion til SQL queries Denne artikel beskriver nogle forskellige muligheder i SQL queries. Eksemplerne skulle gerne være standard SQL og virke i

Læs mere

Ratingsystem i PHP og MySQL

Ratingsystem i PHP og MySQL Denne guide er oprindeligt udgivet på Eksperten.dk Ratingsystem i PHP og MySQL Lær at lave et system til at vise rating/bedømmelse på artikler og nyheder. Skrevet den 03. Feb 2009 af virtual1ty I kategorien

Læs mere

Løsning af møntproblemet

Løsning af møntproblemet Løsning af møntproblemet Keld Helsgaun RUC, oktober 1999 Antag at tilstandene i problemet (stillingerne) er repræsenteret ved objekter af klassen State. Vi kan da finde en kortest mulig løsning af problemet

Læs mere

Database design for begyndere

Database design for begyndere Denne guide er oprindeligt udgivet på Eksperten.dk Database design for begyndere Denne artikel beskriver hvordan man kommer fra ide til database design. Den stopper inden normal former. Den forudsætter

Læs mere

Gæstebog med validering opbygget med MySQL

Gæstebog med validering opbygget med MySQL Denne guide er oprindeligt udgivet på Eksperten.dk Gæstebog med validering opbygget med MySQL Dette er en simpel gæstebog, som kan hjælpe folk med at lave en velfungerende gæstebog uden alt for meget arbejde.

Læs mere

Introduktion til funktioner, moduler og scopes i Python

Introduktion til funktioner, moduler og scopes i Python Denne guide er oprindeligt udgivet på Eksperten.dk Introduktion til funktioner, moduler og scopes i Python Denne artikel er fortsættelsen af "I gang med Python", som blevet publiceret her på sitet for

Læs mere

I mit script tager jeg højde for det problem ved, at gemme et unikt tal mellem 0-9 på 6 cifre og derved vil de så blive vist som 2 online.

I mit script tager jeg højde for det problem ved, at gemme et unikt tal mellem 0-9 på 6 cifre og derved vil de så blive vist som 2 online. Denne guide er oprindeligt udgivet på Eksperten.dk Hvem er online? Online script, som tager højde for at der kan være flere personer, som har den samme IP-adresse. Scriptet viser hvor lang tid brugeren

Læs mere

MySQL C API. Denne artikel beskriver hvordan man bruger MySQL C API. Der er beskrivelse af build med forskellige compilere.

MySQL C API. Denne artikel beskriver hvordan man bruger MySQL C API. Der er beskrivelse af build med forskellige compilere. Denne guide er oprindeligt udgivet på Eksperten.dk MySQL C API Denne artikel beskriver hvordan man bruger MySQL C API. Der er beskrivelse af build med forskellige compilere. Den forudsætter lidt kendskab

Læs mere

I denne artikel vil vi bruge en User klasse som vi så vil gruppere på forskellige måder.

I denne artikel vil vi bruge en User klasse som vi så vil gruppere på forskellige måder. Denne guide er oprindeligt udgivet på Eksperten.dk Collections i.net Når du kigger i namespacet System.Collections finder du over 10 forskellige klasser. At vælge den rigtige til netop din applikations

Læs mere

I denne arktikle går jeg gennem Slet, Ret og Opret data i en MySQL database. der er også en lille del i den hvor den postere datanen ud i en løkke

I denne arktikle går jeg gennem Slet, Ret og Opret data i en MySQL database. der er også en lille del i den hvor den postere datanen ud i en løkke Denne guide er oprindeligt udgivet på Eksperten.dk MySQL for nybegynder I denne arktikle går jeg gennem Slet, Ret og Opret data i en MySQL database. der er også en lille del i den hvor den postere datanen

Læs mere

Loginsystem (med MySQL)

Loginsystem (med MySQL) Denne guide er oprindeligt udgivet på Eksperten.dk Loginsystem (med MySQL) Dette er en guide til, hvordan man kan lave et loginsystem med php og muligvis også med sessioner og MySQL Skrevet den 02. Feb

Læs mere

Singleton pattern i C#

Singleton pattern i C# Denne guide er oprindeligt udgivet på Eksperten.dk Singleton pattern i C# Denne artikel beskriver Singleton pattern og implementation i C#. Den forudsætter kendskab til C# men ikke til Singleton. Der er

Læs mere

Dynamisk PHP design OPDATERET

Dynamisk PHP design OPDATERET Denne guide er oprindeligt udgivet på Eksperten.dk Dynamisk PHP design OPDATERET I har måske undret jer over "http://bla.dk/?side=kontakt", her beskriver jeg hvordan, og hvorfor Skrevet den 03. Feb 2009

Læs mere

Indholdsfortegnelse Databaser og PHP... 3 Opgave... 4 Opgave... 5 Opgave... 6 Sidste opgave er en lille gæstebog... 7 Kilder og nyttige links:...

Indholdsfortegnelse Databaser og PHP... 3 Opgave... 4 Opgave... 5 Opgave... 6 Sidste opgave er en lille gæstebog... 7 Kilder og nyttige links:... Indholdsfortegnelse Databaser og PHP... 3 Opgave... 4 Opgave... 5 Opgave... 6 Sidste opgave er en lille gæstebog... 7 Kilder og nyttige links:... 9 Nogle HTML tags... 9 Databaser og PHP Når vi snakker

Læs mere

Som sagt kræves der helst lidt viden om OOP hvis man virkelig vil lærer noget, og ikke bare lave copypaste

Som sagt kræves der helst lidt viden om OOP hvis man virkelig vil lærer noget, og ikke bare lave copypaste Denne guide er oprindeligt udgivet på Eksperten.dk Indkøbsvogn i PHP I denne artikel vil jeg prøve at lave en indkøbskurv som let kan udvides, og som ikke er svær at forstå. Det er bedst med viden om OOP(klasser),

Læs mere

I denne artikel, vil der blive gennemgået de grundlæggende PHP-funktioner, såsom udskrift til skærmen, tid og dato og if-sætningen.

I denne artikel, vil der blive gennemgået de grundlæggende PHP-funktioner, såsom udskrift til skærmen, tid og dato og if-sætningen. Denne guide er oprindeligt udgivet på Eksperten.dk Grundlæggende PHP I denne artikel, vil der blive gennemgået de grundlæggende PHP-funktioner, såsom udskrift til skærmen, tid og dato og if-sætningen.

Læs mere

Arkitektur for begyndere

Arkitektur for begyndere Denne guide er oprindeligt udgivet på Eksperten.dk Arkitektur for begyndere Denne artikel beskriver forskellige basale n-tier arkitekturer. Som man bør kende og have valgt inden man går igang med at udvikle

Læs mere

Hvad er Objekter - Programmering

Hvad er Objekter - Programmering Denne guide er oprindeligt udgivet på Eksperten.dk Hvad er Objekter - Programmering En rigtig god gennemgang af hvad objekter er! Hvordan de oprettes og anvendes! Det er helt klart til nybegyndere, som

Læs mere

Bemærk! Et PHP script har kun brug for at forbinde én gang til databaseserveren. Det kan så sagtens udføre flere kommandoer vha. denne forbindelse.

Bemærk! Et PHP script har kun brug for at forbinde én gang til databaseserveren. Det kan så sagtens udføre flere kommandoer vha. denne forbindelse. Mysqli Webintegrator Når vi arbejder med server-side scripting ( i vort tilfælde PHP), har vi ofte behov for at kunne tilgå data, som vi opbevarer i en database. Det kan f.eks. dreje sig om nyhederne i

Læs mere

PHP Snippets. De små korte. Skrevet af Daniel Pedersen

PHP Snippets. De små korte. Skrevet af Daniel Pedersen 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

Læs mere

Kontrol-strukturer i PHP

Kontrol-strukturer i PHP Denne guide er oprindeligt udgivet på Eksperten.dk Kontrol-strukturer i PHP Denne artikel gennemgår kontrolstrukturer i PHP. 'if', 'switch', 'while' og 'for' bliver gennemgået. Den forudsætter lidt grundlæggende

Læs mere

Databaseadgang fra Java

Databaseadgang fra Java Databaseadgang fra Java Grundlæggende Programmering med Projekt Peter Sestoft Fredag 2007-11-23 Relationsdatabasesystemer Der er mange databaseservere Microsoft Access del af Microsoft Office MySQL god,

Læs mere

DANMARKS TEKNISKE UNIVERSITET

DANMARKS TEKNISKE UNIVERSITET DANMARKS TEKNISKE UNIVERSITET Skriftlig prøve, 14. december 2018, 4 timer Side 1 af 18 Kursus navn: 02101 Indledende Programmering Kursus : 02101 Tilladte hjælpemidler: Ikke-digitale skriftlige hjælpemidler

Læs mere

Skriftlig eksamen i Datalogi

Skriftlig eksamen i Datalogi Roskilde Universitetscenter Skriftlig eksamen i Datalogi Modul 1 Sommer 1999 Opgavesættet består af 5 opgaver, der ved bedømmelsen tillægges følgende vægte: Opgave 1 15% Opgave 2 15% Opgave 3 8% Opgave

Læs mere

Den forudsætter kendskab til C++ og lidt kendskab til SQL og MySQL C API.

Den forudsætter kendskab til C++ og lidt kendskab til SQL og MySQL C API. Denne guide er oprindeligt udgivet på Eksperten.dk Brug af MySQL i C++ Denne artikel bygger ovenpå artiklen "MySQL C API" og forklarer hvordan man kan programmere mere objekt orienteret. Den forudsætter

Læs mere

PHP 3 UGERS FORLØB PHP, MYSQL & SQL

PHP 3 UGERS FORLØB PHP, MYSQL & SQL PHP 3 UGERS FORLØB PHP, MYSQL & SQL Uge 1 & 2 Det basale: Det primære mål efter uge 1 og 2, er at få forståelse for hvordan AMP miljøet fungerer i praksis, og hvordan man bruger PHP kodesproget til at

Læs mere

Eksamen, DSDS, efterår 2007

Eksamen, DSDS, efterår 2007 Eksamen, DSDS, efterår 2007 Introduktion til Scripting, Databaser og Systemarkitektur Jonas Holbech og Martin Elsman IT Universitetet i København 7. januar 2008 Alle hjælpemidler er tilladte, dog ikke

Læs mere

Samspillet mellem databaser og kort styres af GeoCAD programmet GeoDB.

Samspillet mellem databaser og kort styres af GeoCAD programmet GeoDB. GeoCad modul GeoDB I GeoCAD er det muligt at koble relationsdatabase til GeoEDIT. Her igennem er det muligt at lagre forskellige oplysninger i databasen og koble disse oplysninger til objekter i kortet.

Læs mere

Skriftlig eksamen i Datalogi

Skriftlig eksamen i Datalogi Roskilde Universitetscenter side 1 af 9 sider Skriftlig eksamen i Datalogi Modul 1 Vinter 1999/2000 Opgavesættet består af 6 opgaver, der ved bedømmelsen tillægges følgende vægte: Opgave 1 5% Opgave 2

Læs mere

Terese B. Thomsen 1.semester Formidling, projektarbejde og webdesign ITU DMD d. 02/11-2012

Terese B. Thomsen 1.semester Formidling, projektarbejde og webdesign ITU DMD d. 02/11-2012 Server side Programming Wedesign Forelæsning #8 Recap PHP 1. Development Concept Design Coding Testing 2. Social Media Sharing, Images, Videos, Location etc Integrates with your websites 3. Widgets extend

Læs mere

Prepared Statements. Denne artikel beskriver hvorfor prepared statements er gode. Den forudsætter lidt kendskab til Java og JDBC.

Prepared Statements. Denne artikel beskriver hvorfor prepared statements er gode. Den forudsætter lidt kendskab til Java og JDBC. Denne guide er oprindeligt udgivet på Eksperten.dk Prepared Statements Denne artikel beskriver hvorfor prepared statements er gode. Den forudsætter lidt kendskab til Java og JDBC. Skrevet den 18. Feb 2010

Læs mere

//Udskriver System.out.println("Hej " + ditfornavn + " " + ditefternavn + "."); System.out.println("Du er " + dinalder + " aar gammel!

//Udskriver System.out.println(Hej  + ditfornavn +   + ditefternavn + .); System.out.println(Du er  + dinalder +  aar gammel! Denne guide er oprindeligt udgivet på Eksperten.dk Brugerinput i Java Denne her artikel gennemgår diverse ting ved brug af brugerinput i Java. Den starter med det simple og fortæller derefter skridt for

Læs mere

Løsning af skyline-problemet

Løsning af skyline-problemet Løsning af skyline-problemet Keld Helsgaun RUC, oktober 1999 Efter at have overvejet problemet en stund er min første indskydelse, at jeg kan opnå en løsning ved at tilføje en bygning til den aktuelle

Læs mere

dmasark Aflevering - Uge 50

dmasark Aflevering - Uge 50 dmasark Aflevering - Uge 50 Michael Lind Mortensen, 20071202, DAT4 Michael Dahl, 20073943, DAT4 Katalog: http://www.daimi.au.dk/ u073943/dmasark/uge6/ 13. december 2007 Indhold 1 PingClient implementation

Læs mere

PROJEKT 3. The Design Diaries. LINK TIL BLOG: Af Mikkel Borg Svendsen & Sebastian Frank MUL B

PROJEKT 3. The Design Diaries. LINK TIL BLOG:  Af Mikkel Borg Svendsen & Sebastian Frank MUL B PROJEKT 3 The Design Diaries LINK TIL BLOG: http://mbsgraphic.dk/blog/ Af Mikkel Borg Svendsen & Sebastian Frank MUL B 1 INDHOLDS- FORTEGNELSE HVEM ER BLOGGERNE? 3 USE CASE 4 ATTRIBUT TABEL 5 PHP CODE

Læs mere

Undtagelseshåndtering i C#

Undtagelseshåndtering i C# Denne guide er oprindeligt udgivet på Eksperten.dk Undtagelseshåndtering i C# I modsætning til C++ kan man i C# ikke skrive et program uden undtagelseshåndtering, så derfor har jeg skrevet denne guide

Læs mere

Reeksamen, DSDS, forår 2008

Reeksamen, DSDS, forår 2008 Reeksamen, DSDS, forår 2008 Introduktion til Scripting, Databaser og Systemarkitektur Jonas Holbech IT Universitetet i København 22. august 2008 Alle hjælpemidler er tilladte, dog ikke computer og kommunikationsmidler.

Læs mere

Denne artikel er til dem der ønsker at vide mere om hvad CSS er og hvad CSS kan bruges til hvad angår WWW.

Denne artikel er til dem der ønsker at vide mere om hvad CSS er og hvad CSS kan bruges til hvad angår WWW. Denne guide er oprindeligt udgivet på Eksperten.dk CSS - en gennemgang Denne artikel er til dem der ønsker at vide mere om hvad CSS er og hvad CSS kan bruges til hvad angår WWW. Der er lidt CSS historie

Læs mere

RMI introduktion. Denne artikel beskriver Java RMI (Remtote Method Invocation).

RMI introduktion. Denne artikel beskriver Java RMI (Remtote Method Invocation). Denne guide er oprindeligt udgivet på Eksperten.dk RMI introduktion Denne artikel beskriver Java RMI (Remtote Method Invocation). Den beskriver teorien bag RMI, viser et simpelt kode eksempel og forklarer

Læs mere

Øvelse 9. Klasser, objekter og sql-tabeller insert code here

Øvelse 9. Klasser, objekter og sql-tabeller insert code here Øvelse 9. Klasser, objekter og sql-tabeller Denne opgave handler om hvordan man opbevarer data fra databasekald på en struktureret måde. Den skal samtidig give jer erfaringer med objekter, der kommer til

Læs mere

Arrays i PHP. Denne guide er oprindeligt udgivet på Eksperten.dk. Skrevet den 04. Feb 2009 af taskmgr I kategorien Programmering / PHP

Arrays i PHP. Denne guide er oprindeligt udgivet på Eksperten.dk. Skrevet den 04. Feb 2009 af taskmgr I kategorien Programmering / PHP Denne guide er oprindeligt udgivet på Eksperten.dk Arrays i PHP De fleste som har skrevet omfattende scripts, er før eller siden stødt på problemet med at de bliver vanskelige at overskue hvis man bruger

Læs mere

Databasesystemer. Databaser, efterår Troels Andreasen. Efterår 2002

Databasesystemer. Databaser, efterår Troels Andreasen. Efterår 2002 Databaser, efterår 2002 Databasesystemer Troels Andreasen Datalogiafdelingen, hus 42.1 Roskilde Universitetscenter Universitetsvej 1 Postboks 260 4000 Roskilde Telefon: 4674 2000 Fax: 4674 3072 www.dat.ruc.dk

Læs mere

Log ind med PHP. Denne guide er oprindeligt udgivet på Eksperten.dk. Skrevet den 09. May 2011 af dab93 I kategorien Programmering / Andre

Log ind med PHP. Denne guide er oprindeligt udgivet på Eksperten.dk. Skrevet den 09. May 2011 af dab93 I kategorien Programmering / Andre Denne guide er oprindeligt udgivet på Eksperten.dk Log ind med PHP Med denne guide lærer du hvordan du kan logge ind på din hjemmeside med PHP. Guiden viser dig hvordan koderne skal opstilles, og hvad

Læs mere

I denne artikel vil jeg gennemgå hvordan en side for RSS "Live Bogmærke" kan se ud.

I denne artikel vil jeg gennemgå hvordan en side for RSS Live Bogmærke kan se ud. Denne guide er oprindeligt udgivet på Eksperten.dk RSS "Live Bogmærke" I denne artikel vil jeg gennemgå hvordan en side for RSS "Live Bogmærke" kan se ud. Skrevet den 10. Feb 2009 af madsass I kategorien

Læs mere

Dannelse af PDF-dokumenter

Dannelse af PDF-dokumenter Dannelse af PDF-dokumenter Indhold Generere PDF-dokumenter... 2 Håndtering af PDF-dokumentet... 8 Hvordan indsætter man sidetal i PDF-dokumentet?... 8 Hvordan laver man bookmarks i PDF-dokumentet?... 8

Læs mere

Loginsystem med PHP4, klasser, sessions og MySQL database

Loginsystem med PHP4, klasser, sessions og MySQL database Denne guide er oprindeligt udgivet på Eksperten.dk Loginsystem med PHP4, klasser, sessions og MySQL database Artiklen indeholder et simpelt loginsystem, der benytter en klasse. Den er med vilje simplificeret,

Læs mere

Målet for disse slides er at diskutere nogle metoder til at gemme og hente data effektivt.

Målet for disse slides er at diskutere nogle metoder til at gemme og hente data effektivt. Merging og hashing Mål Målet for disse slides er at diskutere nogle metoder til at gemme og hente data effektivt. Dette emne er et uddrag af kurset DM507 Algoritmer og datastrukturer (2. semester). Mål

Læs mere

Singleton pattern i Java

Singleton pattern i Java Denne guide er oprindeligt udgivet på Eksperten.dk Singleton pattern i Java Denne artikel beskriver Singleton pattern og implementation i Java. Den forudsætter kendskab til Java men ikke til Singleton.

Læs mere

SWC Elementer i klassedefinition

SWC Elementer i klassedefinition SWC Elementer i klassedefinition Indhold Eksempel... 2 Karakteristika for en klasse... 3 Karakteristika for et instance field... 4 Karakteristika for en constructor... 5 Karakteristika for en property...

Læs mere

Skrevet den 18. Feb 2010 af arne_v I kategorien Programmering / Visual Basic.NET

Skrevet den 18. Feb 2010 af arne_v I kategorien Programmering / Visual Basic.NET Denne guide er oprindeligt udgivet på Eksperten.dk Parameters Denne artikel beskriver hvorfor parameters er gode. Den forudsætter lidt kendskab til VB.NET og ADO.NET. Der findes en tilsvarende artikel

Læs mere

METODER ARV KLASSER. Grundlæggende programmering Lektion 5

METODER ARV KLASSER. Grundlæggende programmering Lektion 5 METODER KLASSER ARV Grundlæggende programmering Lektion 5 1 METODER Sekvenser af kode om samme emne 2 REPETITION Række af statements der udfører en handling Mindst én metode der hedder main Forskellen

Læs mere

b) Udvid din implementation af forme til at understøtte.equals. To objekter af samme form er ens hvis de har samme værdier i felterne.

b) Udvid din implementation af forme til at understøtte.equals. To objekter af samme form er ens hvis de har samme værdier i felterne. Exercise 1: Opgave 9.1 på CodeJudge. a) Lav klasserne Cirkel, Rektangel og Kvadrat, som implementerer vedhæftede interface From.java (se CodeJudge). Lav Rektangel før du laver Kvadrat. Kan du bruge nedarvning

Læs mere

Ugeseddel 4 1. marts - 8. marts

Ugeseddel 4 1. marts - 8. marts Ugeseddel 4 1. marts - 8. marts Læs følgende sider i kapitel 6 i lærebogen: s. 233 258 og s. 291 317 (afsnit 6.3 overspringes). Begynd at overveje, hvad afleveringsopgaven skal omhandle. Læs vejledningen,

Læs mere

Derfor vil jeg bygge dette eksempel på een table hvor der kan tilkyttes personer til ALLE noder og der kan tilføjes et vilkårligt antal niveauer

Derfor vil jeg bygge dette eksempel på een table hvor der kan tilkyttes personer til ALLE noder og der kan tilføjes et vilkårligt antal niveauer Denne guide er oprindeligt udgivet på Eksperten.dk TreeView i Access II Jeg vil i denne anden udgave af treeview føljetonen begynde på et mere brugbart eksempel med et TreeView. Vi laver en ny database

Læs mere

Lær Python - Dag 4, modul 2 Objektorienteret programmering

Lær Python - Dag 4, modul 2 Objektorienteret programmering Lær Python - Dag 4, modul 2 Objektorienteret programmering Simon J. Larsen 28. oktober 2017 Institut for Matematik og Datalogi Metoder Metoder Indtil videre har vi kun brugt objekter til at gemme værdier.

Læs mere

Aftenskole i programmering sæson Flere registreringer. Sæson 2 - Lektion 8

Aftenskole i programmering sæson Flere registreringer. Sæson 2 - Lektion 8 Flere registreringer Sæson 2 - Lektion 8 I sidste uge Vi så hvordan vi kan navigere med en UINavigationController Vi så hvordan vi lavede nogle hjælpe klasser med funktioner vi skulle bruge flere steder

Læs mere

Denne artikel gennemgår kort nogle mulighederne for brug af XML i ASP. Det sker ved brug af eksempler. Eksemplerne vil være i VBS.

Denne artikel gennemgår kort nogle mulighederne for brug af XML i ASP. Det sker ved brug af eksempler. Eksemplerne vil være i VBS. Denne guide er oprindeligt udgivet på Eksperten.dk XML i ASP Denne artikel gennemgår kort nogle mulighederne for brug af XML i ASP. Det sker ved brug af eksempler. Eksemplerne vil være i VBS. Den forudsætter

Læs mere

Umbraco installationsvejledning

Umbraco installationsvejledning på et ScanNet ASP Webhotel Indledning Beskrivelse Denne vejledning vil indeholde installation af CMS systemet Umbraco på et ASP Webhotel. Det dansk grundlagt Content Management System (CMS) Umbraco er

Læs mere

Med register_globals = On får du automatisk adgang til en række variabelnavne i dit script.

Med register_globals = On får du automatisk adgang til en række variabelnavne i dit script. Denne guide er oprindeligt udgivet på Eksperten.dk Register Globals Off Lad os slå en ting fast med det samme - register_globals = Off er en god ting, i hvert fald set ud fra et sikkerhedsmæssigt synspunkt.

Læs mere

Uploade billeder eller andre filer ved hjælp af php og mysql

Uploade billeder eller andre filer ved hjælp af php og mysql Denne guide er oprindeligt udgivet på Eksperten.dk Uploade billeder eller andre filer ved hjælp af php og mysql Denne artikel viser hvordan man kan uploade et billede eller en anden fil, og tilknytte det

Læs mere

PID2000 Archive Service

PID2000 Archive Service PROLON CONTROL SYSTEMS Herstedvesterstræde 56 DK-2620 Albertslund Danmark Tlf.: (+45) 43620625 Fax: (+45) 43623125 PID2000 Archive Service Bruger vejledning Juni 2002 Denne manual beskriver brugen af softwaren

Læs mere

HTML, PHP, SQL, webserver, hvad er hvad??

HTML, PHP, SQL, webserver, hvad er hvad?? Dagens menu HTML og PHP: Baglæs fra output til input PHP: Variable, strenge og arrays Funktioner, oprettelse og kald (og variable på tværs af funktioner) echo vs return? if-else konstruktioner MySQL: Hvad

Læs mere

Introduktion til OPC Access

Introduktion til OPC Access Introduktion til OPC Access OPC Access anvendes til at kommunikere med jeres produktionsudstyr via OPC. OPC Access kombinerer en SQL Server med OPC, således at jeres produktionsudstyr kobles sammen med

Læs mere

Nintex Workflow UK/DK

Nintex Workflow UK/DK Nintex Workflow UK/DK Når Nintex Workflows anvendes i et Dansk sproget SharePoint miljø, er der lidt forskel på hvad de forskellige elementer kaldes, såvel som rækkefølgen på disse. Noget er oversat, noget

Læs mere

Begrænsninger i SQL. Databaser, efterår 2002. Troels Andreasen

Begrænsninger i SQL. Databaser, efterår 2002. Troels Andreasen Databaser, efterår 2002 Begrænsninger i SQL Troels Andreasen Datalogiafdelingen, hus 42.1 Roskilde Universitetscenter Universitetsvej 1 Postboks 260 4000 Roskilde Telefon: 4674 2000 Fax: 4674 3072 www.dat.ruc.dk

Læs mere

The Design Diaries. Link til blog

The Design Diaries. Link til blog The Design Diaries Link til blog www.alexklug.dk/blog/index.php Alexander Nicholas Klug Rasmussen cph-ar162@cphbusiness.dk www.alexklug.dk Melissa Pietrykoski cph-mp328@cphbusiness.dk www.melissapietrykoski.dk

Læs mere

Greenfoot En kort introduktion til Programmering og Objekt-Orientering

Greenfoot En kort introduktion til Programmering og Objekt-Orientering Greenfoot En kort introduktion til Programmering og Objekt-Orientering Greenfoot er et computer-program, som kan benyttes til at skrive andre computer-programmer, i et programmeringssprog kaldet Java.

Læs mere

Endnu mere om tilfældige tal

Endnu mere om tilfældige tal Denne guide er oprindeligt udgivet på Eksperten.dk Endnu mere om tilfældige tal Denne artikel bygger oven på de to forrige artikler om tilfældige tal. Den indeholder lidt matematik og anvendelse på PHP

Læs mere

Introduction til.net remoting i C#

Introduction til.net remoting i C# Denne guide er oprindeligt udgivet på Eksperten.dk Introduction til.net remoting i C# Denne artikel beskriver teorien bag.net remoting og viser nogle simple kode eksempler i C#. Den forudsætter kendskab

Læs mere

applikation----x----odbc driver manager----foobar ODBC driver----foobar database

applikation----x----odbc driver manager----foobar ODBC driver----foobar database Denne guide er oprindeligt udgivet på Eksperten.dk ODBC i C/C++ Denne artikel beskriver hvordan man bruger ODBC i C/C++. Der er beskrivelse af build med forskellige compilere. Den forudsætter lidt kendskab

Læs mere

SQL for MySQL-begyndere

SQL for MySQL-begyndere Denne guide er oprindeligt udgivet på Eksperten.dk SQL for MySQL-begyndere I denne artikel vil jeg prøve at beskrive MySQL på begynderniveau. SQL står for Structured Query Language, og er et sprog til

Læs mere

POST IT! Cph Business Academy Multimediedesign 2. Semester flow april Kirstine Marie Rasmussen cph-

POST IT! Cph Business Academy Multimediedesign 2. Semester flow april Kirstine Marie Rasmussen cph- POST IT! Cph Business Academy Multimediedesign 2. Semester flow 3 9. april 2017 Kirstine Marie Rasmussen cph- kr141@cphbusiness.dk Mette Bejder cph- mb458@cphbusiness.dk Link til POST IT http://mbejder.dk/post-

Læs mere

Dannelse af PDF dokumenter

Dannelse af PDF dokumenter Dannelse af PDF dokumenter Indhold Dannelse af PDF-dokumenter i Phd Planner... 2 Valg af vedhæftninger i PDF dokumentet... 2 Valg af skabelon for PDF dokumentet... 3 Når PDF filen er dannet... 5 Gem PDF

Læs mere

Parameters. Denne artikel beskriver hvorfor parameters er gode. Den forudsætter lidt kendskab til C# og ADO.NET.

Parameters. Denne artikel beskriver hvorfor parameters er gode. Den forudsætter lidt kendskab til C# og ADO.NET. Denne guide er oprindeligt udgivet på Eksperten.dk Parameters Denne artikel beskriver hvorfor parameters er gode. Den forudsætter lidt kendskab til C# og ADO.NET. Der findes en tilsvarende artikel med

Læs mere

Send fra Java. Denne artikel fortæller hvad man skal bruge og hvordan man skal kode for at sende fra Java.

Send  fra Java. Denne artikel fortæller hvad man skal bruge og hvordan man skal kode for at sende  fra Java. Denne guide er oprindeligt udgivet på Eksperten.dk Send email fra Java Denne artikel fortæller hvad man skal bruge og hvordan man skal kode for at sende email fra Java. Simple eksempler ikke noget vildt

Læs mere

Introduktion til redigeringsfaciliteterne

Introduktion til redigeringsfaciliteterne Sitecore Foundry 3.0 Introduktion til redigeringsfaciliteterne 25. april 2012 - Version 1.2 Pentia A/S Store Kongensgade 66, Baghuset 1264 København K Telefon: 7023 3330 E-mail: info@foreningssite.dk Indholdsfortegnelse

Læs mere

Grundlæggende Programmering ITU, Efterår 1999. Skriftlig eksamen i Grundlæggende Programmering

Grundlæggende Programmering ITU, Efterår 1999. Skriftlig eksamen i Grundlæggende Programmering Skriftlig eksamen i Grundlæggende Programmering ITU, 20. januar 2000 Alle hjælpemidler tilladt, dog ikke datamat. Eksamen er skriftlig, fire timer, og bedømmes efter 13-skalaen. Opgavesættet består af

Læs mere

JSP, Tomcat. Tutorial lavet af Jákup W. Hansen TSU semester 10.october 2007

JSP, Tomcat. Tutorial lavet af Jákup W. Hansen TSU semester 10.october 2007 JSP, Tomcat Tutorial lavet af Jákup W. Hansen TSU 2006 3.semester 10.october 2007 Hvad er JSP(Java Server Pages): Det er en teknik som er bygget ovenover Servlets teknikken, men fidusen er at det skal

Læs mere

DM507 Algoritmer og datastrukturer

DM507 Algoritmer og datastrukturer DM507 Algoritmer og datastrukturer Forår 2013 Projekt, del I Institut for matematik og datalogi Syddansk Universitet 5. marts, 2013 Dette projekt udleveres i to dele. Hver del har sin deadline, således

Læs mere

Tree klassen fra sidste forelæsning

Tree klassen fra sidste forelæsning Programmering 1999 Forelæsning 12, fredag 8. oktober 1999 Oversigt Abstrakte klasser. Grænseflader. Programmering 1999 KVL Side 12-1 Tree klassen fra sidste forelæsning class Tree { int age; // in years

Læs mere

Videregående Programmering Obligatorisk opgave - 3. semester, efterår 2004

Videregående Programmering Obligatorisk opgave - 3. semester, efterår 2004 Overvågningssystem Beskrivelse Bagagesorteringssystemet består af et antal skranker (check-in) til modtagelse og registrering af bagage, et automatiseret sorteringsanlæg samt et antal terminaler (gates),

Læs mere

It og informationssøgning Forelæsning oktober 2006 Jakob Grue Simonsen. Klasser

It og informationssøgning Forelæsning oktober 2006 Jakob Grue Simonsen. Klasser It og informationssøgning Forelæsning 7 25. oktober 2006 Jakob Grue Simonsen Klasser Downey, Elkner & Meyers: Chapt. 12-14 Andersen & Simonsen: kap. 7 Vi har tidligere set, at Python tilbyder en række

Læs mere

AAU, Programmering i Java Intern skriftlig prøve 18. maj 2007

AAU, Programmering i Java Intern skriftlig prøve 18. maj 2007 AAU, Programmering i Java Intern skriftlig prøve 18. maj 2007 Opgavebesvarelsen skal afleveres som enten en printerudskrift eller som et passende dokument sendt via email til fjj@noea.dk. Besvarelsen skal

Læs mere

Klasser og Objekter i Python. Uge 46 Learning Python: kap 15-16, 19-22.

Klasser og Objekter i Python. Uge 46 Learning Python: kap 15-16, 19-22. Klasser og Objekter i Python Uge 46 Learning Python: kap 15-16, 19-22. Klasser og objekter En klasse beskriver en klump af samhørende funktioner og variable En klasse er en beskrivelse. En kage form Klassens

Læs mere

De vigtigste SQL-sætninger. SQL kap Oprette database. DDL og DML

De vigtigste SQL-sætninger. SQL kap Oprette database. DDL og DML SQL kap 6-7 + 17-20 DDL og DML 1 De vigtigste SQL-sætninger Data Definition Language (DDL) create table: opretter en ny tabel create unique index: tilføjer et index til en tabel drop table : sletter en

Læs mere

class subklasse-navn extends superklasse-navn { } NorwaySpruce har superklassen Spruce, som igen har superklassen Tree.

class subklasse-navn extends superklasse-navn { } NorwaySpruce har superklassen Spruce, som igen har superklassen Tree. Programmering 1999 Forelæsning 11, tirsdag 5. oktober 1999 Oversigt Klasse-hierarkier: superklasser og subklasser Nedarvning Polymorfi Programmering 1999 KVL Side 11-1 Hierarkier En klasse repræsenterer

Læs mere

Eksempel på en database: studenter, kurser, eksamener

Eksempel på en database: studenter, kurser, eksamener Udvidet Programmering 1999 Forelæsning 20, fredag 12. november 1999 Relationsdatabaser: relationer, tupler, attributter Forespørgselssproget SQL Databasesystemet PostgreSQL Tilgang til relationsdatabaser

Læs mere

Forelæsning Uge 2 Torsdag

Forelæsning Uge 2 Torsdag Forelæsning Uge 2 Torsdag Niveauer af programbeskrivelser Statiske / dynamiske beskrivelser Klassevariabler og klassemetoder Variabler og metoder der et tilknyttet klassen (i stedet for at være tilknyttet

Læs mere

Algoritmeskabeloner: Sweep- og søgealgoritmer C#-version

Algoritmeskabeloner: Sweep- og søgealgoritmer C#-version Note til Programmeringsteknologi Akademiuddannelsen i Informationsteknologi Algoritmeskabeloner: Sweep- og søgealgoritmer C#-version Finn Nordbjerg 1/9 Indledning I det følgende introduceres et par abstrakte

Læs mere

Begrynder til at lave log ind system

Begrynder til at lave log ind system Denne guide er oprindeligt udgivet på Eksperten.dk Begrynder til at lave log ind system Hej Vil jeg gerne lave en lille programmering forklare til hvordan du laver din helt egen lille start på at log ind

Læs mere

Introduction til.net remoting i VB.NET

Introduction til.net remoting i VB.NET Denne guide er oprindeligt udgivet på Eksperten.dk Introduction til.net remoting i VB.NET Denne artikel beskriver teorien bag.net remoting og viser nogle simple kode eksempler i VB.NET. Den forudsætter

Læs mere

Mozilla Firefox (tidligere Firebird): Fremhæve ord

Mozilla Firefox (tidligere Firebird): Fremhæve ord Denne guide er oprindeligt udgivet på Eksperten.dk Mozilla Firefox (tidligere Firebird): Fremhæve ord Du kender sikkert Google Værktøjslinjen til Internet Explorer, ellers har du sikkert hørt om den. I

Læs mere

A11: Last Year s Exam

A11: Last Year s Exam A11: Last Year s Exam Agenda Design of Site map and Web- structure (3) Design of data model (1) Design of database transactions (2) Construction of HTML and PHP scripts (3) Exercise 3: Design of Site map

Læs mere

Lektion 6. Grundlæggende programmering i VR

Lektion 6. Grundlæggende programmering i VR Lektion 6 Grundlæggende programmering i VR Plan for i dag Simpelt FPS Triggerzones og animationer C# og objekt orienteret programmering Interfaces Generics Google Cardboard Video om VRs fremtid App til

Læs mere