1 / 14

Webprogrammering

Webprogrammering. SQL og databaser del 2. I dag. Objektorienterte databasekoblinger Struktur på objektorientering Mange er usikre på det i oblig 1 Kodegjennomgang Oppgaveløsning. MySql-i Objektbasert. MySql – improved , kom i php versjon 5

tania
Download Presentation

Webprogrammering

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Webprogrammering SQL og databaser del 2

  2. I dag • Objektorienterte databasekoblinger • Struktur på objektorientering • Mange er usikre på det i oblig1 • Kodegjennomgang • Oppgaveløsning

  3. MySql-i Objektbasert • MySql – improved, kom i php versjon 5 • Et alternativ til mysqlfunsksjonene som vist sist • Helt tilsvarende, men kall til metoder i et objekt istedenfor funksjoner • Fungerer på Cube og lokalt dersom standard XAMPP lastes. Dersom det ikke fungerer lokalt er det en dll i php.ini som må aktiveres (php_myslqi.dll el.)

  4. MySQLi (uten feilhåndtering) Database <?php $db=newmysqli("localhost","root","","Test"); $sql = "SelectFornavn,Etternavn from ansatt"; $resultat=$db->query($sql); $antallRader = $db->affected_rows; for ($i=0;$i<$antallRader;$i++) { $radObjekt=$resultat->fetch_object(); echo $radObjekt->Etternavn." ".$radObjekt->Fornavn."<br/>”; } ?>

  5. $db=newmysqli("localhost","root","","Test"); if($db->connect_error) { die(”Kunne ikke koble til db : ".$db->connect_error); } $sql = "SelectFornavn,Etternavn from ansatt"; $resultat=$db->query($sql); if(!$resultat) { echo "Error".$db->error."<br/>"; } else { $antallRader = $db->affected_rows; for ($i=0;$i<$antallRader;$i++) { $radObjekt=$resultat->fetch_object(); echo $radObjekt->Etternavn." ".$radObjekt->Fornavn."<br/>"; } } MySQLi med feil-håndtering

  6. $db=newmysqli("localhost","root","","Test"); if($db->connect_error) { die(” Kunne ikke koble til db : ".$db->connect_error); } $sql = "InsertInto ansatt (Fornavn, Etternavn) Values ('Per','Pettersen')"; $resultat=$db->query($sql); if(!$resultat) { echo "Error".$db->error; } else { $antallRader = $db->affected_rows; if($antallRader==0) { echo "Kunne ikke sette inn dataene i databasen!"; } } Insert med MySQLi

  7. Struktur på objektorientering • Mange er usikre på hvordan løse oblig1 objektorientert. • Hvor skal de ulike kodebitene ligge • Vil se på et eksempel og vise ulike måter å løse objektorientering på • Ser også hvordan integrere databaser i denne strukturen.

  8. Eksempel • Problem: En løsning hvor kunder kan bestille billetter (tilsvarende oblig1) • Først finne ut hvilke klasser vi skal lage • Klasser skal være noe konkret • I dette tilfelle er da kunde og billett et godt forslag til klasser for denne løsningen

  9. Klasser • Billett Kunde • Attributter • Attributter • Metoder • Metoder

  10. Klasser og databasetabeller • Ofte er det en tabell i databasen til hver av klassene (i dette tilfelle kunde og billett) • Billett Kunde • Navn • Adresse • Postnr • Poststed • Type • Dato • Sted Kunde Billett • IDNavn • Navn • Adresse • Postnr • Poststed • IDBillett • Type • Dato • Sted • get_type (); • set_type($type); • …. • get_navn(); • set_navn($navn); • ….

  11. Klasser og databasetabeller • Ved normalisering(optimalisering) av databasen blir det ikke en tabell til en klasse • Billett Kunde • Navn • Adresse • Poststed • Postnr • Type • Dato • Sted Kunde Poststed Billett • IDNavn • Navn • Adresse • Postnr • Postnr • Poststed • IDBillett • Type • Dato • Sted • get_Type (); • Set_type($type); • …. • get_Navn(); • set_navn($navn); • ….

  12. Hvilke metoder i klassene? • Get, set metoder for alle attributter • Validering av alle felt • Databaseoperasjoner • All funksjonalitet som tilhører klassen • Andre egne klasser kan vurderes som • Skrive / leste fil • Sende e-post

  13. Egne db-klasser • Kan legge databasemetodene i egne klasser • Bra ved store systemer (lagdeling) • Billett Kunde KundeDB • BillettDB • Navn • Adresse • Poststed • Postnr • Type • Dato • Sted • vis_alle_kunder(); • lagre_kunde (..); • slett_kunde (..); • oppdater_kunde(..) • vis_alle_billetter (); • lagre_billett (..); • slett_billett (..); • oppdater_billett(..) • get_Type (); • Set_type($type); • valider_type($type) • …. • get_navn(); • set_navn($navn); • valider_navn($navn); • …..

  14. Oppsummert • Klasser mot tabeller i databasen • Attributter mot kolonner i tabellene • Mest mulig funksjonalitet knyttet til klassen som metoder inkludert validering • Evt. en databaseklasse pr. vanlig klasse • Så lite som mulig av kode utenfor klasser • Håndtering av skjemaer, legge inn verdier må ligge utenfor klasser.

More Related