OPPITUNTI 24 Esimerkki (Osa 2)
|
|
- Raimo Korhonen
- 6 vuotta sitten
- Katselukertoja:
Transkriptio
1 24. Esimerkki (Osa 2) 429 OPPITUNTI 24 Esimerkki (Osa 2) Luvussa 23, "Esimerkki (Osa 1)" rakensimme ympäristön, joka sallii käyttäjien kirjoittautua palveluun ja lisätä kerho- ja tapahtumatiedot järjestelmään. Nyt voimme luoda skriptejä, jotka ovat välttämättömiä, jotta tavallinen käyttäjä voisi selata järjestelmän tietoja. Tämän tunnin aiheita ovat: Kuinka luodaan funktioita, jotka erottavat tietoa useista tauluista yhdellä kyselyllä Kuinka luodaan funktioita, jotka muuttavat SQL-kyselyn rakennetta vietyjen parametrien mukaan Kuinka tallennetaan hakuasetuksia, joita istuntofunktiot käyttävät Kuinka valmistetaan puhdas tekstitieto esitettäväksi HTML-ympäristössä
2 Esimerkki (Osa 2) Tapahtumapäiväkirjan julkiset näkymät Nyt kun jäsenet voivat rekisteröidä kerhonsa ja tapahtumansa tietokantaamme, voimme rakentaa näkymiä, joiden kautta tavalliset käyttäjät voivat ottaa esille tuota informaatiota. Nämä näkymät antavat käyttäjälle mahdollisuuden selata tietoja hakemisen sijaan, vaikkakin tuon lisäominaisuuden laittaminen mukaan ei olisi lainkaan vaikeaa. Tässä jaksossa rakennamme näytöt, joiden kautta käyttäjä voi nähdä listauksia, jotka vastaavat hänen aluettaan tai kiinnostuksen kohdettaan halutun kuukauden kohdalla. viewevents.php Tämä viewevents.php-näkymä antaa käyttäjälle mahdollisuuden selata annettuja tapahtumia. Se on samanlainen kuin reviewevents.php-näkymä, jota käsittelimme edellisellä tunnillamme, mutta antaa käyttäjälle kuitenkin enemmän mahdollisuuksia ja joustavuutta. Se ei kuitenkaan salli tiedon muuttamista. Tämän tiedoston koodi on listauksessa Listaus 24.1 viewevents.php 1: <?php 2: include("dblib.inc"); 3: include("date.inc"); 4: include("clublib.inc"); 5: 6: if ( isset($actionflag) && $actionflag == "showevents" ) 7: $session[viewevents] = $form; 8: elseif ( $session[viewevents] ) 9: $form = $session[viewevents]; 10: else 11: { 12: $d_array = getdate( time() ); 13: $session[viewevents][area] = "ANY"; 14: $session[viewevents][type] = "ANY"; 15: $session[viewevents][months] = $d_array[mon]; 16: $session[viewevents][years] = $d_array[year]; 17: } 18: 19: $range = getdaterange( $session[viewevents][months], 20: $session[viewevents][years] ); 21: function displayevents( ) 22: {
3 24. Esimerkki (Osa 2) : global $range, $session; 24: 25: $events = getevents( 0, $range, $session[viewevents][area], 26: $session[viewevents][type] ); 27: if (! $events ) 28: 29: print "No events yet for this combination<p>"; 30: return; 31: } 32: print "<table border=1>\n"; 33: print "<td><b>date</b></td>\n"; 34: print "<td><b>event</b></td>\n"; 35: print "<td><b>club</b></td>\n"; 36: print "<td><b>area</b></td>\n"; 37: print "<td><b>type</b></td>\n"; 38: foreach ( $events as $row ) 39: { 40: print "<tr>\n"; 41: print "<td>".date("j M Y H.i", $row[edate])."</td>\n"; 42: print "<td><a href=\"viewevent.php?event_id=$row[id]&".sid."\">". 43: html($row[ename])."</a></td>\n"; 44: print "<td><a href=\"viewclub.php?club_id=$row[eclub]&".sid."\">". 45: html($row[name])."</a></td>\n"; 46: print "<td>$row[areaname]</td>\n"; 47: print "<td>$row[typename]</td>\n"; 48: print "</tr>\n"; 49: } 50: print "</table>\n"; 51: } 52:?> 53: 54: <html> 55: <head>
4 Esimerkki (Osa 2) 56: <title>view events</title> 57: </head> 58: <body> 59: <?php 60: include("publicnav.inc"); 61:?> 62: <h1>view Events</h1> 63: <p> 64: <form action="<?php print $PHP_SELF;?>"> 65: <input type="hidden" name="actionflag" value="showevents"> 66: <input type="hidden" name="<?php print session_name()?>" 67: value="<?php print session_id()?>"> 68: <select name=form[months]> 69: <?php writemonthoptions( $range[0] );?> 70: </select> 71: 72: <select name=form[years]> 73: <?php writeyearoptions( $range[0] );?> 74: </select> 75: 76: <select name=form[area]> 77: <option value="any">any Area 78: <?php writeoptionlist( "areas", $form[area] )?> 79: </select> 80: 81: <select name=form[type]> 82: <option value="any">any type of event 83: <?php writeoptionlist( "types", $form[type] )?> 84: </select> 85: 86: <input type = "submit" value="change"> 87: </form> 88: </p>
5 24. Esimerkki (Osa 2) : 90: <?php 91: displayevents( ); 92:?> 93: 94: </body> 95: </html> Aloitamme koodin sisällyttämällä kirjastotiedostot dblib.inc, date.inc ja clublib.inc. Saamme näin pääsyn tiedostojen funktioihin. Lisäksi tiedostojen dblib.inc ja clublib.inc lisääminen takaa, että avaamme tietokantayhteyden ja käynnistämme istunnon. Sen jälkeen tarkistamme, onko käyttäjä lähettänyt lomakkeen sivulle, testaamalla muuttujaa nimeltä $actionflag. Vastaava kenttä (actionflag) on upotettu piilomuuttujana sivun lomakkeelle. Jos käyttäjä on lähettänyt lomakkeen, hänen valintansa tulee ohittaa aiemmin tallennetut asetukset. Edellisellä tunnilla näit, kuinka rekisteröimme assosiatiivisen taulukkomuuttujan käyttäjän istunnon kanssa tallentaaksemme kirjautumistiedot. Tällä tunnilla lisäämme samaan taulukkoon uusia elementtejä, jotka pitävät yllä käyttäjän asetuksia. Muuttuja $session rekisteröitiin käyttäjän istunnon kanssa, kun laitoimme mukaan clublib.phptiedoston. session_start(); session_register( "session" ); Käännämme nyt $session-muuttujan moniulotteiseen taulukkoon siten, että sijoitamme assosiatiiviset taulukkoelementit elementtiin nimeltä $session[viewevents]. Näin luokittelemme asetusmuuttujat sellaisiksi, että ne kuuluvat vain tälle näytölle. Käyttäjän valitsemat vaihtoehdot ovat alue, tyyppi, kuukaudet ja vuodet. Sijoitamme lomakkeen valinnat samannimisiin $session[viewevents]-elementteihin. Jos käyttäjä ei ole lähettänyt lomaketta, hän on saattanut tehdä niin aiemmin. Siinä tapauksessa on $session[viewevents]-taulukko asetettuna, mutta $actionflag-muuttuja ei. Jos niin on, asetamme $formtaulukkoon samat arvot. Se takaa, että lomake näkyy oikein asetuksin. Jos käyttäjä ei ole lähettänyt näytön lomaketta ja $session[viewevents]-elementti on tyhjä, meidän tulee muodostaa taulukko, joka perustuu oletusarvoihin. Käytämme getdate()-funktiota päivämääräindeksitaulukon muodostamiseksi. Tuota taulukkoa käytetään asettamaan $session[viewevents][months]- elementti nykyisen kuukausi-indeksin mukaiseksi ja $session[viewevents][years]-elementti nykyisen vuoden mukaan. Nyt tiedämme, että $session[viewevents][months]- ja $session[viewevents][years]-elementti sisältää nykyisen kuukauden ja vuoden ja sen, ovatko tiedot peräisin lomakkeen lähettämisestä, käyttäjäistunnosta vai oletuksena olevasta nykyisestä päivämäärästä. Viemme nuo arvot uudelle date.inc-tiedoston funktiolle nimeltä getdaterange(). Tuo funktio ottaa vastaan kuukauden ja vuoden ja palauttaa taulukon, jossa on kaksi aikaleimaa, jotka merkitsevät kuukauden alkua ja loppua. Listaus 24.2 Ote tiedostosta date.inc 1: function getdaterange( $mon, $year )
6 Esimerkki (Osa 2) 2: { 3: $start = mktime( 0, 0, 0, $mon, 1, $year ); 4: $end = mktime( 0, 0, 0, $mon+1, 1, $year ); 5: $end--; 6: return array( $start, $end ); 7: } Tämän funktion palauttama taulukko tallennetaan globaaliin $range-muuttujaan. Luomme funktion nimeltä displayevents(), joka kirjoittaa valitut tapahtumatiedot selaimelle. Sitä kutsutaan HTML-asiakirjan rungosta. Saadaksemme tapahtumatietotaulukon kutsumme getevents()-funktiota, joka on tiedostossa dblib.inc, jonka laitoimme mukaan aiemmin. Kohtasimme tämän funktion jo edellisellä tunnilla, mutta käytimme vain osan sen mahdollisuuksista. Listaus 24.3 Ote tiedostosta dlib.inc 1: function getevents( $club_id=0, $range=0, $area=0, $type=0 ) 2: { 3: global $link; 4: $query = "SELECT clubs.name, events.*, areas.area as areaname, 5: types.type as typename "; 6: $query.= "FROM clubs, events, areas, types WHERE "; 7: $query.= "clubs.id=events.eclub 8: AND events.area=areas.id 9: AND events.type=types.id "; 10: if (! empty( $club_id ) && $club_id!="any" ) 11: $query.= "AND events.eclub='$club_id' "; 12: if (! empty($range) ) 13: $query.= "AND events.edate >= '$range[0]' AND 14: events.edate <='$range[1]' "; 15: if (! empty($area) && $area!= "ANY" ) 16: $query.= "AND events.area='$area' "; 17: if (! empty($type) && $type!= "ANY" ) 18: $query.= "AND events.type='$type' "; 19: $query.= "ORDER BY events.edate"; 20: $result = mysql_query( $query, $link ); 21: if (! $result )
7 24. Esimerkki (Osa 2) : die ( "getidevents fatal error: ".mysql_error() ); 23: $ret = array(); 24: while ( $row = mysql_fetch_array( $result ) ) 25: array_push( $ret, $row ); 26: return $ret;s 27: } Vaikka tämän funktion nimenä onkin getevents(), se sieppaa paljon enemmän tietoa. Kuten voit nähdä, se ottaa vastaan neljä argumenttia: kerhon ID:n, päivämäärärajat, jotka ovat taulukossa kahtena aikaleimana, aluekoodin ja tyyppikoodin. Kaikki nämä argumentit ovat valinnaisia ja voit korvata ne joko nollalla tai arvolla false, jos et halua niitä mukaan SQL-kyselyyn. Funktio muodostaa dynaamisesti SQL-kyselyn, joka perustuu sille vietyihin argumentteihin. Ydinkysely liittää yhteen kaikki tietokannan taulut ja takaa, että kerhon, alueen ja tyypin nimi ovat mukana tulosjoukossa. $query = "SELECT clubs.name, events.*, areas.area as areaname, types.type as typename "; $query.= "FROM clubs, events, areas, types WHERE "; $query.= "clubs.id=events.eclub AND events.area=areas.id AND events.type=types.id "; Sen jälkeen lisätään muita ehtoja kyselyyn sen mukaan, onko funktion argumentteja asetettu. Parametrit $type ja $area ohitetaan myöskin, jos ne sisältävät merkkijonon "ANY". Käytännössä tämä merkitsee sitä, että mitä enemmän argumentteja funktio saa, sitä kapeamman tulosjoukon se palauttaa. Jos mitään argumentteja ei anneta, funktio palauttaa tapahtumataulukon jokaisen tapahtuman. Jos funktiolle annetaan $club_id-argumentti, se palauttaa vain kyseisen kerhon tapahtumat. Jos argumenttina annetaan $range-taulukko, palautetaan vain tuon aikavälin tapahtumat, ja niin edelleen. Lopuksi kysely lähetetään ja tulos palautetaan moniulotteisena taulukkona. Sen jälkeen meidän on vain käytävä taulukko läpi silmukassa. Käytämme jokaista edate-kenttää päivämäärän muotoilemiseksi date()-funktion yhteydessä. Sitten muodostamme linkin tiedostoon viewevent.php, joka antaa lisätietoa tapahtumasta. Sitä varten muodostamme kyselymerkkijonon, joka sisältää tapahtuman ID:n ja SID-vakion. Tässä silmukassa muodostamme myös HTML-hyperlinkin tiedostoon viewclub.php luoden kyselymerkkijonon, joka sisältää kerhon ID:n ja SID-vakion. Lopuksi tulostamme tapahtuman tyypin ja alueen nimet. Olet saattanut huomata, että edellisellä tunnilla käytimme funktiota nimeltä html(), kun tulostimme jäsenkohtaista tapahtumatietoa yhteenvetolomakkeella. Kun käymme läpi tapahtumatietoa writeevents()- funktiossa, kutsumme html()-funktiota uudelleen. Tämä funktio on käyttäjän määrittelemä ja se elää clublib.inc-kirjastossa. Se ottaa vastaan merkkijonon ja palauttaa muunnetun version, joka sopii selaimen tulostettavaksi. Erikoismerkit muunnetaan HTML-merkeiksi ja rivinvaihdot saavat BR-elementit mukaansa.
8 Esimerkki (Osa 2) Listaus 24.4 Ote tiedostosta clublib.inc 1: function html( $str ) 2: { 3: if ( is_array( $str ) ) 4: { 5: foreach ( $str as $key=>$val ) 6: $str[$key] = htmlstr( $val ); 7: return $str; 8: } 9: return htmlstr( $str ); 10: } 11: function htmlstr( $str ) 12: { 13: $str = htmlspecialchars( $str ); 14: $str = nl2br( $str ); 15: return $str; 16: } Kuten voit nähdä, kyseessä on kaksi funktiota. Funktio html() ottaa argumentikseen joko merkkijonon tai taulukon. Jos parametrimuuttuja sisältää taulukon, käymme sen läpi silmukassa ja muunnamme jokaisen arvon. Muutoin muunnos toteutetaan suoraan parametrimuuttujaan. Todellinen muunnos tapahtuu funktiossa htmlstr(), joka käyttää hyväkseen kahta sisäistä funktiota: htmlspecialcharacters() muuntaa jokaisen HTML-ympäristössä esityskelpoisen merkin HTML-entiteetikseen ja nl2br() lisää BR-tagit merkkijonoon tilanteen mukaan. Kun olemme asettaneet oletustiedot ja luoneet funktion, joka tulostaa tapahtumatietoa, kaikki tuo jätetään ja aletaan muodostaa lomaketta, jonka kautta käyttäjä voi valita, kuinka hän haluaa selata tapahtumia. Käyttäjän lomake on helppo rakentaa käyttämällä edellisen tunnin funktiotia, jotka osaavat tulostaa dynaamisesti HTML-koodin mukaisia OPTION-elementtejä. Kuva 24.1 esittää näytetulostuksen tiedostosta viewevents.php.
9 24. Esimerkki (Osa 2) 437 KUVA 24.1 Tulostus tiedostosta viewevents.php. viewclubs.php Käyttäjä saattaa haluta esittää tietokantatietoa kerhokohtaisesti, ei välttämättä tapahtumakohtaisesti. Tällöin tulosjoukko kaventuu kerhon tyypin ja alueen mukaan. Tällainen vaihtoehto tarjotaan viewclubs.php-näytön kautta. Skripti on listauksessa Listaus 24.5 viewclubs.php 1: <?php 2: include("dblib.inc"); 3: include("date.inc"); 4: include("clublib.inc"); 5: if ( isset($actionflag) && $actionflag == "showclubs" ) 6: $session[viewclubs] = $form; 7: elseif ( $session[viewclubs] ) 8: $form = $session[viewclubs]; 9: else 10: { 11: $session[viewclubs][area] = "ANY"; 12: $session[viewclubs][type] = "ANY"; 13: } 14: function displayclubs( ) 15: { 16: global $session; 17: $clubs = getclubs( $session[viewclubs][area],
10 Esimerkki (Osa 2) 18: $session[viewclubs][type] ); 19: if (! $clubs ) 20: { 21: print "No clubs yet that fit these conditions<p>\n"; 22: return; 23: } 24: print "<table border=1>\n"; 25: print "<td><b>club</b></td>\n"; 26: print "<td><b>area</b></td>\n"; 27: print "<td><b>type</b></td>\n"; 28: foreach ( $clubs as $row ) 29: { 30: print "<tr>\n"; 31: print "<td><a href=\"viewclub.php?club_id=$row[id]&".sid."\">". 32: html($row[name])."</a></td>\n"; 33: print "<td>$row[areaname]</td>\n"; 34: print "<td>$row[typename]</td>\n"; 35: print "</tr>\n"; 36: } 37: print "</table>\n"; 38: } 39:?> 40: <html> 41: <head> 42: <title>view clubs</title> 43: </head> 44: <body> 45: <?php 46: include("publicnav.inc"); 47:?> 48: <P> 49: <h1>view Clubs</h1> 50: <p>
11 24. Esimerkki (Osa 2) : <form action="<?php print $PHP_SELF;?>"> 52: <input type="hidden" name="actionflag" value="showclubs"> 53: <input type="hidden" name="<?php print session_name()?>" 54: value="<?php print session_id()?>"> 55: <select name=form[area]> 56: <option value="any">any Area 57: <?php writeoptionlist( "areas", $form[area] )?> 58: </select> 59: <select name=form[type]> 60: <option value="any">any type of club 61: <?php writeoptionlist( "types", $form[type] )?> 62: </select> 63: <input type = "submit" value="change"> 64: </form> 65: </p> 66: <?php 67: displayclubs( ); 68:?> 69: </body> 70: </html> Kuten voit nähdä, tämä skripti on rakenteeltaan ja logiikaltaan samanlainen kuin edellinen esimerkki. Tallennamme tämän sivun istuntomuuttujat $session[viewclubs]-elementtiin. Jos käyttäjä on lähettänyt sivun lomakkeen, päivitämme istuntomuuttujat. Jos käyttäjä ei ole lähettänyt lomaketta, mutta istuntomuuttujat ovat saatavilla, sijoitamme $session[viewclubs]-arvon $form-muuttujaan. Jos kaikki muu epäonnistuu, täytämme $session[viewclubs]-taulukon oletusarvoilla. Luomme funktion displayclubs(). Sen sisältä kutsutaan dblib-inc-tiedoston uutta funktiota, getclubs()- funktiota. Tämä funktio ottaa vastaan valinnaisesti joko kerhotaulun tyyppikentän tai aluekentän arvon: Listaus 24.6 Ote tiedostosta dlib.inc 1: function getclubs( $area="", $type="" ) 2: { 3: global $link; 4: $query = "SELECT clubs.*, areas.area as areaname, 5: types.type as typename ";
12 Esimerkki (Osa 2) 6: $query.= "FROM clubs, areas, types WHERE "; 7: $query.= "clubs.area=areas.id AND clubs.type=types.id "; 8: if ( $area!= "ANY" &&! empty( $area ) ) 9: $query.= "AND clubs.area='$area' "; 10: if ( $type!= "ANY" &&! empty( $type ) ) 11: $query.= "AND clubs.type='$type' "; 12: $query.= "ORDER BY clubs.area, clubs.type, clubs.name"; 13: $result = mysql_query( $query, $link ); 14: if (! $result ) 15: die ( "getidevents fatal error: ".mysql_error() ); 16: $ret = array(); 17: while ( $row = mysql_fetch_array( $result ) ) 18: array_push( $ret, $row ); 19: return $ret; 20: } 21: Funktio getclubs() rakentaa dynaamisen SQL-kyselyn, joka perustuu sille vietyihin argumentteihin. Oletuksena se yhdistää kerho-, alue- ja tyyppitaulut. Jos sille viedään $type- tai $area-argumentteina jotain muuta kuin tyhjä merkkijono tai "ANY"-merkkijono, se kaventaa edelleenkin WHERE-osaa SQL-lauseesta annettujen arvojen mukaisesti. Kuten ennenkin, se palauttaa nytkin moniulotteisen taulukon. Käymme silmukassa läpi getclubs()-funktion palauttaman taulukon ja kirjoitamme nimen, alueen nimen ja tyypin nimen selaimelle. Kuten aiemminkin, kerhon nimi muodostaa nytkin osan hyperlinkistä, joka osoittaa tiedostoon viewclub.php. viewclub.php Tämä viewclub.php-näyttö esittää kaiken kerhoon liittyvän tiedon. Se voidaan ottaa esille hyperlinkkien kautta, jotka osoittavat joko tiedostoon viewevents.php tai viewclubs.php. Koodissa on mukana aiempien esimerkkien logiikkaa ja useita funktiota. Koodi on listauksessa 24.7.
13 24. Esimerkki (Osa 2) 441 LISTAUS 24.7 viewclub.php 1: <?php 2: include("dblib.inc"); 3: include("clublib.inc"); 4: if (! isset($club_id) ) 5: header( "Location: viewclubs.php?".sid ); 6: $club = getclubjoined( $club_id ); 7: $club = html( $club ); 8: if ( $club[mail]!= "" ) 9: $club[mail] = "<A HREF=\"mailto:$club[mail]\">$club[mail]</A>"; 10: function displayevents() 11: { 12: global $club_id; 13: $events = getevents( $club_id ); 14: if (! $events ) 15: { 16: print "No events yet for this club<p>"; 17: return; 18: } 19: print "<table border=1>\n"; 20: print "<td><b>date</b></td>\n"; 21: print "<td><b>event</b></td>\n"; 22: print "<td><b>area</b></td>\n"; 23: print "<td><b>type</b></td>\n"; 24: foreach ( $events as $row ) 25: { 26: print "<tr>\n"; 27: print "<td>".date("j M Y H.i", $row[edate])."</td>\n"; 28: print "<td><a href=\"viewevent.php?event_id=$row[id]&".sid."\">". 29: html($row[ename])."</a></td>\n"; 30: print "<td>$row[areaname]</td>\n"; 31: print "<td>$row[typename]</td>\n"; 32: print "</tr>\n";
14 Esimerkki (Osa 2) 33: } 34: print "</table>\n"; 35: } 36:?> 37: <html> 38: <head> 39: <title>view clubs</title> 40: </head> 41: <body> 42: <?php 43: include("publicnav.inc"); 44:?> 45: <p> 46: <h1>view club details</h1> 47: <h4><?php print $club[name]?></h4> 48: <p> 49: Area: <b><?php print $club[areaname]?></b> 50: <br> 51: Type: <b><?php print $club[typename]?></b> 52: <BR> 53: Mail: <b><?php print $club[mail]?></b> 54: </p> 55: Description:<br> 56: <b><?php print $club[description]?></b> 57: <hr> 58: <?php 59: displayevents(); 60:?> 61: </body> 62: </html> Tämä skripti vaatii $club_id-parametrin. Testaamme sen ja palautamme käyttäjän viewclubs.php-näytölle, jos emme löydä parametria. Saadaksemme informaatiota kutsumme dblib.inc-tiedoston funktiota getclubjoined(). Se ottaa argumentikseen kerhon ID:n ja palauttaa taulukon:
15 24. Esimerkki (Osa 2) 443 Listaus 24.8 Ote tiedostosta dlib.inc 1: function getclubjoined( $id ) 2: { 3: global $link; 4: $query = "SELECT clubs.*, areas.area as areaname, types.type as typename A "; 5: $query.= "FROM clubs, events, areas, types WHERE "; 6: $query.= "clubs.area=areas.id 7: AND clubs.type=types.id 8: AND clubs.id='$id'"; 9: $result = mysql_query( $query, $link ); 10: if (! $result ) 11: die ( "getclubjoined fatal error: ".mysql_error() ); 12: return mysql_fetch_array( $result ); 13: } Kutsumme tätä funktiota getrow()-funktion sijaan (joka voisi myöskin palauttaa kerhotietoa), koska sen muodostama SQL-kysely sisältää alueeseen ja tyyppiin liitetyt nimet. Se tekee sen suorittamalla kerho-, alue- ja tyyppitaulukoiden välisen yhdistämisen ja tuottaa palautettavaan taulukkoon lisäelementtejä nimeltä areaname ja typename. Tallennamme getclubjoined()-funktion palauttaman taulukon muuttujaan nimeltä $club. Tämä $clubtaulukko tulostetaan selaimelle asiakirjan runkoon. Määrittelemme myös funktion nimeltä displayevents(), joka ottaa argumentikseen kerhoon liittyvän tapahtumalistaa viemällä $club_id-muuttujan getevents()- funktiolle. Kuva 24.2 esittää tiedoston viewclub.php tyypillisen tulostuksen. viewevent.php Tämä viewevent.php-tiedosto sisältää skriptimme viimeisen näytön. Se tuottaa todellisen informaation kaikista yksittäisistä tapahtumista ja siihen päästään hyperlinkkien kautta miltä tahansa julkiselta sivulta, joka listaa tapahtumien yhteenvedot. Koodi on listauksessa Listaus 24.9 viewevent.php 1: <?php 2: include("dblib.inc"); 3: include("clublib.inc"); 4: if (! isset($event_id) )
16 Esimerkki (Osa 2) 5: header( "Location: viewevents.php?".sid ); 6: $event = getevent( $event_id ); 7: html( $event ); 8:?> 9: <html> 10: <head> 11: <title>view event details</title> 12: </head> 13: <body> 14: <?php 15: include("publicnav.inc"); 16:?> 17: <P> 18: <h1>view event details</h1> 19: <h4><?php print $event[ename]?></h4> 20: <p> 21: Club: 22: <b> 23: <?php print "<a href=\"viewclub.php?club_id=$event[eclub]&".sid."\"> 24: $event[clubname]</a>" 25:?> 26: </b> 27: <br> 28: Area: <b><?php print $event[areaname]?></b> 29: <br> 30: Type: <b><?php print $event[typename]?></b> 31: </p> 32: Description:<br> 33: <?php print $event[edescription]?> 34: </body> 35: </html>
17 24. Esimerkki (Osa 2) 445 Kuten voit nähdä, näyttö on yksinkertainen. Saamme taulukon tapahtumataulukosta käyttämällä dblib.inctiedoston getevent()-funktiota. Viemme sille $event_id-muuttujan, jonka tulisi sisältää ID-arvo, joka tuli meille kyselymerkkijonon kautta. Taulukko on sitten helppoa kirjoittaa selaimelle. Voit nähdä getevent()-funktion listauksessa Se sisältää suhteellisen yksinkertaisen SQL-lauseen, joka yhdistää kerho- ja tapahtumataulukot. Listaus Ote tiedostosta dlib.inc 1: function getevent( $event_id ) 2: { 3: global $link; 4: 5: $query = "SELECT clubs.name as clubname, events.*, 6: areas.area as areaname, types.type as typename "; 7: $query.= "FROM clubs, events, areas, types WHERE "; 8: $query.= "clubs.id=events.eclub 9: AND events.area=areas.id 10: AND events.type=types.id 11: AND events.id='$event_id'"; 12: $result = mysql_query( $query, $link ); 13: if (! $result ) 14: die ( "getevent fatal error: ".mysql_error() ); 15: return mysql_fetch_array( $result ); 16: } KUVA 24.2 Tulostus tiedostosta viewclub.php.
18 Esimerkki (Osa 2) Tulevaisuus Olemme nyt työskennelleet läpi koko tapahtumapäiväkirjaskriptin. Toivon, että se kertoo hieman siitä dynamiikasta, joka liittyy pieneenkin käytännön projektiin, ja antaa tuntuman PHP:n mahdollisuuksiin. Erityisesti sinun tulisi huomata, kuinka helppoa PHP:n istuntofunktioiden on tallentaa käyttäjän asetukset sivulta sivulle. Jos käyttäjämme palaa viewevents.php-sivulle milloin tahansa yksittäisen istunnon aikana, hän näkee samat valinnat, jotka hän on tehnyt tälle näytölle aiemmin tekemänsä vierailun aikana. Ilman istuntofunktioita meidän olisi luultavasti vietävä paljon enemmän informaatiota pyynnöltä toiselle käyttämällä URL-kyselymerkkijonoja. Vaikka tapahtumapäiväkirja ei olekaan aivan täydellinen, se kuitenkin edustaa prototyyppiä, joka kykenee näyttämään käyttäjän toiminnan. Olisi hyvä lisätä muutamia piirteitä, erityisesti hakusanalla hakeminen. Olisi myös hienoa, jos käyttäjä voisi kommentoida tapahtumia. Se lisäisi kokonaan uuden ulottuvuuden skriptiin ja tekisi siitä suositumman ja vuorovaikutteisemman. Voisimme antaa kerhon ylläpitäjille mahdollisuuden sisällyttää sivuille linkkejä kuviin, jotka liittyvät kerhon toimintaan. Voisimme myös antaa kerhon toimittajille maahdollisuuden ladata kuvia suoraan selaimelta palvelimelle. Jäsenet voisivat myös kopioida tapahtumia ja laittaa tapahtumia järjestykseen. Ennen kuin skripti voidaan jaakaa asiakkaalle, haluamme muodostaa myös hallintaympäristön, jossa on työkaluja ei-tekniseen toimintaan, jossa tilejä ja tapahtumia voidaan muokata ja poistaa sekä lisätä ja muokata alue- ja tyyppiluokkia. Olet saattanut myös huomata, että skriptin tulos on nykyään hieman aneeminen. Meidän tulisi ehkä antaa tuotos visuaaliselle suunnittelijalle ja pyytää häntä muokkaamaan ulkoasua. Onneksi suurin osa koodistamme on helposti työstettävää, vaikkakin meitä saatetaan pyytää vielä muokkaamaan silmukoita, jotka tulostavat yhteenvetoja. Yhteenveto Tällä ja edellisellä tunnilla veimme päätökseen työmme, täysin toimivan Web-sovelluksen. Käytimme tekniikoita, joiden avulla tallensimme tilan, todensimme käyttäjiä, muokkasimme ja esitimme tietokantojen tietoa ja paljon muutakin. Moninäyttöistä koodiesimerkkia ei ole helppo esittää kirjassa, mutta yrittäminenkin on hyödyllistä. Olemme ottaneet esille aiheita, joihin törmäät uudelleen ja uudelleen, joten sinun tulee rakentaa strategioita tilainformaation ylläpitämiseen. K&V K No siinä se oli; mitäs seuraavaksi? V Nyt kaikki riippuu sinusta. Tämä kirja sisältää tarpeeksi informaatiota, jotta voit luoda omia kehittyneitä sovelluksiasi ja ympäristöjäsi. Kun käytät antamiamme taitoja ja hakemalla lisätietoa, mikään ei voi estää sinua!
19 24. Esimerkki (Osa 2) 447 Työpaja Työpaja tarjoaa joukon kertauskysymyksiä, joiden avulla voit tarkistaa, oletko ymmärtänyt materiaalin sisältöä. Yritä ymmärtää vastaukset ennen kuin jatkat seuraaviin lukuihin. Vastaukset ovat liitteessä A. Kysymyksiä 1. Millä funktiolla lisäät elementin taulukon loppuun? 2. Onko mahdollista lisätä elementti taulukkoon käyttämättä funktiota? 3. Millä funktiolla käännät erikoismerkit HTML-muotoon? 4. Millä funktiolla käännät rivinvaihtomerkit BR-tageiksi? 5. SID-vakiolla voit viedä istunnon ID:n toiselle sivulle HTML-linkin kautta. Kuinka voisit saada aikaan saman lomakkeen kautta? Toiminta 1. Tutki tämän tunnin koodia. Onko jokin tekniikoista tai aiheista sopiva omiin projekteihisi? 2. Selaile kirjaa taaksepäin ja tutki muistiinpanojasi. Jos olet seurannut kirjaa ikään kuin kurssin muodossa, muista, että omien muistiinpanojen kertaaminen täydentää suorittamasi kurssin.
20 Esimerkki (Osa 2)
OSA IV Yhteenveto. Oppitunti. 23. Esimerkki (Osa 1) 24. Esimerkki (Osa 2)
OSA IV Yhteenveto Oppitunti 23. Esimerkki (Osa 1) 24. Esimerkki (Osa 2) 23. Esimerkki (Osa 1) 395 OPPITUNTI 23 Esimerkki (Osa 1) Jos olet ollut mukana alusta alkaen, sinulla pitäisi nyt olla hyvät perustyökalut
LisätiedotOPPITUNTI 20 Tilan tallentaminen istuntofunktioilla
20. Tilan tallentaminen istuntofunktiolla 353 OPPITUNTI 20 Tilan tallentaminen istuntofunktioilla Edellisellä tunnilla tutkimme tilan tallentamista evästeiden ja kyselymerkkijonojen avulla. PHP4 on kuitenkin
Lisätiedot6. Funktiot 85. Kuinka funktioita määritellään ja kutsutaan. Kuinka funktioille viedään arvoja ja niistä palautetaan arvoja
6. Funktiot 85 OPPITUNTI 6 Funktiot Funktiot ovat hyvin laaditun skriptin perusta. Ne tekevät koodista helppolukuista ja uudelleen käytettävää. Laajoja projekteja on mahdotonta hallita ilman funktioiden
LisätiedotOPPITUNTI15 Päivämäärien käsittely
15. Päivämäärien käsittely 269 OPPITUNTI15 Päivämäärien käsittely Päivämäärät kuuluvat niin usein jokapäiväiseen elämään, että niiden käsittely on rutiininomaista. Kalenterin käsittely ei aina ole kuitenkaan
LisätiedotOPPITUNTI 12 MySQL-tietokannan käyttö
12. MySQL-tietokannankäyttö 211 OPPITUNTI 12 MySQL-tietokannan käyttö PHP-kieleen kuuluu olennaisesti tietokantojen käyttämisen helppous. Tällä tunnilla keskitymme MySQLtietokantaan, mutta samanlaisia
LisätiedotOPPITUNTI 11 DBM-funktioiden käyttö
11. DBM-funktioiden käyttö 193 OPPITUNTI 11 DBM-funktioiden käyttö Jos sinulla ei ole pääsyä SQL-tietokantaan, esimerkiksi MySQL- tai Oracle-tietokantaan, sinulla on varmaankin mahdollisuus käyttää DBM-tyylistä
LisätiedotHarjoitustyö: virtuaalikone
Harjoitustyö: virtuaalikone Toteuta alla kuvattu virtuaalikone yksinkertaiselle olio-orientoituneelle skriptauskielelle. Paketissa on testaamista varten mukana kaksi lyhyttä ohjelmaa. Ohjeita Noudata ohjelman
LisätiedotIDL - proseduurit. ATK tähtitieteessä. IDL - proseduurit
IDL - proseduurit 25. huhtikuuta 2017 Viimeksi käsiteltiin IDL:n interaktiivista käyttöä, mutta tämä on hyvin kömpelöä monimutkaisempia asioita tehtäessä. IDL:llä on mahdollista tehdä ns. proseduuri-tiedostoja,
Lisätiedot7. Taulukot 105. Kuinka taulukoiden tietoa käsitellään ja lajitellaan
7. Taulukot 105 OPPITUNTI 7 Taulukot Taulukot ja niiden käsittelyyn liittyvät toiminnot laajentavat suuresti PHP4-skriptien käyttöaluetta ja joustavuutta. Kun tunnet taulukot, voit tallentaa niihin monimutkaisia
LisätiedotATK tähtitieteessä. Osa 3 - IDL proseduurit ja rakenteet. 18. syyskuuta 2014
18. syyskuuta 2014 IDL - proseduurit Viimeksi käsiteltiin IDL:n interaktiivista käyttöä, mutta tämä on hyvin kömpelöä monimutkaisempia asioita tehtäessä. IDL:llä on mahdollista tehdä ns. proseduuri-tiedostoja,
LisätiedotOPPITUNTI 19 Tilan tallentaminen evästeiden ja kyselymerkkijonojen avulla
19. Tilan tallentaminen evästeiden ja kyselymerkkijonojen avulla 337 OPPITUNTI 19 Tilan tallentaminen evästeiden ja kyselymerkkijonojen avulla HTTP on tilaton protokolla. Se merkitsee sitä, että jokainen
LisätiedotSuvi Junes/Pauliina Munter Tietohallinto/Opetusteknologiapalvelut 2014
Tietokanta Tietokanta on työkalu, jolla opettaja ja opiskelijat voivat julkaista tiedostoja, tekstejä, kuvia ja linkkejä alueella. Opettaja määrittelee lomakkeen muotoon kentät, joiden kautta opiskelijat
LisätiedotOPPITUNTI 5 Ohjelman kulku
5. Ohjelman kulku 67 OPPITUNTI 5 Ohjelman kulku Viime tunnilla luomamme skriptit olivat suoraviivaisia. Ohjelmalauseet suoritettiin aina samassa järjestyksessä, joten ohjelmissamme ei ollut lainkaan joustavuutta.
LisätiedotOPPITUNTI 3 Ensimmäinen skripti
3. Ensimmäinen skripti 35 OPPITUNTI 3 Ensimmäinen skripti Kun olet asentanut PHP:n ja asettanut sen kokoonpanon, on aika laittaa ohjelmisto testaukseen. Tällä tunnilla luot ensimmäisen skriptisi ja tutkit
LisätiedotTuotteiden tiedot: Lisää uuden tuotteen tiedot. Muuta tai poista tuotteen tiedot. Selaa kaikkien tuotteiden tietoja.
laskutus_index http://media.stadia.fi/~0700527/laskutus/laskutus_index.html Sivu 1/1 13.12.2007 Laskutus -tietokanta Henkilöiden tiedot: Lisää uuden henkilön tiedot Muuta tai poista henkilön tiedot Selaa
Lisätiedot8. Oliot 123. Kuinka luokkia luodaan ja olioita saadaan aikaan. Kuinka luodaan ja käsitellään ominaisuuksia ja metodeja
8. Oliot 123 OPPITUNTI 8 Oliot Oliopohjainen ohjelmointi on vaarallista. Se muuttaa koodaamista koskevia ajatuksiasi ja kun uudet käsitteet ovat saaneet jalansijaa, ne eivät katoa mitenkään. PHP on Perlin
LisätiedotJavaScript alkeet Esimerkkikoodeja moniste 2 (05.10.11 Metropolia)
JavaScript alkeet Esimerkkikoodeja moniste 2 (05.10.11 Metropolia) Esim 5.1 laskujärjestys operaattorit var tulos = 5 + 4 * 12 / 4; document.write("5 + 4 * 12 / 4 laskutoimituksen tulos
LisätiedotWritten by Administrator Monday, 05 September 2011 15:14 - Last Updated Thursday, 23 February 2012 13:36
!!!!! Relaatiotietokannat ovat vallanneet markkinat tietokantojen osalta. Flat file on jäänyt siinä kehityksessä jalkoihin. Mutta sillä on kuitenkin tiettyjä etuja, joten ei se ole täysin kuollut. Flat
Lisätiedot12.10.2011. Erittäin nopea tapa saada kehitysympäristö php:lle pystyyn Voidaan asentaa muistitikulle
(Ei yhtään videota tällä kertaa.) X niin kuin Cross-Platform, Apache, MySql, PHP, Perl Kehitysympäristö EI tuotantokäyttöön Monet tärkeät tietoturva-asetukset ovat oletuksena pois päältä Erittäin nopea
LisätiedotMakrojen mystinen maailma lyhyt oppimäärä
Makrojen mystinen maailma lyhyt oppimäärä Makrot osana SAS-teknologiaa Yleiskuva Jouni Javanainen Aureolis lyhyesti Aureolis on jatkuvia Business Intelligence -palveluita tuottava asiantuntijaorganisaatio
LisätiedotSQL Buddy JAMK Labranet Wiki
Page 1 of 9 SQL Buddy JAMK Labranet Wiki Sisällysluettelo Yleistä SQL Buddy:sta kotisivu :http://sqlbuddy.com/ SQL Buddy on kevyt hallintatyökalu MySQL-tietokannalle. Järjestelmävaatimukset Serverin vaatimukset
LisätiedotJärjestelmän kriittisimmille toiminnallisuuksille (listattu alla), toteutetaan 1
1. Testattavat asiat Järjestelmän kriittisimmille toiminnallisuuksille (listattu alla), toteutetaan 1 selainyhteensopivuustesti käyttäen Suomessa eniten käytössä olevia selaimia. Uuden keräyksen lisääminen
LisätiedotLIITE A Vastaukset kysymyksiin
LIITE A Vastaukset kysymyksiin Liite A Vastaukset kysymyksiin 449 Tämä liite antaa vastaukset lukujen lopussa olleisiin kysymyksiin. 450 Liite A Vastaukset kysymyksiin TUNTI 1 1. Mistä kirjaimet PHP tulevat?
LisätiedotOhjelmoinnin perusteet Y Python
Ohjelmoinnin perusteet Y Python T-106.1208 9.2.2009 T-106.1208 Ohjelmoinnin perusteet Y 9.2.2009 1 / 35 Listat Esimerkki: halutaan kirjoittaa ohjelma, joka lukee käyttäjältä 30 lämpötilaa. Kun lämpötilat
LisätiedotKotisivuohjeet. Eteläpohjalaiset Kylät ry. Sivupohjien rakenne
Kotisivuohjeet Tässä ohjeessa käydään läpi kotisivujen tekemisen perusteet keskittyen html-koodiin ja sen ominaisuuksiin. Sivupohjissa ulkoasu ja rakenne on pääasiassa jaettu erilliseen css-tyylitiedostoon,
LisätiedotPäivitysohje Opus Dental
Päivitysohje Opus Dental 7.1.460 1. Päivitysohjelman lataaminen Avaa Opus Dental -internetsivu osoitteessa www.opusdental.com. Klikkaa etusivulta Suomen lippua avataksesi suomenkielisen sivuston. Valitse
LisätiedotTietokannan luominen:
Moodle 2 Tietokanta: Tietokanta on työkalu, jolla opettaja ja opiskelijat voivat julkaista tiedostoja, tekstejä, kuvia, linkkejä alueella. Opettaja määrittelee lomakkeen muotoon kentät, joiden kautta opiskelijat,
LisätiedotPauliina Munter/Suvi Junes Tampereen yliopisto / Tietohallinto Valitse muokkaustila päälle kurssialueen etusivun oikean yläkulman painikkeesta.
Sanasto Sanasto -työkalulla voi laatia sanakirjan tapaisen sanaston, jonka hakusanoja (käsitteitä ja niiden määritelmiä) voidaan selata ja opettajan niin halutessa myös kommentoida. Sekä opettaja että
LisätiedotOSAAMISENHALLINTA OMAT TIEDOT. Peruskäyttäjän pikaohje
OSAAMISENHALLINTA OMAT TIEDOT Peruskäyttäjän pikaohje Omat tiedot Omien tietojen etusivulla näkyy kirjautuneen käyttäjän nimi sekä käytössä olevat osiot Osaamisenhallinnan käyttöönotossa määritellään eri
LisätiedotTapahtumakalenteri & Jäsentietojärjestelmä Ylläpito
Tapahtumakalenteri & Jäsentietojärjestelmä Ylläpito Henri Kinnunen, Seppo Tompuri, Tero Malkki, Matti Heiskanen, Tommi Rönkönharju, Tuomas Valkeapää Sisällysluettelo 1. Alkusanat.2 2. Asennusohje..2 3.
LisätiedotPauliina Munter / Suvi Junes Tampereen yliopisto/tietohallinto 2013
Tehtävä 2.2. Tehtävä-työkalun avulla opiskelijat voivat palauttaa tehtäviä Moodleen opettajan arvioitaviksi. Palautettu tehtävä näkyy ainoastaan opettajalle, ei toisille opiskelijoille. Tehtävä-työkalun
LisätiedotYhdistäminen. Tietolähteen luominen. Word-taulukko. Joukkokirje, osoitetarrat Työvälineohjelmistot 1(5)
Työvälineohjelmistot 1(5) Yhdistäminen Yhdistämistoiminnolla voidaan tehdä esimerkiksi joukkokirjeitä, osoitetarroja, kirjekuoria, jne. Siinä yhdistetään kaksi tiedostoa: Pääasiakirja Tietolähde Pääasiakirjassa
LisätiedotOsallistavan suunnittelun kyselytyökalu
Osallistavan suunnittelun kyselytyökalu Käyttöohje ARFM- hankkeessa jatkokehitetylle SoftGIS-työkalulle Dokumentti sisältää ohjeistuksen osallistavan suunnittelun työkalun käyttöön. Työkalu on käytettävissä
LisätiedotOPPITUNTI 21 Palvelinympäristö
21. Palvelinympäristö 365 OPPITUNTI 21 Palvelinympäristö Edellisellä tunnilla tutkimme tekniikoita, joiden avulla voidaan kommunikoida etäkoneiden kanssa ja saada tietoa käyttäjiltä. Tällä tunnilla käsittelemme
LisätiedotOSA III PHP:n käyttö. Oppitunti
OSA III PHP:n käyttö Oppitunti 9. Lomakkeiden käsittely 10. Tiedostojen käsittely 11. DBM-funktioiden käyttö 12. MySQL-tietokantojen integrointi 13. Pintaa syvemmältä 14. Dynaamisten kuvien käsittely 15.
LisätiedotHarjoituksen aiheena on tietokantapalvelimen asentaminen ja testaaminen. Asennetaan MySQL-tietokanta. Hieman linkkejä:
Linux-harjoitus 6 Harjoituksen aiheena on tietokantapalvelimen asentaminen ja testaaminen. Asennetaan MySQL-tietokanta. Hieman linkkejä: http://www.mysql.com/, MySQL-tietokantaohjelman kotisivu. http://www.mysql.com/doc/en/index.html,
LisätiedotProseduurit, funktiot ja herättimet - esimerkkeinä Oracle, SQL Server, MySQL ja OCELOT. Jouni Huotari S2008
Proseduurit, funktiot ja herättimet - esimerkkeinä Oracle, SQL Server, MySQL ja OCELOT Jouni Huotari S2008 2 Proseduurit Ohjelmamoduuleita, jotka voidaan tallettaa tietokantaan (DBMS:n tietohakemistoon)
LisätiedotAJAX-konsepti AJAX. Asynkronisuus. Nykyisten web-ohjelmien ongelmia. Asynchronous JavaScript And XML
AJAX-konsepti AJAX Asynchronous JavaScript And XML Viimeisin muoti-ilmiö web-ohjelmoinissa, termi Ajax tuli käyttöön vuoden 2005 aikana Joukko teknologioita, joiden avulla voidaan toteuttaa uudenlaisen
LisätiedotPROSEDUURIT, FUNKTIOT JA HERÄTTIMET - ESIMERKKEINÄ ORACLE, SQL SERVER, MYSQL JA OCELOT JOUNI HUOTARI K2009
PROSEDUURIT, FUNKTIOT JA HERÄTTIMET - ESIMERKKEINÄ ORACLE, SQL SERVER, MYSQL JA OCELOT JOUNI HUOTARI K2009 PROSEDUURIT Ohjelmamoduuleita, jotka voidaan tallettaa tietokantaan (DBMS:n tietohakemistoon)
LisätiedotITKP102 Ohjelmointi 1 (6 op)
ITKP102 Ohjelmointi 1 (6 op) Tentaattori: Antti-Jussi Lakanen 7. huhtikuuta 2017 Vastaa kaikkiin tehtäviin. Tee jokainen tehtävä erilliselle konseptiarkille. Kirjoittamasi luokat, funktiot ja aliohjelmat
LisätiedotINTINU13A6 Java sovellukset
Johdanto Kurssin tavoitteena oli luoda tietokantaa käyttävä websovellus Java EE ohjelmointikielellä, sekä hyödyntää muun muassa servlettejä sekä JSP sivuja ja muita tekniikoita monipuolisesti. Webserverinä
LisätiedotSonera Viestintäpalvelu VIP VIP Laajennettu raportointi Ohje
Sonera Viestintäpalvelu VIP VIP Laajennettu raportointi Ohje Sisällysluettelo VIP Laajennettu raportointi... 3 Luo raportti Laajennetun raportoinnin työkaluilla... 4 Avaa Laajennettu raportointi... 4 Valitse
Lisätiedot582203 Tietokantasovellus (4 op) - Web-sovellukset ja niiden toteutus
582203 Tietokantasovellus (4 op) - Web-sovellukset ja niiden toteutus Sisältö Mikä on web-sovellus? Selaimen rooli web-sovelluksessa Palvelimen rooli web-sovelluksessa Aineistopyynnöt Tiedon välittäminen
LisätiedotOhjelmoinnin perusteet Y Python
Ohjelmoinnin perusteet Y Python T-106.1208 15.3.2010 T-106.1208 Ohjelmoinnin perusteet Y 15.3.2010 1 / 56 Tiedostoista: tietojen tallentaminen ohjelman suorituskertojen välillä Monissa sovelluksissa ohjelman
LisätiedotOhjelmoinnin peruskurssi Y1
Ohjelmoinnin peruskurssi Y1 CSE-A1111 30.9.2015 CSE-A1111 Ohjelmoinnin peruskurssi Y1 30.9.2015 1 / 27 Mahdollisuus antaa luentopalautetta Goblinissa vasemmassa reunassa olevassa valikossa on valinta Luentopalaute.
LisätiedotHELIA 1 (14) Outi Virkki Tiedonhallinta
HELIA 1 (14) Luento Näkymät... 2 Relaatiotyypit... 2 Taulu - Tallennettu relaatio... 3 Näkymä - Virtuaalirelaatio... 3 Tulosrelaatio - Kyselyn tulos... 3 Otetaulut - Tauluun tallennettu kyselyn tulos...
LisätiedotTEEMA 2 Aineistot. Kirjautuminen Moodleen. Sisältö. Kirjaudut Moodleen sivulta http://moodle.pkamk.fi/. Voit vaihtaa kielen valikosta.
TEEMA2 Aineistot Sisältö Moodleen kirjautuminen...1 Aineistot (Lisää aineisto ) - Web-sivu...2 - Linkit ulkoisille sivuille...4 - Valmiit tiedostot...5 Etusivun näkymän jäsennys otsikoilla...7 Tiedostojen
LisätiedotMoodle-oppimisympäristö
k5kcaptivate Moodle-oppimisympäristö Opiskelijan opas Sisältö 1. Mikä on Moodle? 2. Mistä löydän Moodlen? 3. Kuinka muokkaan käyttäjätietojani? 4. Kuinka ilmoittaudun kurssille? 5. Kuinka käytän Moodlen
LisätiedotZeon PDF Driver Trial
Matlab-harjoitus 2: Kuvaajien piirto, skriptit ja funktiot. Matlabohjelmoinnin perusteita Numeerinen integrointi trapezoidaalimenetelmällä voidaan tehdä komennolla trapz. Esimerkki: Vaimenevan eksponentiaalin
LisätiedotHarjoitus 3: Flash-komponenttiarkkitehtuuri (18.3.2016)
Harjoitus 3: Flash-komponenttiarkkitehtuuri (18.3.2016) Tietokoneavusteinen opetus -kurssilla opetetaan Adobe Flash CS6:n käyttämistä neljänä kertana: 11.3.2016, 15.3.2016, 18.3.2016 ja 1.4.2016. Harjoituskerroilla
LisätiedotPythonin Kertaus. Cse-a1130. Tietotekniikka Sovelluksissa. Versio 0.01b
Pythonin Kertaus Cse-a1130 Tietotekniikka Sovelluksissa Versio 0.01b Listat 1/2 esimerkkejä listan peruskäytöstä. > lista=['kala','kukko','kissa','koira'] ['kala','kukko','kissa','koira'] >lista.append('kana')
Lisätiedot3.1 Mitä tarkoittaan heredoc? Milloin sitä kannattaa käyttää? Kirjoita esimerkki sen käyttämisestä.
PHP-kielen perusteet Käytä lähteenä PHP:n virallista manuaalia http://www.php.net/docs.php tai http://www.hudzilla.org/php (siirry Paul Hudsonin verkkokirjaan). Lisää materiaalia suomeksi esimerkiksi ohjelmointiputkan
LisätiedotOPPITUNTI 16 Tiedon käsittely
16. Tiedon käsittely 283 OPPITUNTI 16 Tiedon käsittely Tällä tunnilla käsittelemme tarkemmin tiedon testaamista ja muokkaamista. Tutkimme uudelleen tietotyyppejä. PHP käsittelee tietotyyppejä automaattisesti
LisätiedotOpetuksen suunnittelu
Asio-Tilavarausohjelmisto/ Opetuksen suunnittelu Opetuksen suunnittelu Suljettujen aikojen määritys Kiinteiden opetusaikojen määritys Opetuperiodit Kaikissa vaiheissa tilanteen mukainen yhteys opiskelijahallinto-ohjelmistoon
LisätiedotGoogle Cloud Print -opas
Google Cloud Print -opas Tietoja Google Cloud Printistä Tulostaminen Google Cloud Printillä Liite Sisällys Tietoja oppaasta... 2 Oppaassa käytetyt symbolit... 2 Vastuuvapauslauseke... 2 1. Tietoja Google
LisätiedotSukupuu -ohjelma. Ossi Väre (013759021) Joni Virtanen (013760641)
Sukupuu -ohjelma Ossi Väre (013759021) Joni Virtanen (013760641) 7.11.2011 1 Johdanto Toteutimme C -kielellä sukupuuohjelman, johon käyttäjä voi lisätä ja poistaa henkilöitä ja määrittää henkilöiden välisiä
LisätiedotMaanmittauslaitoksen nimistö Spatialite-tietokantana. - kuvitettu ohje Quantum GIS 1.8.0 -ohjelmaa varten
Maanmittauslaitoksen nimistö Spatialite-tietokantana - kuvitettu ohje Quantum GIS 1.8.0 -ohjelmaa varten Taustaa Maanmittauslaitoksen nimistöaineistot ovat ladattavissa tekstitiedostoina Maanmittauslaitoksen
LisätiedotVISUAALISEN PALVELUN TALLENNUS- JA TOISTO-OHJE
VISUAALISEN PALVELUN TALLENNUS- JA TOISTO-OHJE VISUAALISEN PALVELUN TALLENNUS- JA TOISTO-OHJE Soita tallentavaan virtuaalihuoneeseen Telia tallentava virtuaalihuone Voit tallentaa kokouksen ja jakaa sen
LisätiedotELM GROUP 04. Teemu Laakso Henrik Talarmo
ELM GROUP 04 Teemu Laakso Henrik Talarmo 23. marraskuuta 2017 Sisältö 1 Johdanto 1 2 Ominaisuuksia 2 2.1 Muuttujat ja tietorakenteet...................... 2 2.2 Funktiot................................
LisätiedotTutoriaaliläsnäoloista
Tutoriaaliläsnäoloista Tutoriaaliläsnäolokierroksella voi nyt täyttää anomuksen läsnäolon merkitsemisestä Esim. tagi ei toiminut, korvavaltimon leikkaus, yms. Hyväksyn näitä omaa harkintaa käyttäen Tarkoitus
LisätiedotJavaScript alkeet Esimerkkikoodeja moniste 2
JavaScript alkeet Esimerkkikoodeja moniste 2 Esim 5.1 laskujärjestys operaattorit var tulos = 5 + 4 * 12 / 4; document.write("5 + 4 * 12 / 4 laskutoimituksen tulos on " + tulos,"");
LisätiedotSuvi Junes Tietohallinto / Opetusteknologiapalvelut 2012
Tiedostot Uudet ominaisuudet: - Ei Tiedostot-kohtaa alueen sisällä, vaan tiedostonvalitsin, jolla tiedostot tuodaan alueelle siihen kohtaan missä ne näytetään - Firefox-selaimella voi työpöydältä raahata
LisätiedotKÄYTTÖOHJE / Ver 1.0 / Huhtikuu WordPress KÄYTTÖOHJE Sotkamo 2016
/ / WordPress KÄYTTÖOHJE Sotkamo 2016 Sisältö Sisältö 1. Yleistä 2. Kirjautuminen ylläpitoon 2.1. Kirjaudu osoitteessa: http://sotkamo.valudata.fi/admin Myöhemmin: http://www.sotkamo.fi/admin 2.2 Salasana
LisätiedotTiedonhallinnan perusteet. Viikko 1 Jukka Lähetkangas
Tiedonhallinnan perusteet Viikko 1 Jukka Lähetkangas Kurssilla käytävät asiat Tietokantojen toimintafilosofian ja -tekniikan perusteet Tiedonsäilönnän vaihtoehdot Tietokantojen suunnitteleminen internetiä
LisätiedotWebforum. Version 14.4 uudet ominaisuudet. Viimeisin päivitys: 2014-12-6
Webforum Version 14.4 uudet ominaisuudet Viimeisin päivitys: 2014-12-6 Sisältö Tietoja tästä dokumentista... 3 Yleistä... 4 Yleistä & hallinnointi... 5 Dokumentit... 5 Perättäinen tarkistus- ja hyväksymisprosessi...
LisätiedotKuva: Ilpo Okkonen
OodiHOPS OHJAAJAN OHJE 14.2.2017 Kuva: Ilpo Okkonen OodiHOPS Oulun yliopistossa Oulun yliopiston koulutusneuvosto on päättänyt, että OodiHOPS-toiminto otetaan käyttöön vähintään aloittavilla opiskelijoilla
LisätiedotTällä viikolla. Kotitehtävien tarkistus Upotettu SQL Indeksi-harjoitus täydennetään pelifirman tietokantamallia SQL-tehtäviä
Tällä viikolla Kotitehtävien tarkistus Upotettu SQL Indeksi-harjoitus täydennetään pelifirman tietokantamallia SQL-tehtäviä Seuraavissa harjoituksissa käytetään tukkukauppa-kantaa. 1. Hae kaikki toimittajat
Lisätiedot811120P Diskreetit rakenteet
811120P Diskreetit rakenteet 2018-2019 1. Algoritmeista 1.1 Algoritmin käsite Algoritmi keskeinen laskennassa Määrittelee prosessin, joka suorittaa annetun tehtävän Esimerkiksi Nimien järjestäminen aakkosjärjestykseen
LisätiedotTietokannat II -kurssin harjoitustyö
Tietokannat II -kurssin harjoitustyö Jyri Lehtonen (72039), jkoleh@utu.fi Azad Hajipour (72187), azhaji@utu.fi 10.6.2007 Sisältö 1. Tietokannan kuvaus... 1 1.1 Tietokannan rakenne... 1 1.2 Relaatiokaava
LisätiedotPalvelinpuolen ohjelmointi
Palvelinpuolen ohjelmointi Staattiset ja dynaamiset web-sivut Staattiset web-sivut ovat valmiissa muodossaan palvelimella (tai paikallisesti omalla koneella). Javascript mahdollistaa paikalliset dynaamiset
LisätiedotOsallistavan suunnittelun kyselytyökalu
Osallistavan suunnittelun kyselytyökalu Käyttöohje InnoGIS- hankkeen aikana kehitetylle pilottiversiolle Dokumentti sisältää pilottiversiona toimivan kyselyn laatimiseen ja vastaamiseen liittyvän ohjeistuksen.
LisätiedotJoomla pikaopas. Yksinkertainen opas, jossa neuvotaan esimerkkisivuston teko Joomla julkaisujärjestelmällä vaihe vaiheelta.
Joomla pikaopas Yksinkertainen opas, jossa neuvotaan esimerkkisivuston teko Joomla julkaisujärjestelmällä vaihe vaiheelta. Paavo Räisänen www.ohjelmoimaan.net Tätä opasta saa vapaasti kopioida, tulostaa
LisätiedotToteutusdokumentti. Aija. Helsinki 1.9.2005 Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteenlaitos
Toteutusdokumentti Aija Helsinki 1.9.2005 Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteenlaitos Sisältö 1. Johdanto...3 2. SQL -lauseet...3 3. Ajastettutoiminta - backrun.php...3
LisätiedotOhjelmoinnin perusteet Y Python
Ohjelmoinnin perusteet Y Python T-106.1208 2.3.2009 T-106.1208 Ohjelmoinnin perusteet Y 2.3.2009 1 / 28 Puhelinluettelo, koodi def lue_puhelinnumerot(): print "Anna lisattavat nimet ja numerot." print
LisätiedotRaporttiarkiston (RATKI) käyttöohjeet Ohjeet
Raporttiarkiston (RATKI) käyttöohjeet Ohjeet 15.11.2012 1.0 Vastuutaho TRAFI Sisällys Raporttiarkiston (RATKI) käyttöohjeet 1 1. Johdanto 3 1.1. Esitiedot 3 1.2. Käyttöoikeudet 3 1.3. Sisäänkirjautuminen
LisätiedotOhjelmoinnin perusteet Y Python
Ohjelmoinnin perusteet Y Python T-106.1208 2.3.2011 T-106.1208 Ohjelmoinnin perusteet Y 2.3.2011 1 / 39 Kertausta: tiedoston avaaminen Kun ohjelma haluaa lukea tai kirjoittaa tekstitiedostoon, on ohjelmalle
LisätiedotKäyttöohje. Ticket Inspector. Versio 1.0. Sportum Oy
Käyttöohje Ticket Inspector Versio 1.0 Sportum Oy 10.5.2017 Sivu 1 Sisällysluettelo 1. Yleistä... 2 2. Kirjautuminen ensimmäisellä kerralla / PIN-koodin unohtuessa... 3 3. Tunnistautuminen... 4 4. Päänäkymä...
LisätiedotPikaopas. Ohjeiden etsiminen Hae ohjesisältöä napsauttamalla kysymysmerkkiä.
Pikaopas Microsoft Access 2013 näyttää erilaiselta kuin aiemmat versiot. Tämän oppaan avulla pääset alkuun nopeasti ja saat yleiskuvan uusista ominaisuuksista. Näyttökoon muuttaminen tai tietokannan sulkeminen
LisätiedotEntiteetit erotetaan muusta tekstistä & ja puolipiste. esim. copyright-merkki näkyy sivulla
1 ENTITEETIT Tehtävä 1. Tietokoneet ja käyttöjärjestelmät käyttävät erilaisia merkkijärjestelmiä ja varsinkin Internetin alkutaipaleella aiheutti sen, että jotkut merkit eivät näkyneet kaikilla oikein.
LisätiedotOhjelmoinnin perusteet Y Python
Ohjelmoinnin perusteet Y Python T-106.1208 15.2.2010 T-106.1208 Ohjelmoinnin perusteet Y 15.2.2010 1 / 46 Merkkijonot Merkkijonojen avulla ohjelmassa voi esittää tekstitietoa, esim. nimiä, osoitteita ja
LisätiedotITKP102 Ohjelmointi 1 (6 op)
ITKP102 Ohjelmointi 1 (6 op) Tentaattori: Antti-Jussi Lakanen 22. huhtikuuta 2016 Vastaa kaikkiin tehtäviin. Tee jokainen tehtävä erilliselle konseptiarkille! Kirjoittamasi luokat, funktiot ja aliohjelmat
LisätiedotOppimateriaalin lisääminen
Helsingin yliopisto 1 Oppimateriaalin lisääminen Tässä ohjeessa käsitellään oppimateriaalilinkin lisäämistä sekä opintokohteelle, että opetustapahtumalle. WebOodiin on mahdollista syöttää oppikirjojen
LisätiedotICT1TN004. Lomakkeet. Heikki Hietala
Lomakkeet Heikki Hietala Lomakkeet Lomakkeita käytetään keräämään tietoa käyttäjältä ja siirtämään se palvelimelle Lomakkeen luominen ei yksin riitä, vaan pitää luoda myös lomakkeenkäsittelijä Lomakkeen
LisätiedotDXL Library ja DXL-kielen olemus. Pekka Mäkinen Pekka.Makinen@softqa.fi SoftQA Oy http/www.softqa.fi/
DXL Library ja DXL-kielen olemus Pekka Mäkinen Pekka.Makinen@softqa.fi SoftQA Oy http/www.softqa.fi/ DOORS extension Language DXL on DOORSin laajennuskieli, jolla voidaan kehittää lisätoiminnallisuutta.
Lisätiedot1 PHP-sovelluksen toiminta
AMVA48-49 HTML ja PHP-ohjelmointi, 2 ov Yleistä kurssista HTMLperusteita PHP-kielen perusrakenteet HTMLlomakkeen käsittely Tiedoston käsittely Evästeiden käyttö Istunnon hallinta Oppimistehtävät PHP-KIELEN
LisätiedotFinFamily PostgreSQL installation ( ) FinFamily PostgreSQL
FinFamily PostgreSQL 1 Sisällys / Contents FinFamily PostgreSQL... 1 1. Asenna PostgreSQL tietokanta / Install PostgreSQL database... 3 1.1. PostgreSQL tietokannasta / About the PostgreSQL database...
LisätiedotOSAAMISENHALLINTA HENKILÖSTÖ. Esimiehen pikaohje
OSAAMISENHALLINTA HENKILÖSTÖ Esimiehen pikaohje Omat tiedot, etusivu Omien tietojen etusivulla näkyy kirjautuneen käyttäjän nimi sekä käytössä olevat osiot Näkymäksi voi valita joko ns. Tiilet tai Etusivun
LisätiedotKyselyn yleisrakenne:
SQL kysely Kyselyn yleisrakenne: select tulostietomäärittely from taulukkeet [where valintaehdot] [group by ryhmitystekijät] [having ryhmärajoitteet] [order by järjestysperusta] Kysely tuottaa nimettömän
LisätiedotT-111.361 Hypermediadokumentin laatiminen. Sisältö. Tavoitteet. Mitä on www-ohjelmointi? Arkkitehtuuri (yleisesti) Interaktiivisuuden keinot
T-111.361 Hypermediadokumentin laatiminen -Ohjelmointi Peruskäsitys www-ohjelmoinnin kentästä Tekniikat interaktiivisuuden toteuttamiseen tekniikat tekniikat Tietokannat Juha Laitinen TKK/TML juha.laitinen@hut.fi
LisätiedotOhjelmoinnin perusteet Y Python
Ohjelmoinnin perusteet Y Python T-106.1208 7.2.2011 T-106.1208 Ohjelmoinnin perusteet Y 7.2.2011 1 / 39 Kännykkäpalautetteen antajia kaivataan edelleen! Ilmoittaudu mukaan lähettämällä ilmainen tekstiviesti
LisätiedotTimeEdit opiskelijan ohje TimeEdit-instructions for students from this link
TimeEdit opiskelijan ohje TimeEdit-instructions for students from this link TimeEdit on työjärjestys- (lukujärjestys) ja tilanvarausohjelmisto. Sisältö 1 Oikeudet... 2 2 TimeEdit Web... 2 3 Kirjautuminen...
LisätiedotVisma Fivaldi -käsikirja Tehtävienhallinta- ohje käyttäjälle
Visma Fivaldi -käsikirja Tehtävienhallinta- ohje käyttäjälle 2 Sisällys 1 Palvelunhallinta... 3 1.1 Käyttäjäryhmän luominen... 3 2 Tehtävienhallinta- perustiedot... 4 2.1 Yhtiön perustiedot... 4 2.2 Tehtävä-/
LisätiedotITKP102 Ohjelmointi 1 (6 op), arvosteluraportti
ITKP2 Ohjelmointi 1 (6 op), arvosteluraportti Tentaattori: Antti-Jussi Lakanen 17. toukokuuta 219 Yleistä Tentti 1 oli pistekeskiarvon (14,6) perusteella hieman tavanomaista helpompi. Omasta tehtäväpaperista
LisätiedotVisma Business AddOn Factoring-laskuaineisto. Käyttäjän käsikirja
Visma Business AddOn Factoring-laskuaineisto Käyttäjän käsikirja Oppaan päiväys: 09.06.2011 Asiakaspalvelu: Helpdesk: www.visma.fi Visma Software Oy pidättää itsellään oikeuden mahdollisiin parannuksiin
Lisätiedot1 www-sivujen teko opetuksessa
RäsSe, Tekniikka/Kuopio Sivu 1 1 www-sivujen teko opetuksessa 1.1 Yleistä Mitä materiaalia verkkoon? Tyypillisesti verkossa oleva materiaali on html-tiedostoja. Näitä tiedostoja tehdään jollakin editorilla
LisätiedotHyperlinkin tekeminen artikkeliin
Hyperlinkin tekeminen artikkeliin 1 Hyperlinkit artikkelissa Ovat yleensä linkkejä PIKIn hakutuloksiin (yksittäinen teos tai hakutuloslista) tai PIKin muihin sivuihin Muihin tietolähteisiin: Wikipedia,
LisätiedotOSA I Aloitetaan. Oppitunti. 1. PHP: Kotisivusta portaaliin 2. PHP:n asentaminen 3. Ensimmäinen skriptisi. 17 Johdanto
17 Johdanto OSA I Aloitetaan Oppitunti 1. PHP: Kotisivusta portaaliin 2. PHP:n asentaminen 3. Ensimmäinen skriptisi 18 1. Kotisivusta Portaaliin 19 OPPITUNTI 1 PHP: Kotisivusta portaaliin Tervetuloa PHP-maailmaan!
LisätiedotOhjelmoinnin jatkokurssi, kurssikoe 28.4.2014
Ohjelmoinnin jatkokurssi, kurssikoe 28.4.2014 Kirjoita jokaiseen palauttamaasi konseptiin kurssin nimi, kokeen päivämäärä, oma nimi ja opiskelijanumero. Vastaa kaikkiin tehtäviin omille konsepteilleen.
LisätiedotHelsingin Sanomat ipad
Helsingin Sanomat ipad Sovelluksen mainosaineistojen tekniset ohjeet: kokosivu ja etusivu 13.5.2013 SISÄLLYS ipad-mainokset 2 Tekniikka ja tiedostokoot 3 Orientaatio 4 Linkit: richie-modal-browser 4 Gesture
LisätiedotEnnakkosuunnitelman luonti
Elokuu 2019 JETI-pikaohje Ennakkosuunnitelman luonti Tämän dokumentin sisällöstä Tämä dokumentti on pikaohje ennakkosuunnitelman laadinnasta ja koskee seuraavia ennakkosuunnitelman luomisen vaiheita: 1.
Lisätiedot