OPPITUNTI 12 MySQL-tietokannan käyttö

Koko: px
Aloita esitys sivulta:

Download "OPPITUNTI 12 MySQL-tietokannan käyttö"

Transkriptio

1 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 funktioita on myös monille muille tietokannoille, joita PHP tukee. Miksi juuri MySQL? Se sopii hyvin PHP:n henkeen, koska sekin on ilmainen tavalliselle käyttäjälle; kyseessä on kuitenkin tehokas työkalu, joka sopii vaativiinkin käytännön projekteihin. MySQL-versiota on lisäksi saatavilla useille eri alustoille. Voit ladata MySQL-työkalun osoitteesta Tämän tunnin aiheita ovat seuraavat: Muutamia SQL-näytteitä Kuinka MySQL-tietokantapalvelimelle kytkeydytään Kuinka tietokanta valitaan Virheiden käsittely Tiedon lisääminen taulukkoon Tiedon saaminen taulukosta Taulukossa olevan tiedon muuttaminen Tietokannan rakenne

2 MySQL-tietokannankäyttö Lyhyt SQL-johdanto SQL tulee sanoista Structured Query Language. Se tarjoaa standardin syntaksin, jolla voidaan tehdä kyselyjä tietokannasta. Useimmat SQL-tietokantatuotteet tarjoavat omia laajennuksiaan kieleen samalla lailla kuin selaimilla on omia HTML-erikoiskoodejaan. SQL-syntaksin ymmärtäminen antaa kuitenkin eväät useimpien tietokantatuotteiden käyttämiseen; myös alustat voivat vaihdella. Tämä kirja ei pyri millään lailla kuvaamaan SQL:n koko kontekstia eikä se ota esille myöskään MySQL:n taustoja. MySQL pyörii palvelindemonina, johon käyttäjät voivat kytkeytyä joko samalta koneelta tai etäkoneilta. Kun palvelimeen on kytkeydytty, voidaan valita tietokanta, mikäli käyttöoikeudet sen sallivat. Tietokannan sisällä on vaihteleva määrä tietoa taulukoissa. Kukin taulukko koostuu riveistä ja sarakkeista. Rivin ja sarakkeen leikkaus muodostaa solun, johon tieto tallennetaan. Kukin sarake hyväksyy tiettyjä ennalta määritettyjä tietotyyppejä: esimerkiksi kokonaislukuja varten on INT-tietotyyppi ja merkkejä varten VARCHAR-tietotyyppi. Uusi taulukko luodaan tietokantaan seuraavanlaisella SQL-kyselyllä: CREATE TABLE mytable ( first_name VARCHAR(30), second_name VARCHAR(30), age INT); Nyt uudessa taulukossamme on kolme saraketta. Sarakkeen (kentän) first_name ja second_name sisältönä voi olla enintään 30 merkkiä. Sarakkeessa age voi olla kokonaisluku. Tietoa lisätään taulukkoon INSERT-lauseella: INSERT INTO mytable ( first_name, second_name, age ) VALUES ( 'John', 'Smith', 36 A ); Kenttien nimet on annettu ensimmäisten sulkumerkkien sisällä; sijoitettavat arvot ovat vastaavasti toisen sulkumerkkiparin sisällä. Tietoa voidaan ottaa esille tietokannasta SELECT-lauseella: SELECT * FROM mytable; Koodissa oleva asteriski (*) on jokerimerkki ja tarkoittaa kaikki kentät. Saadaksemme tietoa yhdestä kentästä on sarakkeen nimi kirjoitettava jokerimerkin sijaan: SELECT age FROM mytable; Taulukossa olevia tietoja voi muuttaa UPDATE-lauseella:

3 12. MySQL-tietokannankäyttö 213 UPDATE mytable SET first_name = 'Bert'; Lause muuttaa kentän first_name arvoksi Bert jokaisella rivillä. Voimme kaventaa SELECT- ja UPDATElauseiden vaikutusaluetta WHERE-osalla. Esimerkiksi näin: SELECT * FROM mytable WHERE first_name = 'Bert'; Nyt lause palauttaa vain ne rivit, joissa first_name-kenttä sisältää merkkijonon Bert. Tämä seuraava esimerkki muuttaa arvon Bert kaikkien niiden rivien first_name-kenttiin, joilla second_name-kenttä sisältää arvon Baker : UPDATE mytable SET first_name = "Bert" WHERE second_name = "Baker"; Saat lisätietoa SQL-kielestä esimerkiksi Samsin teoksista. Tietokantapalvelimeen kytkeytyminen Ennen kuin alat työskennellä tietokannallasi, sinun tulee kytkeytyä palvelimelle. Siihen PHP tarjoaa funktion mysql_connect(). Funktio ei vaadi mitään argumentteja, mutta sille voidaan antaa kolme merkkijonoa: palvelimen nimi, käyttäjätunnus ja salasana. Jos jokin argumenteista tai ne kaikki jätetään pois, funktio olettaa, että localhost on palvelin. Mitään salasanaa tai käyttäjätunnusta ei myöskään ole asetettu mysqluser-taulukossa, ellei oletuksia ole asetettu php.ini-tiedostossa. Argumentit voidaan tietenkin jättää pois vain testitietokantaa käytettäessä. Esimerkeissämme käytämme aina käyttäjätunnusta ja salasanaa. Funktio palauttaa linkkitunnisteen, jos kytkeytyminen on onnistunut. Voit tallentaa palautusarvon muuttujaan, jotta voit jatkaa työskentelyä tietokantapalvelimen kanssa. Seuraava koodilohko käyttää mysql_connect()- funktiota MySQL-tietokantapalvelimelle kytkeytymiseen: $link = mysql_connect( "localhost", "root", "n1ckel" ); if (! $link ) die( "Couldn't connect to MySQL" ); Jos käytät PHP:tä Apachen kanssa, voit kytkeytyä tietokantapalvelimeen myös mysql_pconnect()- funktiolla. Itse asiassa siinä on merkittävä ero. Jos käytät tätä funktiota, yhteys ei katkea, kun skriptisi lopettaa suorituksen tai jos kutsut mysql_close()-funktiota (joka lopettaa standardiyhteyden MySQLpalvelimelle). Sen sijaan yhteys jää aktiiviseksi odottaen toista prosessia kutsumaan mysql_pconnect()- funktiota. Toisin sanoen uutta yhteyttä ei tarvitse avata palvelimelle, jolloin resursseja säästyy; aiempi kutsu on jättänyt yhteyden auki.

4 MySQL-tietokannankäyttö Tietokannan valitseminen Kun olet nyt toteuttanut yhteyden MySQL-demoniin, voitkin valita tietokannan, jolla haluaisit työskennellä. Tietokanta valitaan mysql_select_db()-funktiolla. Funktio ottaa argumentikseen tietokannan nimen ja valinnaisen linkkitunnisteen. Jos tunniste jätetään pois, käytetään oletuksena edellisessä kytkeytymisessä palautettua tunnistetta. Funktio palauttaa arvon true, jos tietokanta on olemassa ja sitä voidaan käsitellä. Seuraava koodilohko valitsee tietokannan nimeltä sample: $database = "sample"; mysql_select_db( $sample ) or die ( "Couldn't open $sample ); Virheistä selviytyminen Toistaiseksi olemme testanneet MySQL-funktion palautusarvot ja käyttäneet die()-funktiota lopettamaan skriptin suoritus, jos ongelmia ilmenee. Voisit kuitenkin lisäksi tulostaa tietoa virheestä selaimelle voidaksesi paremmin korjata virheen. MySQL asettaa virhenumeron ja virhemerkkijonon aina, kun toiminto ei onnistu. Saat virhenumeron esille funktiolla mysql_errno() ja virhetekstin funktiolla mysql_error(). Listaus 12.1 sisältää aiemmat esimerkkimme; siinä kytkeydytään tietokantapalvelimelle ja valitaan tietokanta. Käytämme mysql_error()-funktiota selkeyttämään virheilmoituksia. Listaus 12.1 Yhteyden avaaminen ja tietokannan valitseminen 1: <html> 2: <head> 3: <title>listing 12.1 Opening a connection and 4: selecting a database</title> 5: </head> 6: <body> 7: <?php 8: $user = "harry"; 9: $pass = "elbomonkey"; 10: $db = "sample"; 11: $link = mysql_connect( "localhost", $user, $pass ); 12: if (! $link ) 13: die( "Couldn't connect to MySQL" ); 14: print "Successfully connected to server<p>"; 15: mysql_select_db( $db ) 16: or die ( "Couldn't open $db: ".mysql_error() ); 17: print "Successfully selected database \"$db\"<p>"; 18: mysql_close( $link );

5 12. MySQL-tietokannankäyttö :?> 20: </body> 21: </html> Jos muutamme $db-muuttujan arvoksi notthere, yritämme avata tietokantaa, jota ei ole olemassa. Tällöin die()-funktion tulostus näyttää jokseenkin seuraavalta: Couldn't open sample2: Access denied for user: to database 'sample2' Tiedon lisääminen taulukkoon Kun olemme nyt saaneet esille tietokannan, voimme lisätä tietoa sen taulukoihin. Seuraavissa esimerkeissä oletetaan, että olemme kehittämässä sivustoa, jonka kautta voidaan ostaa domain-nimiä. Olemme luoneet domains-nimisen taulukon sample-tietokantaan. Taulukossa on viisi saraketta: peruavain nimeltä id, joka kasvaa automaattisesti yhdellä, kun uusi tietue lisätään taulukkoon, domain-kenttä, jossa on vaihteleva määrä merkkejä (VARCHAR), sex-kenttä, jossa on yksittäinen merkki ja mail-kenttä, joka sisältää käyttäjän -osoitteen. Seuraava SQL-lause luo taulukon: create table domains ( id INT NOT NULL AUTO_INCREMENT, PRIMARY KEY( id ), domain VARCHAR( 20 ), sex CHAR(1), mail VARCHAR( 20 ) ); Lisätäksemme tietoa taulukkoon meidän tulee muodostaa SQL-kysely ja ajaa se. PHP tarjoaa tähän tarkoitukseen mysql_query()-funktion. Funktio ottaa argumentikseen merkkijonon, jossa on SQL-kysely ja valinnaisen linkkitunnisteen. Jos tunniste jätetään pois, kysely lähetetään sille tietokantapalvelimelle, johon viimeksi kytkeydyttiin. Funktio palauttaa positiivisen arvon, jos kysely onnistuu. Jos kyselyssä on syntaksivirhe tai jos tietokannan käyttöön ei ole riittäviä oikeuksia, funktio palauttaa false-arvon. Huomaa, että onnistunut kysely ei välttämättä johda muutettuihin riveihin. Listaus 12.2 on laajennettu versio edellisestä esimerkistämme; siinä käytetään mysql_query()-funktiota lähettämään INSERT-komento sample-tietokannan domains-taulukolle. Listaus 12.2 Rivin lisääminen taulukkoon 1: <html> 2: <head> 3: <title>listing 12.2 Adding a row to a table</title> 4: </head>

6 MySQL-tietokannankäyttö 5: <body> 6: <?php 7: $user = "harry"; 8: $pass = "elbomonkey"; 9: $db = "sample"; 10: $link = mysql_connect( "localhost", $user, $pass ); 11: if (! $link ) 12: die( "Couldn't connect to MySQL" ); 13: mysql_select_db( $db, $link ) 14: or die ( "Couldn't open $db: ".mysql_error() ); 15: $query = "INSERT INTO domains ( domain, sex, mail ) 16: values( '123xyz.com', 'F', 'sharp@adomain.com' )"; 17: mysql_query( $query, $link ) 18: or die ( "Couldn't add data to \"domains\" table: " 19:.mysql_error() ); 20: mysql_close( $link ); 21:?> 22: </body> 23: </html> Huomaa, että emme laittaneet arvoa id-kenttään. Kyseinen kenttä kasvattaa automaattisesti itseään. Aina kun lataamme listauksen 12.2 skriptin, sama tieto lisätään tietenkin uudelle riville. Listauksessa 12.3 käyttäjän antamat tiedot lisätään tietokantaamme. Listaus 12.3 Käyttäjän syöttämien tietojen lisääminen tietokantaan 1: <html> 2: <head> 3: <title>listing 12.3 Adding user input to a database</title> 4: </head> 5: <body> 6: <?php 7: if ( isset( $domain ) && isset( $sex ) && isset( $domain ) ) 8: { 9: // tarkista syöttötieto!

7 12. MySQL-tietokannankäyttö : $dberror = ""; 11: $ret = add_to_database( $domain, $sex, $mail, $dberror ); 12: if (! $ret ) 13: print "Error: $dberror<br>"; 14: else 15: print "Thank you very much"; 16: } 17: else { 18: write_form(); 19: } 20: 21: function add_to_database( $domain, $sex, $mail, &$dberror ) 22: { 23: $user = "harry"; 24: $pass = "elbomonkey"; 25: $db = "sample"; 26: $link = mysql_pconnect( "localhost", $user, $pass ); 27: if (! $link ) 28: { 29: $dberror = "Couldn't connect to MySQL server"; 30: return false; 31: } 32: if (! mysql_select_db( $db, $link ) ) 33: { 34: $dberror = mysql_error(); 35: return false; 36: } 37: $query = "INSERT INTO domains ( domain, sex, mail ) 38: values( '$domain', '$sex', '$mail' )"; 39: if (! mysql_query( $query, $link ) ) 40: { 41: $dberror = mysql_error(); 42: return false;

8 MySQL-tietokannankäyttö 43: } 44: return true; 45: } 46: 47: function write_form() 48: { 49: global $PHP_SELF; 50: print "<form action=\"$php_self\" method=\"post\">\n"; 51: print "<input type=\"text\" name=\"domain\"> "; 52: print "The domain you would like<p>\n"; 53: print "<input TYPE=\"text\" name=\"mail\"> "; 54: print "Your mail address<p>\n"; 55: print "<select name=\"sex\">\n"; 56: print "\t<option value=\"f\"> Female\n"; 57: print "\t<option value=\"m\"> Male\n"; 58: print "</select>\n"; 59: print "<input type=\"submit\" value=\"submit!\">\n</form>\n"; 60: } 61:?> 62: </body> 63: </html> Pitääksemme esimerkin lyhyenä olemme jättäneet pois merkittävän prosessin listauksesta Luotamme käyttäjiimme. Itse asiassa meidän tulisi tarkistaa, millaista tietoa käyttäjä syöttää. Käsittelemme merkkijonofunktioita, jotka helpottavat testaamista, luvussa 17, Merkkijonojen käsittely. Tarkistamme koodissamme muuttujat $domain, $sex ja $mail. Jos ne ovat olemassa, voimme olla melko varmoja siitä, että muuttujat on lähetetty käyttäjän toimesta ja voimme kutsua sitten add_to_database()-funktiota. Funktio ottaa neljä argumenttia: muuttujat $domain, $sex ja $mail sekä merkkijonomuuttujan $dberror. Viimeiseen muuttujaan laitetaan mahdolliset virhetekstit ja siksi $dberror on nyt viittaustyyppinen parametri. Kaikki muutokset, jotka tapahtuvat muuttujalle funktion toimesta, muuttavat alkuperäistä muuttujaa, eikä kyseessä siis ole kopio. Yritämme avata yhteyden MySQL-palvelimelle. Jos se epäonnistuu, sijoitamme virhetekstin $dberrormuuttujaan ja lopetamme muuttujan ajamisen palauttamalla arvon false. Valitsemme tietokannan, jossa on domains-taulukko ja muodostamme SQL-kyselyn, joka laittaa käyttäjän lähettämät tiedot tietokantaan. Kyselyteksti viedään mysql_query()-funktiolle, joka hoitaa kyselyn suorittamisen. Jos joko mysql_select_db() tai mysql_query() epäonnistuu, sijoitetaan mysql_error()-funktion palauttama arvo $dberror-muuttujaan ja palautetaan false kutsuvalle ohjelmalle. Jos kaikki menee hyvin, funktio palauttaa arvon true.

9 12. MySQL-tietokannankäyttö 219 Kutsuvassa koodissa testataan add_to_database()-funktion palauttama arvo. Jos se on true, voimme olla varmoja siitä, että tiedot on lisätty tietokantaan ja voimme kiittää käyttäjää siitä. Muutoin tulostamme virhetekstin selaimelle. Tiedämme, että $dberror sisältää nyt tärkeää tietoa, joten laitamme sen mukaan virheilmoitukseen. Jos alussa oleva if-lause ei onnistu löytämään $domain-, $sex- tai $mail-muuttujia, oletamme, että mitään tietoa ei ole lähetetty, ja kutsumme toista käyttäjän määrittelemää funktiota, write_form(), joka tulostaa HTML-lomakkeen selaimelle. Automaattisesti inkrementoidun kentän arvon saaminen Edellisissä esimerkeissämme lisäsimme tietoa tietokantaan murehtimatta id-sarakkeesta, joka kasvaa automaattisesti yhdellä aina uutta tietoa lisättäessä. Jos meidän on saatava esille tuon kentän arvo, voimme aina käyttää SQL-kyselyä. Entäpä, jos arvoa tarvittaisiin aivan heti? Olisi tuhlaavaista lähteä hakemaan sitä SQL-kyselyllä. Onneksi PHP tarjoaa käyttöön mysql_insert_id()-funktion, joka palauttaa automaattisesti kasvatetun kentän arvon INSERT-tyyppisen SQL-kyselyn suorittamisen jälkeen. Funktio ottaa valinnaiseksi argumentiksi linkkitunnisteen. Jos mitään argumentteja ei anneta, funktio käyttää viimeksi toteutettua linkkiä. Jos siis haluamme kertoa käyttäjälle numeroarvon, joka uudelle tietueelle generoitiin, voimme käyttää mysql_insert_id()-funktiota heti tietojen lisäämisen jälkeen. $query = "INSERT INTO domains ( domain, sex, mail ) values( '$domain', '$sex', A '$mail' )"; mysql_query( $query, $link ); $id = mysql_insert_id(); print "Thank you. Your transaction number is $id. Please quote it in any A queries."; Tiedon ottaminen esille Kun osaat nyt lisätä tietoa tietokantaan, on aika tutkia menettelytapoja, joilla tieto saadaan esille. Kuten arvaatkin, voit käyttää mysql_query()-funktiota ja tehdä SELECT-kyselyn. Kuinka sitten pääset tutkimaan palautettuja rivejä? Kun olet suorittanut onnistuneen SELECT-kyselyn, mysql_query() palauttaa tulostunnisteen. Voit viedä tuon tunnisteen muille funktioille käsitelläksesi tulosjoukkoa. Kyselyn antaman rivimäärän selvittäminen SELECT-kyselyn tuloksena saatujen rivien määrä saadaan esille mysql_num_rows()-funktiolla. Se ottaa argumentikseen tulostunnisteen ja palauttaa joukossa olevien rivien määrän. Listaus 12.4 käyttää SELECTkyselyä kaikkien domains-taulukossa olevien rivien palauttamiseen. Sen jälkeen esimerkissä käytetään mysql_num_rows()-funktiota määrittämään taulukon koko.

10 MySQL-tietokannankäyttö Listaus 12.4 SELECT-kyselyn palauttamien rivien määrän selvittäminen 1: <html> 2: <head> 3: <title>listing 12.4 Using mysql_num_rows()</title> 4: </head> 5: <body> 6: <?php 7: $user = "harry"; 8: $pass = "elbomonkey"; 9: $db = "sample"; 10: $link = mysql_connect( "localhost", $user, $pass ); 11: if (! $link ) 12: die( "Couldn't connect to MySQL" ); 13: mysql_select_db( $db, $link ) 14: or die ( "Couldn't open $db: ".mysql_error() ); 15: $result = mysql_query( "SELECT * FROM domains" ); 16: $num_rows = mysql_num_rows( $result ); 17: print "There are currently $num_rows rows in the table<p>"; 18: mysql_close( $link ); 19:?> 20: </body> 21: </html> Kyselyfunktion palauttama tulostunniste viedään mysql_num_rows()-funktiolla, joka palauttaa rivien määrän. Tulosjoukon käsittely Kun olet suorittanut SELECT-kyselyn ja saanut esille tulostunnisteen, voit käydä silmukassa läpi jokaisen rivin vuoron perään. PHP ylläpitää sisäistä osoitinta, joka kertoo sijainnin rivijoukossa. Osoitin siirtyy seuraavalle riville yhden rivin käsittelyn jälkeen. Voit saada helposti esille rivillä olevien kenttien taulukon mysql_fetch_row()-funktiolla. Se ottaa argumentikseen tulostunnisteen ja palauttaa taulukon, joka sisältää rivin kaikki kentät. Kun tulosjoukon loppu kohdataan, mysql_fetch_row() palauttaa arvon false. Listaus 12.5 tulostaa domain-taulukon kokonaan selaimelle.

11 12. MySQL-tietokannankäyttö 221 Listaus 12.5 Taulukon kaikkien rivien ja kenttien tulostaminen 1: <html> 2: <head> 3: <title>listing 12.5 Listing all rows and fields in a table</title> 4: </head> 5: <body> 6: <?php 7: $user = "harry"; 8: $pass = "elbomonkey"; 9: $db = "sample"; 10: $link = mysql_connect( "localhost", $user, $pass ); 11: if (! $link ) 12: die( "Couldn't connect to MySQL" ); 13: mysql_select_db( $db, $link ) 14: or die ( "Couldn't open $db: ".mysql_error() ); 15: $result = mysql_query( "SELECT * FROM domains" ); 16: $num_rows = mysql_num_rows( $result ); 17: print "There are currently $num_rows rows in the table<p>"; 18: print "<table border=1>\n"; 19: while ( $a_row = mysql_fetch_row( $result ) ) 20: { 21: print "<tr>\n"; 22: foreach ( $a_row as $field ) 23: print "\t<td>$field</td>\n"; 24: print "</tr>\n"; 25: } 26: print "</table>\n"; 27: mysql_close( $link ); 28:?> 29: </body> 30: </html>

12 MySQL-tietokannankäyttö Kun olemme kytkeytyneet palvelimelle ja valinneet tietokannan, käytämme mysql_query()-funktiota lähettämään SELECT-lause tietokantapalvelimelle. Palautettu tulososoitin tallennetaan $result-muuttujaan. Käytämme sitä löydettyjen rivien määrän esille ottamiseen, kuten ennenkin. While-lauseen testiehdossa sijoitetaan mysql_fetch_row()-funktion palauttama tulos $a_row-muuttujaan. Muista, että sijoitusoperaattori palauttaa operaattorin oikealla puolella olevan arvon, joten sijoituslauseen tulos on true niin kauan kuin mysql_fetch_row() palauttaa positiivisen arvon. While-lauseen rungossa käydään läpi kukin $a_row-taulukko ja tulostetaan kukin elementti selaimelle, taulukon soluun. Voit saada esille myös kenttien nimet kahdella eri tavalla. Funktio mysql_fetch_array() palauttaa numeerisen taulukon samalla lailla kuin mysql_fetch_row(). Se palauttaa myös assosiatiivisen taulukon, jonka avaimina ovat kenttien nimet. Seuraava koodilohko kirjoittaa listauksen 12.5 while-lauseen uudelleen ja hyödyntää siinä mysq_fetch_array()-funktiota: print "<TABLE BORDER=1>\n"; while ( $a_row = mysql_fetch_array( $result ) ) { print "<TR>\n"; print "<TD>$a_row[mail]</TD><TD>$a_row[domain]</TD>\n"; print "</TR>\n"; } print "</TABLE>\n"; Voit saada kentät esille riviltä myös objektin ominaisuuksina funktiolla mysql_fetch_object(). Kenttien nimistä tulee ominaisuuksien nimiä. Seuraava koodilohko kirjoittaa listauksen 12.5 while-lauseen taas uudelleen, tällä kertaa siinä käytetään mysql_fetch_object()-funktiota: print "<table border=1>\n"; while ( $a_row = mysql_fetch_object( $result ) ) { print "<tr>\n"; print "<td>$a_row->mail</td><td>$a_row->domain</td>\n"; print "</tr>\n"; } print "</table>\n"; Sekä mysql_fetch_array()- että mysql_fetch_object()-funktio helpottavat tiedon saamista riveiltä. Kumpikaan funktioista ei vie suoritusaikaa juurikaan enempää kuin mysql_fetch_row().

13 12. MySQL-tietokannankäyttö 223 Tiedon muuttaminen Voit muuttaa tietoa mysql_query()-funktiolla käyttämällä UPDATE-lausetta. Onnistunut päivitys ei välttämättä muuta taulukon rivejä. On kutsuttava mysql_affected_rows()-funktiota selvittämään, ovatko taulukon tiedot muuttuneet. Funktio ottaa valinnaiseksi argumentikseen linkkitunnisteen. Jos sitä ei anneta, funktio käyttää viimeksi generoitua linkkitunnistetta. Funktiota voidaan käyttää SQL-kyselyssä taulukon rivin tietojen muuttamiseen. Listaus 12.6 muodostaa skriptin, joka sallii hallintahenkilön muuttaa mitä tahansa domain-taulukon saraketta. Listaus 12.6 Rivien muuttaminen mysql_query()-funktiolla 1: <html> 2: <head> 3: <title>listing 12.6 Using mysql_query() 4: to alter rows in a database</title> 5: </head> 6: <body> 7: <?php 8: $user = "harry"; 9: $pass = "elbomonkey"; 10: $db = "sample"; 11: $link = mysql_connect( "localhost", $user, $pass ); 12: if (! $link ) 13: die( "Couldn't connect to MySQL" ); 14: mysql_select_db( $db, $link ) 15: or die ( "Couldn't open $db: ".mysql_error() ); 16: if ( isset( $domain ) && isset( $id ) ) 17: { 18: $query = "UPDATE domains SET domain = '$domain' where id=$id"; 19: $result = mysql_query( $query ); 20: if (! $result ) 21: die ("Couldn't update: ".mysql_error()); 22: print "<h1>table updated ". mysql_affected_rows(). 23: " row(s) changed</h1><p>"; 24: } 25:?>

14 MySQL-tietokannankäyttö 26: <form action="<? print $PHP_SELF?>" method="post"> 27: <select name="id"> 28: <? 29: $result = mysql_query( "SELECT domain, id FROM domains" ); 30: while( $a_row = mysql_fetch_object( $result ) ) 31: { 32: print "<OPTION VALUE=\"$a_row->id\""; 33: if ( isset($id) && $id == $a_row->id ) 34: print " SELECTED"; 35: print "> $a_row->domain\n"; 36: } 37: mysql_close( $link ); 38:?> 39: </select> 40: <input type="text" name="domain"> 41: </form> 42: </body> 43: </html> Avaamme yhteyden tietokantapalvelimelle ja valitsemme tietokannan normaalisti. Sitten testaamme, ovatko muuttujat $domain ja $id olemassa. Jos ovat, muodostamme UPDATE-kyselyn, joka muuttaa sen rivin domain-kentän arvoa, jossa id on sama kuin muuttujassa $id. Emme tule aiheuttaneeksi virhettä, jos idarvoa ei ole olemassa tai jos $domain sisältää saman arvon kuin rivin domain-kenttä. Sen sijaan mysql_affected_rows() palauttaa tuolloin pelkän nollan. Tulostamme palautusarvon (tavallisesti 1 tässä esimerkissä) selaimelle. Tulostamme HTML-lomakkeen, jonka kautta hallintahenkilö voi tehdä muutoksia. Huomaa, että käytämme mysql_query()-funktiota uudelleen siepataksemme id- ja domain-kenttien arvot ja yhdistääksemme ne SELECT-komponenttiin. Hallintahenkilö voi käyttää tätä alasvetovalikkoa valitakseen muutettavan domainin. Jos hallintahenkilö on jo lähettänyt lomakkeen ja hänen valitsemansa id-arvo vastaa juuri tulostettavaa idkenttää, lisäämme merkkijonon SELECTED OPTION-alkioon. Näin varmistamme, että muutettu arvo on heti näkyvillä valikossa. Tietokantaa koskevan tiedon selvittäminen Toistaiseksi olemme tutkineet tiedon lisäämistä tietokantaan ja sen esille ottamista tietokannasta. PHP tarjoaa käyttöön funktioita, joilla saadaan esille numerotietoa ja rakennetietoa tietokannasta.

15 12. MySQL-tietokannankäyttö 225 Tietokantojen luetteleminen Luettelo kaikista nykyisen yhteyden päässä olevista tietokannoista saadaan funktiolla mysql_list_dbs(). Funktio hyväksyy valinnaisen linkkitunnisteen ja palauttaa tulostunnisteen, jota voidaan käyttää tulostamaan kaikki saatavilla olevat tietokannat. Tulostaminen tehdään mysql_tablename()-funktiolla. Funktio ottaa kaksi argumenttia: tulososoittimen ja tietokannan indeksin. Se palauttaa viitatun tietokannan nimen. Tietokantojen indeksointi alkaa nollasta (0). Tietokantojen määrä saadaan selville kutsumalla mysql_num_rows()-funktiota, jonka argumenttina on mysql_list_dbs()-funktion palauttama tulostunniste. Listaus 12.7 kytkeytyy MySQL-demoniin ja tulostaa luettelon tietokannoista selaimelle. Listaus 12.7 Yhteyden tietokantojen luetteleminen 1: <html> 2: <head> 3: <title>listing 12.7 Listing the databases 4: available in a connection</title> 5: </head> 6: <body> 7: <?php 8: $user = "harry"; 9: $pass = "elbomonkey"; 10: $link = mysql_connect( "localhost", $user, $pass ); 11: if (! $link ) 12: die( "Couldn't connect to MySQL" ); 13: $db_res = mysql_list_dbs( $link ); 14: $num = mysql_num_rows( $db_res ); 15: for( $x = 0; $x < $num; $x++ ) 16: print mysql_tablename( $db_res, $x )."<br>"; 17: mysql_close( $link ); 18:?> 19: </body> 20: </html> Funktion mysql_list_dbs() kutsu palauttaa tulososoittimen. Voimme käyttää tulososoitinta saadaksemme löydettyjen kohteiden kokonaismäärän. Tulososoitin viedään mysql_num_rows()-funktiolle argumenttina. Sijoitamme tuon määrän $num-muuttujaan, jota käytetään sitten for-lauseessa. Kullakin silmukkakierroksella viemme mysql_tablename()-funktiolle tulososoittimen ja indeksin $x. Indeksi kasvaa nollasta arvoon $num-1. Kuva 12.1 näyttää listauksen 12.7 tulostuksen. Voisit käyttää myös mysql_list_dbs()-funktion palauttamaa tulostunnistetta samalla lailla kuin mysql_query()-funktion palauttamaa tunnistetta SELECT-

16 MySQL-tietokannankäyttö kyselyssä. Voit siis viedä tunnisteen mysql_fetchrow()-funktiolle; se palauttaa taulukon, jonka ensimmäisenä alkiona on tietokannan nimi. KUVA 12.1 Kaikkien tietokantojen listaaminen Tietokannan taulukoiden luetteleminen Tietokannan taulukot voidaan luetella funktiolla mysql_list_tables(); se ottaa argumentikseen tietokannan nimen ja (valinnaisen) linkkitunnisteen. Jos tietokanta löytyy ja sinulla on oikeudet sen käyttämiseen, mysql_list_tables() palauttaa tulostunnisteen, jota voit käyttää fetch()-funktioiden yhteydessä (esimerkiksi mysql_fetch_row()-funktion kanssa). Vaihtoehtoisesti voit käyttää mysql_tablename()-funktiota, kuten teimme mysql_list_dbs()-funktion yhteydessä. Seuraava koodilohko käyttää mysql_list_tables()-funktiota listaamaan tietokannan kaikki taulukot: $result = mysql_list_tables( "sample", $link ); while ( $tab_rows = mysql_fetch_row( $result ) ) print "$tab_rows[0]<br>\n"; Kenttien listaaminen ja tutkiminen Kun saat esille tulostunnisteen SELECT-kyselyä tekevältä mysql_query()-funktiolta, voit laskea palautettujen sarakkeiden määrän mysql_num_fields()-funktiolla. Funktio ottaa tulostunnisteen argumentikseen ja palauttaa kokonaisluvun, joka kertoo löydettyjen kenttien määrän: $result = mysql_query( "SELECT * from domains" ); $num_fields = mysql_num_fields( $result );

17 12. MySQL-tietokannankäyttö 227 Kullakin kentällä on indeksi (joka alkaa nollasta). Tulostunnisteen ja kentän indeksin perusteella saadaan esille kentän ominaisuudet, esimerkiksi nimi, tyyppi, maksimipituus ja liput. Kentän nimi saadaan esille viemällä mysql_field_name()-funktiolle tulostunniste ja kentän indeksi: $result = mysql_query( "SELECT * from domains" ); $num_fields = mysql_num_fields( $result ); for ( $x=0; $x<$num_fields; $x++ ) mysql_field_name( $result, $x ). "<BR>\n"; Kentän maksimipituus saadaan vastaavasti funktiolla mysql_field_len(): $result = mysql_query( "SELECT * from domains" ); $num_fields = mysql_num_fields( $result ); for ( $x=0; $x<$num_fields; $x++ ) mysql_field_len( $result, $x ). "<BR>\n"; Kentän liput saadaan esille vastaavasti funktiolla mysql_field_flags(): $result = mysql_query( "SELECT * from domains" ); $num_fields = mysql_num_fields( $result ); for ( $x=0; $x<$num_fields; $x++ ) mysql_field_flags( $result, $x ). "<BR>\n"; Kentän tyyppi saadaan esille funktiolla mysql_field_type(): $result = mysql_query( "SELECT * from domains" ); $num_fields = mysql_num_fields( $result ); for ( $x=0; $x<$num_fields; $x++ ) mysql_field_flags( $result, $x ). "<BR>\n"; Tietokannan rakenne: kaikki yhdessä Listaus 12.8 yhdistää kaikki edellä kuvatut tekniikat, joilla lueteltiin tietokannat, taulukot ja kentät.

18 MySQL-tietokannankäyttö Listaus 12.8 Jokaisen tietokannan, taulukon ja kentän luetteleminen 1: <html> 2: <head> 3: <title>listing 12.8 Listing every database, table, and field</title> 4: </head> 5: <body> 6: <?php 7: $user = "root"; 8: $pass = "n1ckel"; 9: $db = "sample"; 10: $link = mysql_connect( "localhost", $user, $pass ); 11: if (! $link ) 12: die( "Couldn't connect to MySQL" ); 13: $db_res = mysql_list_dbs( $link ); 14: while ( $db_rows = mysql_fetch_row( $db_res ) ) 15: { 16: print "<b>$db_rows[0]</b>\n"; 17: if (!@mysql_select_db( $db_rows[0], $link ) ) 18: { 19: print "<dl><dd>couldn't connect -- ". mysql_error()." </dl>"; 20: continue; 21: } 22: $tab_res = mysql_list_tables( $db_rows[0], $link ); 23: print "\t<dl><dd>\n"; 24: while ( $tab_rows = mysql_fetch_row( $tab_res ) ) 25: { 26: print "\t<b>$tab_rows[0]</b>\n"; 27: $query_res = mysql_query( "SELECT * from $tab_rows[0]" ); 28: $num_fields = mysql_num_fields( $query_res ); 29: print "\t\t<dl><dd>\n"; 30: for ( $x=0; $x<$num_fields; $x++ ) 31: {

19 12. MySQL-tietokannankäyttö : print "\t\t<i>"; 33: print mysql_field_type( $query_res, $x ); 34: print "</i> <i>"; 35: print mysql_field_len( $query_res, $x ); 36: print "</i> <b>"; 37: print mysql_field_name( $query_res, $x ); 38: print "</b> <i>"; 39: print mysql_field_flags( $query_res, $x ); 40: print "</i><br>\n"; 41: } 42: print "\t\t</dl>\n"; 43: } 44: print "\t</dl>\n"; 45: } 46: mysql_close( $link ); 47:?> 48: </body> 49: </html> Kytkeydymme MySQL-palvelimelle tavalliseen tapaan ja kutsumme mysql_list_dbs()-funktiota saadaksemme esille tulostunnisteen. Viemme tunnisteen mysql_fetch_row()-funktiolle, joka palauttaa vuorostaan tietokantojen nimet (ne on tallennettu $db_rows-taulukon ensimmäiseen alkioon). Viemme kunkin tietokannan nimen sitten mysql select_db()-funktiolle. Jos oikeutemme eivät riitä, tulostuu viesti selaimelle ja continue-lauseen kautta jatketaan eteenpäin seuraavalle kierrokselle. Jos tietokanta saadaan valituksi, tulostetaan kyseisen tietokannan taulukoiden nimet. Viemme tietokannan nimen mysql_list_tables()-funktiolle ja saamme uuden tulostunnisteen. Jälleen kerran viemme sen mysql_fetch_row()-funktiolle, joka alkaa tulostaa silmukassa taulukoiden nimiä. Tulostamme taulukon nimen ja käytämme sitten SQL-kielistä SELECT-kyselyä, joka hakee taulukon kaikki kentät ja rivit. Viemme kyselyn mysql_query()-funktiolle ja saamme nyt toisen tulostunnisteen. Se viedään mysql_num_fields()-funktiolle, joka palauttaa kenttien määrän. Sitten käytämme for-lausetta käymään läpi tulosjoukon ja tulostamaan sitten sarakkeiden ominaisuustiedot. Sarakkeiden indeksit (laskurimuuttujassa $x) alkavat nollasta ja maksimiarvo on sarakkeiden määrä vähennettynä yhdellä. Sarakkeiden kohdalla kutsutaan sitten juuri käsiteltyjä kentän testausfunktioita.

20 MySQL-tietokannankäyttö Kun skripti on ajettu, selaimella tulisi olla siisti tulostus, jossa näkyvät yhdeyden päässä olevat tietokannat, tietokannoissa olevat taulukot ja taulukoiden kenttätiedot. Kuva 12.2 esittää osan tulostuksesta. KUVA 12.2 Jokaisen tietokannan, taulukon ja kentän luetteleminen. Yhteenveto Tällä tunnilla käsittelimme MySQL-tietokantoja. Tutkimme, kuinka tietoa tallennetaan tietokantoihin ja kuinka sitä saadaan esille tietokannoista. Sinun tulisi nyt osata toteuttaa kytkeytyminen MySQL-tietokantaan käyttäen mysql_connect()- tai mysql_pconnect()-funktiota. Tietokannan valintaan voit sitten käyttää mysql_select_db()-funktiota. Jos valinta epäonnistuu, saat esille virheinformaatiota mysql_error()-funktiolla. SQL-kyselyjä voit laatia mysql_query()-funktiolla. Funktio palauttaa tulostunnisteen, jonka avulla päästään tietoon käsiksi ja saadaan selville muuttuneiden rivien määrä. Sinun tulisi nyt osata käyttää PHP:n MySQL-funktioita saadaksesi esille myös luettelon tietokannoista, taulukoista ja kentistä sekä lisätietoa kenttien ominaisuuksista. K&V Q Tällä tunnilla käsiteltiin MySQL-tietokantoja. Kuinka hyvin voin siirtää näitä esimerkkejä muihin SQLtietokantoihin? V On olemassa MySQL-funktioita, jotka ovat lähes samanlaisia kuin MySQL-funktiot. Muilla tietokantapalvelimilla on vastaavia PHP-funktioita, jotka tukevat niiden piirteitä ja mahdollisuuksia. Eri lähteistä tulevilla tietokantafunktioilla on yhteisenä piirteenä mahdollisuus SQL-kyselyihin. Jos käytät ANSIstandardin mukaista SQL-syntaksia, sinulla ei pitäisi olla ongelmia sovittaa skriptisi eri tietokantapalvelimille.

Harjoituksen aiheena on tietokantapalvelimen asentaminen ja testaaminen. Asennetaan MySQL-tietokanta. Hieman linkkejä:

Harjoituksen 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ätiedot

Tuotteiden tiedot: Lisää uuden tuotteen tiedot. Muuta tai poista tuotteen tiedot. Selaa kaikkien tuotteiden tietoja.

Tuotteiden 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ätiedot

LINUX-HARJOITUS, MYSQL

LINUX-HARJOITUS, MYSQL LINUX-HARJOITUS, MYSQL 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ätiedot

OPPITUNTI 11 DBM-funktioiden käyttö

OPPITUNTI 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ätiedot

OPPITUNTI 19 Tilan tallentaminen evästeiden ja kyselymerkkijonojen avulla

OPPITUNTI 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ätiedot

OPPITUNTI 5 Ohjelman kulku

OPPITUNTI 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ätiedot

SELVITYSRAPORTTI LABRA-VERKON MYSQL:n JA PHP:n KÄYTTÖÖNOTOSTA. Jarkko Kähkönen

SELVITYSRAPORTTI LABRA-VERKON MYSQL:n JA PHP:n KÄYTTÖÖNOTOSTA. Jarkko Kähkönen SELVITYSRAPORTTI LABRA-VERKON MYSQL:n JA PHP:n KÄYTTÖÖNOTOSTA Sisällysluettelo Luku 1 - Oman LABRA-sivutilan asennus ja käyttöönotto... 2 1.1 - LABRA-osoitteesi... 2 1.2 LABRA-tilan käyttö (verkko-asemana

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 16.2.2010 T-106.1208 Ohjelmoinnin perusteet Y 16.2.2010 1 / 41 Kännykkäpalautetteen antajia kaivataan edelleen! Ilmoittaudu mukaan lähettämällä ilmainen tekstiviesti

Lisätiedot

Proseduurit, 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 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ätiedot

PROSEDUURIT, 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, FUNKTIOT JA HERÄTTIMET - ESIMERKKEINÄ ORACLE, SQL SERVER, MYSQL JA OCELOT JOUNI HUOTARI K2009 PROSEDUURIT Ohjelmamoduuleita, jotka voidaan tallettaa tietokantaan (DBMS:n tietohakemistoon)

Lisätiedot

OPPITUNTI 3 Ensimmäinen skripti

OPPITUNTI 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ätiedot

TIETOKANTOJEN PERUSTEET MARKKU SUNI

TIETOKANTOJEN PERUSTEET MARKKU SUNI TIETOKANTOJEN PERUSTEET MARKKU SUNI SQL - KIELI TIETOJEN MUOKKAUS MARKKU SUNI Tarkastellaan tauluissa olevien tietojen muokkausta muokkauskäskyjä: INSERT UPDATE DELETE Kysymys kuuluu: Voiko tietoja muokata

Lisätiedot

Johdanto Javaan ja tietokantojen käsittelyyn Java Database Connectivity (JDBC)

Johdanto Javaan ja tietokantojen käsittelyyn Java Database Connectivity (JDBC) HAAGA-HELIA ICT1TA006: Ohjelmointi 1 /5 Johdanto Javaan ja tietokantojen käsittelyyn Java Database Connectivity (JDBC) (Lähteet: Oracle java jdbc Tutorial, Arvo Lipitsäinen: Tietokannan käsittely JDBC:n

Lisätiedot

Written by Administrator Monday, 05 September 2011 15:14 - Last Updated Thursday, 23 February 2012 13:36

Written 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ätiedot

SQL-perusteet, SELECT-, INSERT-, CREATE-lauseet

SQL-perusteet, SELECT-, INSERT-, CREATE-lauseet SQL-perusteet, SELECT-, INSERT-, CREATE-lauseet A271117, Tietokannat Teemu Saarelainen teemu.saarelainen@kyamk.fi Lähteet: Leon Atkinson: core MySQL Ari Hovi: SQL-opas TTY:n tietokantojen perusteet-kurssin

Lisätiedot

Harjoitustyö: virtuaalikone

Harjoitustyö: virtuaalikone Harjoitustyö: virtuaalikone Toteuta alla kuvattu virtuaalikone yksinkertaiselle olio-orientoituneelle skriptauskielelle. Paketissa on testaamista varten mukana kaksi lyhyttä ohjelmaa. Ohjeita Noudata ohjelman

Lisätiedot

OPPITUNTI 24 Esimerkki (Osa 2)

OPPITUNTI 24 Esimerkki (Osa 2) 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.

Lisätiedot

6. Funktiot 85. Kuinka funktioita määritellään ja kutsutaan. Kuinka funktioille viedään arvoja ja niistä palautetaan arvoja

6. 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ätiedot

TIEDONHALLINTA - SYKSY Luento 11. Hannu Markkanen /10/12 Helsinki Metropolia University of Applied Sciences

TIEDONHALLINTA - SYKSY Luento 11. Hannu Markkanen /10/12 Helsinki Metropolia University of Applied Sciences TIEDONHALLINTA - SYKSY 2011 Kurssikoodi: Saapumisryhmä: Luento 11 TU00AA48-2002 TU10S1E Hannu Markkanen 22.11.2011 9/10/12 Helsinki Metropolia University of Applied Sciences 1 Indeksit Indeksit Taulun

Lisätiedot

Ohjelmoinnin peruskurssi Y1

Ohjelmoinnin 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ätiedot

SQL Buddy JAMK Labranet Wiki

SQL 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ätiedot

Sisällys. 11. Javan toistorakenteet. Laskurimuuttujat. Yleistä

Sisällys. 11. Javan toistorakenteet. Laskurimuuttujat. Yleistä Sisällys 11. Javan toistorakenteet Laskuri- ja lippumuuttujat.. Tyypillisiä ohjelmointivirheitä: Silmukan rajat asetettu kierroksen verran väärin. Ikuinen silmukka. Silmukoinnin lopettaminen break-lauseella.

Lisätiedot

ITKP102 Ohjelmointi 1 (6 op)

ITKP102 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ätiedot

JavaScript alkeet Esimerkkikoodeja moniste 2 (05.10.11 Metropolia)

JavaScript 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ätiedot

Tiedonhallinnan perusteet. H11 Ovien ja kulun valvontajärjestelmän tietokanta

Tiedonhallinnan perusteet. H11 Ovien ja kulun valvontajärjestelmän tietokanta Tiedonhallinnan perusteet H11 Ovien ja kulun valvontajärjestelmän tietokanta Nimi: Mikko Haapanen Opiskelijanumero: 0900568 Ryhmä: T09L Työ tehty: 15.3.2010 Mikko Haapanen 15.3.2010 1(7) 1. Asiakasvaatimukset

Lisätiedot

C-kielessä taulukko on joukko peräkkäisiä muistipaikkoja, jotka kaikki pystyvät tallettamaan samaa tyyppiä olevaa tietoa.

C-kielessä taulukko on joukko peräkkäisiä muistipaikkoja, jotka kaikki pystyvät tallettamaan samaa tyyppiä olevaa tietoa. Taulukot C-kielessä taulukko on joukko peräkkäisiä muistipaikkoja, jotka kaikki pystyvät tallettamaan samaa tyyppiä olevaa tietoa. Taulukon muuttujilla (muistipaikoilla) on yhteinen nimi. Jokaiseen yksittäiseen

Lisätiedot

OPPITUNTI15 Päivämäärien käsittely

OPPITUNTI15 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ätiedot

SQL - STRUCTURED QUERY LANGUAGE

SQL - STRUCTURED QUERY LANGUAGE SQL Peruskomentoja SQL - STRUCTURED QUERY LANGUAGE SQL on tietokantojen käsittelyyn kehitetty kieli Esimerkkejä kielellä hoidettavistaa toiminnoista: Tietokannan rakenteen määrittely ja muuttaminen Kyselyt

Lisätiedot

Alkuarvot ja tyyppimuunnokset (1/5) Alkuarvot ja tyyppimuunnokset (2/5) Alkuarvot ja tyyppimuunnokset (3/5)

Alkuarvot ja tyyppimuunnokset (1/5) Alkuarvot ja tyyppimuunnokset (2/5) Alkuarvot ja tyyppimuunnokset (3/5) Alkuarvot ja tyyppimuunnokset (1/5) Aiemmin olemme jo antaneet muuttujille alkuarvoja, esimerkiksi: int luku = 123; Alkuarvon on oltava muuttujan tietotyypin mukainen, esimerkiksi int-muuttujilla kokonaisluku,

Lisätiedot

Tiedonhallinnan perusteet. Viikko 1 Jukka Lähetkangas

Tiedonhallinnan 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ätiedot

Opettajana Mika Sorsa, mika.sorsa@koudata.fi, HAMK:n ammatillisen opettajakoulutuksen opetusharjoittelija

Opettajana Mika Sorsa, mika.sorsa@koudata.fi, HAMK:n ammatillisen opettajakoulutuksen opetusharjoittelija Opettajana Mika Sorsa, mika.sorsa@koudata.fi, HAMK:n ammatillisen opettajakoulutuksen opetusharjoittelija Opintojaksolla: keskitytään relaatiotietokantojen teoriaan ja toimintaan SQL-kieli kyselykielenä

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin 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ätiedot

TIETOKANNAT: MYSQL & POSTGRESQL Seminaarityö

TIETOKANNAT: MYSQL & POSTGRESQL Seminaarityö TIETOKANNAT: MYSQL & POSTGRESQL Seminaarityö Tekijät: Eemeli Honkonen Joni Metsälä Työ palautettu: SISÄLLYSLUETTELO: 1 SEMINAARITYÖN KUVAUS... 3 2 TIETOKANTA... 3 2.1 MITÄ TIETOKANNAT SITTEN OVAT?... 3

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin 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ätiedot

Kirjasto Relaatiotietokannat Kevät 2001. Auvinen Annemari Niemi Anu Passoja Jonna Pulli Jari Tersa Tiina

Kirjasto Relaatiotietokannat Kevät 2001. Auvinen Annemari Niemi Anu Passoja Jonna Pulli Jari Tersa Tiina Kirjasto Kevät 2001 Auvinen Annemari Niemi Anu Harjoitustyö 7.4.2001 Sisällysluettelo 1. Yleiskuvaus... 3 2. Vaatimukset... 3 2.1. Toiminnalliset... 3 2.1.1. Sisäänkirjautuminen... 3 2.1.2. Nimikkeiden

Lisätiedot

Zeon PDF Driver Trial

Zeon 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ätiedot

MUITA TIETOKANTAOBJEKTEJA NÄKYMÄT, SYNONYYMIT, INDEKSOINTI, VALTUUDET JA SYSTEEMIHAKEMISTO

MUITA TIETOKANTAOBJEKTEJA NÄKYMÄT, SYNONYYMIT, INDEKSOINTI, VALTUUDET JA SYSTEEMIHAKEMISTO MUITA TIETOKANTAOBJEKTEJA NÄKYMÄT, SYNONYYMIT, INDEKSOINTI, VALTUUDET JA SYSTEEMIHAKEMISTO NÄKYMÄT Näkymä (view) on looginen näyte tietokannan tauluista tai näkymistä Näkymä ei voi sisältää SELECT INTO,

Lisätiedot

Insert lauseella on kaksi muotoa: insert into taulu [(sarakenimet)] values (arvot)

Insert lauseella on kaksi muotoa: insert into taulu [(sarakenimet)] values (arvot) SQL sisältää operaatiot tietokannan sisällön muodostamiseen ja ylläpitoon: insert - uusien rivien vienti tauluun delete - rivien poisto update - rivien muutos 1 Insert lauseella on kaksi muotoa: insert

Lisätiedot

11. oppitunti III. Viittaukset. Osa. Mikä on viittaus?

11. oppitunti III. Viittaukset. Osa. Mikä on viittaus? Osa III 11. oppitunti Viittaukset Kahdessa viime luvussa opit käyttämään osoittimia kohteiden käsittelyyn vapaalla muistialueella sekä viittaamaan noihin kohteisiin epäsuorasti. Tässä luvussa käsiteltävät

Lisätiedot

7. Taulukot 105. Kuinka taulukoiden tietoa käsitellään ja lajitellaan

7. 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ätiedot

HELIA TIKO-05 1 (22) ICT03D Tieto ja tiedon varastointi E.Räty, O.Virkki 9.3.2010

HELIA TIKO-05 1 (22) ICT03D Tieto ja tiedon varastointi E.Räty, O.Virkki 9.3.2010 HELIA TIKO-05 1 (22) SQL SQL... 2 Historiaa... 2 Standardit... 3 Käyttö... 4 Sql-komentojen kirjoittaminen... 5 DDL... 7 Tietokantaobjektien määrittely... 7 SQL:n tietotyypit... 8 Eheyssääntöjen määrittely...

Lisätiedot

System.out.printf("%d / %d = %.2f%n", ekaluku, tokaluku, osamaara);

System.out.printf(%d / %d = %.2f%n, ekaluku, tokaluku, osamaara); Kysy Karilta tai Kimmolta, jos tehtävissä on jotain epäselvää. Kerro WETOon liittyvät ongelmat suoraan Jormalle sähköpostitse (jorma.laurikkala@uta.fi). Muista nimetä muuttujat hyvin sekä kommentoida ja

Lisätiedot

WWW-PALVELUN KÄYTTÖÖNOTTO LOUNEA OY

WWW-PALVELUN KÄYTTÖÖNOTTO LOUNEA OY 1 WWW-PALVELUN KÄYTTÖÖNOTTO LOUNEA OY 10.4.2015 Lounea Oy Tehdaskatu 6, 24100 Salo Puh. 029 707 00 Y-tunnus 0139471-8 www.lounea.fi Asiakaspalvelu 0800 303 00 Yrityspalvelu 0800 303 01 Myymälät 0800 303

Lisätiedot

Makrojen mystinen maailma lyhyt oppimäärä

Makrojen 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ätiedot

Luento 5. Timo Savola. 28. huhtikuuta 2006

Luento 5. Timo Savola. 28. huhtikuuta 2006 UNIX-käyttöjärjestelmä Luento 5 Timo Savola 28. huhtikuuta 2006 Osa I Shell-ohjelmointi Ehtolause Lausekkeet suoritetaan jos ehtolausekkeen paluuarvo on 0 if ehtolauseke then lauseke

Lisätiedot

Tällä viikolla. Kotitehtävien läpikäynti Aloitetaan Pelifirman tietovaraston suunnittelu Jatketaan SQL-harjoituksia

Tällä viikolla. Kotitehtävien läpikäynti Aloitetaan Pelifirman tietovaraston suunnittelu Jatketaan SQL-harjoituksia Tällä viikolla Kotitehtävien läpikäynti Aloitetaan Pelifirman tietovaraston suunnittelu Jatketaan SQL-harjoituksia 1.) Mainitse tietokonepelistä (kuvitteellisesta tai todellisesta) esimerkkitilanteita,

Lisätiedot

Muita tietokantaobjekteja. Näkymät, synonyymit, indeksointi, valtuudet ja systeemihakemisto

Muita tietokantaobjekteja. Näkymät, synonyymit, indeksointi, valtuudet ja systeemihakemisto Muita tietokantaobjekteja Näkymät, synonyymit, indeksointi, valtuudet ja systeemihakemisto Näkymät Näkymä (view) on looginen näyte tietokannan tauluista tai näkymistä Näkymä ei voi sisältää SELECT INTO,

Lisätiedot

System.out.printf("%d / %d = %.2f%n", ekaluku, tokaluku, osamaara);

System.out.printf(%d / %d = %.2f%n, ekaluku, tokaluku, osamaara); Mikäli tehtävissä on jotain epäselvää, laita sähköpostia vastuuopettajalle (jorma.laurikkala@uta.fi). Muista nimetä muuttujat hyvin sekä kommentoida ja sisentää koodisi. Ohjelmointitehtävien osalta palautetaan

Lisätiedot

Asiointipalvelun ohje

Asiointipalvelun ohje Asiointipalvelun ohje Yleistä 1. Kirjautuminen 2. Yhteystiedot 3. Vastaustavan valinta 1. Yleistä 2. Palkkatietojen lataaminen tiedostosta 4. Lomake 1. Yleistä 2. Linkit ja vastaajan tiedot 3. Lomakekäsittely

Lisätiedot

Harjoitus 3 (viikko 39)

Harjoitus 3 (viikko 39) Mikäli tehtävissä on jotain epäselvää, laita sähköpostia vastuuopettajalle (jorma.laurikkala@uta.fi). Muista nimetä muuttujat hyvin sekä kommentoida ja sisentää koodisi. Vältä liian pitkiä rivejä. Ohjelmointitehtävien

Lisätiedot

Osa. Listaus 2.1. HELLO.CPP esittelee C++ -ohjelman osat. 14: #include <iostream.h> 15: 16: int main() 17: {

Osa. Listaus 2.1. HELLO.CPP esittelee C++ -ohjelman osat. 14: #include <iostream.h> 15: 16: int main() 17: { Osa I 2. oppitunti C++-ohjelman osat Ennen kuin menemme yksityiskohtaisemmin sisälle C++-luokkiin, -muuttujiin jne, katsokaamme ensin, millaisista osista C++-ohjelma koostuu. Tämän tunnin aikana opit seuraavat

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 25.2.2009 T-106.1208 Ohjelmoinnin perusteet Y 25.2.2009 1 / 34 Syötteessä useita lukuja samalla rivillä Seuraavassa esimerkissä käyttäjä antaa useita lukuja samalla

Lisätiedot

11. Javan toistorakenteet 11.1

11. Javan toistorakenteet 11.1 11. Javan toistorakenteet 11.1 Sisällys Laskuri- ja lippumuuttujat. Sisäkkäiset silmukat. Tyypillisiä ohjelmointivirheitä: Silmukan rajat asetettu kierroksen verran väärin. Ikuinen silmukka. Silmukoinnin

Lisätiedot

Fakta versio 5.3.0.1069 Forecast versio 1.3.0.53

Fakta versio 5.3.0.1069 Forecast versio 1.3.0.53 1 (7) Fakta versio 5.3.0.1069 versio 1.3.0.53 Ohessa on luettelo uusista ja muuttuneista toiminnoista ja ominaisuuksista version x.2.1 jälkeen. Porautuminen saldoista tapahtuariveille.. Jako on mahdollista

Lisätiedot

12. Javan toistorakenteet 12.1

12. Javan toistorakenteet 12.1 12. Javan toistorakenteet 12.1 Sisällys Yleistä toistorakenteista. Laskurimuuttujat. While-, do-while- ja for-lauseet. Laskuri- ja lippumuuttujat. Tyypillisiä ohjelmointivirheitä. Silmukan rajat asetettu

Lisätiedot

CSE-A1200 Tietokannat

CSE-A1200 Tietokannat CSE-A1200 Tietokannat 29.3.2016 CSE-A1200 Tietokannat 29.3.2016 1 / 40 Oppimistavoitteet: tämän luennon jälkeen Tiedät, miten tietokannan relaatioiden (taulujen) määrittelyt kirjoitetaan SQL:llä. Osaat

Lisätiedot

OPPITUNTI 20 Tilan tallentaminen istuntofunktioilla

OPPITUNTI 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ätiedot

Taulukot. Jukka Harju, Jukka Juslin 2006 1

Taulukot. Jukka Harju, Jukka Juslin 2006 1 Taulukot Jukka Harju, Jukka Juslin 2006 1 Taulukot Taulukot ovat olioita, jotka auttavat organisoimaan suuria määriä tietoa. Käsittelylistalla on: Taulukon tekeminen ja käyttö Rajojen tarkastus ja kapasiteetti

Lisätiedot

815338A Ohjelmointikielten periaatteet Harjoitus 3 vastaukset

815338A Ohjelmointikielten periaatteet Harjoitus 3 vastaukset 815338A Ohjelmointikielten periaatteet 2015-2016. Harjoitus 3 vastaukset Harjoituksen aiheena ovat imperatiivisten kielten muuttujiin liittyvät kysymykset. Tehtävä 1. Määritä muuttujien max_num, lista,

Lisätiedot

HSMT Tietokannoista. Ville Leppänen. HSMT, c Ville Leppänen, IT, Turun yliopisto, 2008 p.1/32

HSMT Tietokannoista. Ville Leppänen. HSMT, c Ville Leppänen, IT, Turun yliopisto, 2008 p.1/32 HSMT Tietokannoista Ville Leppänen HSMT, c Ville Leppänen, IT, Turun yliopisto, 2008 p.1/32 Missä mennään... 1. Johdanto (1h) 2. Säikeet (2h) 3. Samanaikaisuudesta (2h) 4. Hajautetuista sovelluksista (1h)

Lisätiedot

Tietokannat. CREATE TABLE table(col1,col2,... ); Luo uuden taulun. CREATE TABLE opiskelijat(opnumero,etunimi,sukunimi);

Tietokannat. CREATE TABLE table(col1,col2,... ); Luo uuden taulun. CREATE TABLE opiskelijat(opnumero,etunimi,sukunimi); Tietokannat SQL-peruskomentojen pikaopas CREATE TABLE table(col1,col2,... ); Luo uuden taulun. CREATE TABLE opiskelijat(opnumero,etunimi,sukunimi); INSERT INTO table VALUES(val1,val2,... ); Lisää tauluun

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin 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ätiedot

Tietotyypit ja operaattorit

Tietotyypit ja operaattorit Tietotyypit ja operaattorit Luennossa tarkastellaan yksinkertaisten tietotyyppien int, double ja char muunnoksia tyypistä toiseen sekä esitellään uusia operaatioita. Numeeriset tietotyypit ja muunnos Merkkitieto

Lisätiedot

Kirjoita oma versio funktioista strcpy ja strcat, jotka saavat parametrinaan kaksi merkkiosoitinta.

Kirjoita oma versio funktioista strcpy ja strcat, jotka saavat parametrinaan kaksi merkkiosoitinta. Tehtävä 63. Kirjoita oma versio funktiosta strcmp(),joka saa parametrinaan kaksi merkkiosoitinta. Tee ohjelma, jossa luetaan kaksi merkkijonoa, joita sitten verrataan ko. funktiolla. Tehtävä 64. Kirjoita

Lisätiedot

IDL - proseduurit. ATK tähtitieteessä. IDL - proseduurit

IDL - 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ätiedot

Ohjelmistojen mallintamisen ja tietokantojen perusteiden yhteys

Ohjelmistojen mallintamisen ja tietokantojen perusteiden yhteys Ohjelmistojen mallintamisen ja tietokantojen perusteiden yhteys Tällä kurssilla on tutustuttu ohjelmistojen mallintamiseen oliomenetelmiä ja UML:ää käyttäen Samaan aikaan järjestetyllä kurssilla on käsitelty

Lisätiedot

ATK tähtitieteessä. Osa 3 - IDL proseduurit ja rakenteet. 18. syyskuuta 2014

ATK 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ätiedot

811120P Diskreetit rakenteet

811120P 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ätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 26.1.2011 T-106.1208 Ohjelmoinnin perusteet Y 26.1.2011 1 / 34 Luentopalaute kännykällä käynnissä! Ilmoittaudu mukaan lähettämällä ilmainen tekstiviesti Vast

Lisätiedot

Excel-taulukkoon X- ja Y-sarakkeisiin tallennettujen koordinaattien muuntaminen paikkatietokohteiksi

Excel-taulukkoon X- ja Y-sarakkeisiin tallennettujen koordinaattien muuntaminen paikkatietokohteiksi Excel-taulukkoon X- ja Y-sarakkeisiin tallennettujen koordinaattien muuntaminen paikkatietokohteiksi Esimerkkinä Excel-taulukkona ladattavat Helsingin pysäköintilippuautomaatit Viimeksi muokattu 27. huhtikuuta

Lisätiedot

Ylläpitodokumentti Labra

Ylläpitodokumentti Labra Ylläpitodokumentti Labra Helsinki 26.8.2008 Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos 1 Kurssi 581260 Ohjelmistotuotantoprojekti (9+1op) Projektiryhmä Anssi Kapanen,

Lisätiedot

12. Javan toistorakenteet 12.1

12. Javan toistorakenteet 12.1 12. Javan toistorakenteet 12.1 Sisällys Yleistä toistorakenteista. Laskurimuuttujat. While-, do-while- ja for-lauseet. Laskuri- ja lippumuuttujat. Tyypillisiä ohjelmointivirheitä. Silmukan rajat asetettu

Lisätiedot

Koottu lause; { ja } -merkkien väliin kirjoitetut lauseet muodostavat lohkon, jonka sisällä lauseet suoritetaan peräkkäin.

Koottu lause; { ja } -merkkien väliin kirjoitetut lauseet muodostavat lohkon, jonka sisällä lauseet suoritetaan peräkkäin. 2. Ohjausrakenteet Ohjausrakenteiden avulla ohjataan ohjelman suoritusta. peräkkäisyys valinta toisto Koottu lause; { ja } -merkkien väliin kirjoitetut lauseet muodostavat lohkon, jonka sisällä lauseet

Lisätiedot

ICT1TN004. Lomakkeet. Heikki Hietala

ICT1TN004. 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ätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 2.2.2011 T-106.1208 Ohjelmoinnin perusteet Y 2.2.2011 1 / 37 Kännykkäpalautetteen antajia kaivataan edelleen! Ilmoittaudu mukaan lähettämällä ilmainen tekstiviesti

Lisätiedot

Ohjelmoinnin jatkokurssi, kurssikoe 28.4.2014

Ohjelmoinnin 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ätiedot

OpenOffice.org Base 3.1.0

OpenOffice.org Base 3.1.0 OpenOffice.org Base 3.1.0 Sisällysluettelo 1 Tietokannan luominen...1 2 Taulukon eli taulun luominen...3 3 Kysely...9 4 Raportti...14 1 Tietokannan luominen Tietokanta on kokoelma tietoja, joilla on yhteys

Lisätiedot

815338A Ohjelmointikielten periaatteet Harjoitus 2 vastaukset

815338A Ohjelmointikielten periaatteet Harjoitus 2 vastaukset 815338A Ohjelmointikielten periaatteet 2015-2016. Harjoitus 2 vastaukset Harjoituksen aiheena on BNF-merkinnän käyttö ja yhteys rekursiivisesti etenevään jäsentäjään. Tehtävä 1. Mitkä ilmaukset seuraava

Lisätiedot

Tietokannat. CREATE TABLE table(col1,col2,... ); Luo uuden taulun. CREATE TABLE opiskelijat(opnumero,etunimi,sukunimi);

Tietokannat. CREATE TABLE table(col1,col2,... ); Luo uuden taulun. CREATE TABLE opiskelijat(opnumero,etunimi,sukunimi); Tietokannat SQL-peruskomentojen pikaopas CREATE TABLE table(col1,col2,... ); Luo uuden taulun. CREATE TABLE opiskelijat(opnumero,etunimi,sukunimi); INSERT INTO table VALUES(val1,val2,... ); Lisää tauluun

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin 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ätiedot

3.1 Mitä tarkoittaan heredoc? Milloin sitä kannattaa käyttää? Kirjoita esimerkki sen käyttämisestä.

3.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ätiedot

Toimittajaportaalin rekisteröityminen Toimittajaportaalin sisäänkirjautuminen Laskun luonti Liitteen lisääminen laskulle Asiakkaiden hallinta Uuden

Toimittajaportaalin rekisteröityminen Toimittajaportaalin sisäänkirjautuminen Laskun luonti Liitteen lisääminen laskulle Asiakkaiden hallinta Uuden 1 Toimittajaportaalin rekisteröityminen Toimittajaportaalin sisäänkirjautuminen Laskun luonti Liitteen lisääminen laskulle Asiakkaiden hallinta Uuden asiakkaan lisääminen Laskujen haku Salasanan vaihto

Lisätiedot

Tietuetyypin määrittely toteutetaan C-kielessä struct-rakenteena seuraavalla tavalla:

Tietuetyypin määrittely toteutetaan C-kielessä struct-rakenteena seuraavalla tavalla: KERTAUSTEHTÄVIÄ Tietue Tietuetyypin määrittely toteutetaan C-kielessä struct-rakenteena seuraavalla tavalla: struct henkilotiedot char nimi [20]; int ika; char puh [10]; ; Edellä esitetty kuvaus määrittelee

Lisätiedot

JavaScript alkeet Esimerkkikoodeja moniste 2

JavaScript 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ätiedot

8. Oliot 123. Kuinka luokkia luodaan ja olioita saadaan aikaan. Kuinka luodaan ja käsitellään ominaisuuksia ja metodeja

8. 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ätiedot

Webpalvelin muistitikulle - Ohje

Webpalvelin muistitikulle - Ohje - Ohje Jari Sarja jari.sarja @ 2017 Creative Commons Nimeä-JaaSamoin 4.0 Kansainvälinen SISÄLLYSLUETTELO 1 Johdanto... 3 1.1 Miksi asennus muistitikulle?... 3 2 Webpalvelimen asennus... 4 3 Käyttöliittymä...

Lisätiedot

14. Hyvä ohjelmointitapa 14.1

14. Hyvä ohjelmointitapa 14.1 14. Hyvä ohjelmointitapa 14.1 Yleistä Ohjelman elinkaari ei tyypillisesti pääty sen toteuttamiseen; ohjelmaa voidaan käyttää ja ylläpitää jopa vuosikymmeniä. Jotta koodin muuttaminen on mahdollista, sen

Lisätiedot

Käytin tehtävän tekemiseen Xubuntu 13.04 -käyttöjärjestelmää aikaisemmin tekemältäni LiveUSB-tikulta.

Käytin tehtävän tekemiseen Xubuntu 13.04 -käyttöjärjestelmää aikaisemmin tekemältäni LiveUSB-tikulta. Tehtävänanto - Asenna ja testaa LAMP - Aiheuta vähintään 3 virhettä ja analysoi lokista - Tee nimipohjainen virtuaalipalvelin, joissa toimii myös www. (Karvinen, T. 23.09.2013) Työympäristö Tein tehtävän

Lisätiedot

Toimittajaportaalin pikaohje

Toimittajaportaalin pikaohje 1 Toimittajaportaalin pikaohje Toimittajaportaalin rekisteröityminen Toimittajaportaalin sisäänkirjautuminen Laskun luonti Liitteen lisääminen laskulle Asiakkaiden hallinta Uuden asiakkaan lisääminen Laskujen

Lisätiedot

811120P Diskreetit rakenteet

811120P Diskreetit rakenteet 811120P Diskreetit rakenteet 2016-2017 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ätiedot

5.6. C-kielen perusteet, osa 6/8, Taulukko 6.1.2008, pva, kuvat jma

5.6. C-kielen perusteet, osa 6/8, Taulukko 6.1.2008, pva, kuvat jma 5.6. C-kielen perusteet, osa 6/8, Taulukko 6.1.2008, pva, kuvat jma Every cloud has a silver line. - englantilainen sananlasku Tässä osiossa tärkeää: yksi- ja moniulotteinen taulukko Sisältö Yleistä Yksiulotteinen

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 1.4.2009 T-106.1208 Ohjelmoinnin perusteet Y 1.4.2009 1 / 56 Tentti Ensimmäinen tenttimahdollisuus on pe 8.5. klo 13:00 17:00 päärakennuksessa. Tämän jälkeen

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin 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ätiedot

Toteutusdokumentti. Aija. Helsinki 1.9.2005 Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteenlaitos

Toteutusdokumentti. 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ätiedot

Tietojen syöttäminen ohjelmalle. Tietojen syöttäminen ohjelmalle Scanner-luokan avulla

Tietojen syöttäminen ohjelmalle. Tietojen syöttäminen ohjelmalle Scanner-luokan avulla Tietojen syöttäminen ohjelmalle Tähän mennessä on käsitelty Javan tulostuslauseet System.out.print ja System.out.println sekä ohjelman perusrakenneosat (muuttujat, vakiot, lauseet). Jotta päästään tekemään

Lisätiedot

SQL. ! nykystandardi SQL3 eli SQL'99. ! CREATE TABLE, ALTER TABLE ja DROP TABLE. ! CREATE VIEW ja DROP VIEW. ! CREATE INDEX ja DROP INDEX

SQL. ! nykystandardi SQL3 eli SQL'99. ! CREATE TABLE, ALTER TABLE ja DROP TABLE. ! CREATE VIEW ja DROP VIEW. ! CREATE INDEX ja DROP INDEX SQL - perusteet SQL - yleistä Esa Salmikangas InMics SE Oy versio 16.6.2003 SQL - perusteet 1 SQL - perusteet 2 SQL Structured Query Language SQL on tietokantojen käsittelyyn kehitetty kieli yleisimmät

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 17.2.2010 T-106.1208 Ohjelmoinnin perusteet Y 17.2.2010 1 / 41 Sanakirja Monissa sovelluksissa on tallennettava rakenteeseen avain arvo-pareja. Myöhemmin rakenteesta

Lisätiedot

Sisällys. 12. Javan toistorakenteet. Yleistä. Laskurimuuttujat

Sisällys. 12. Javan toistorakenteet. Yleistä. Laskurimuuttujat Sisällys 12. Javan toistorakenteet Ylstä toistorakentsta. Laskurimuuttujat. While-, do-while- ja for-lauseet. Laskuri- ja lippumuuttujat. Tyypillisiä ohjelmointivirhtä. Silmukan rajat asetettu kierroksen

Lisätiedot

Osoitin ja viittaus C++:ssa

Osoitin ja viittaus C++:ssa Osoitin ja viittaus C++:ssa Osoitin yksinkertaiseen tietotyyppiin Osoitin on muuttuja, joka sisältää jonkin toisen samantyyppisen muuttujan osoitteen. Ohessa on esimerkkiohjelma, jossa määritellään kokonaislukumuuttuja

Lisätiedot

Merkkijono määritellään kuten muutkin taulukot, mutta tilaa on varattava yksi ylimääräinen paikka lopetusmerkille:

Merkkijono määritellään kuten muutkin taulukot, mutta tilaa on varattava yksi ylimääräinen paikka lopetusmerkille: Merkkijonot C-kielessä merkkijono on taulukko, jonka alkiot ovat char -tyyppiä. Taulukon viimeiseksi merkiksi tulee merkki '\0', joka ilmaisee merkkijonon loppumisen. Merkkijono määritellään kuten muutkin

Lisätiedot