PHP:phpMyAdmin

Fra Wikibooks, den frie samling af lærebøger

phpMyAdmin er en browser-baseret samling af PHP scripts, der benyttes til at redigere MySQL Databaser. phpMyAdmin medfølger ofte automatisk ved oprettelse af et PHP webhotel med tilhørende MySQL. Dansk er et muligt brugersprog. Udviklingen af phpMyAdmin sker som et open source projekt og der foregår løbende opdateringer.

phpMyAdmin hjælper med at danne de nødvendige SQL-kommandoer, som er de eneste "ordrer" databasen forstår, til manipulation af databasestruktur og -indhold. Det giver en bedre brugergrænseflade og betyder, at brugeren i højere grad kan fokusere på opdateringer, dannelsen af indeks m.m.

Hvis en bruger har oprettet et webhotel er der som regel kun én database tilknyttet, men denne kan tilføjes et stort antal tabeller, i praksis kun begrænset af størrelsen på webhotellet, f.eks. 10 MB eller 500 MB (MB=MegaBytes). Hvis phpMyAdmin benyttes på egen server, f.eks. egen computer hvor PHP og MySQL er installeret, er der mulighed for at oprette flere databaser.

phpMyAdmin er særdeles konfigurérbart, men de fleste webhoteller bruger standardindstillingerne, så man kan forvente at man møder et nogenlunde ens brugerinterface uanset hvor man støder på det. Hvis man har lyst til at øve sig eller vil prøve de seneste udviklingsversioner, har phpMyAdmin-udvikler Michal Čihař en demo-server, hvor man uden risiko kan slå sig løs - se eksterne links.

Adgang til phpMyAdmin[redigér]

Hvis det er angivet, at phpMyAdmin er tilknyttet, findes den ofte på mysql00.webhotelnavn.dk (uden www). Placeringen af phpMyAdmin oplyses af webhoteludbyderen. Ved start vil der som regel bedes om et brugernavn og adgangskode, som udbyderen også vil have fremsendt.

Startbillede[redigér]

PhpMyAdmin benytter en to-opdelt ramme (frame på engelsk) til at adskille oversigten over tabeller til venstre (hvis der er nogle) og selve hovedteksten. Hovedteksten kan bl.a. indeholde velkomstbilledet, en oversigt over alle tabeller, strukturen i en enkelt tabel eller en oversigt over X antal poster i en tabel.

Startbilledet indeholder en hilsen i stil med "Velkommen til phpMyAdmin 2.X.X - MySQL X.X kører på mysql0X.webhotel.dk som bruger@mysql0X.webhotel.dk". Nedenunder er der forskellige funktioner til oplysning om selve databasen m.m. Disse er mindre relevante i første omgang.

Oversigt over databasen[redigér]

Efter startbilledet kan man vælge en (eller den eneste) database og herefter fremkommer en oversigt over alle databasens tabeller og øverst er der en "struktur-menu" (en oversigt over en database og dens tabeller, og herunder dens indbyrdes relationer - ofte betegnet som et skema)

Hvis der allerede er tabeller oprettet vil de kunne vælges herfra. Der kan også søges m.m.

Opret den første tabel[redigér]

Ved at klikke på database-navnet i venstre ramme kommer der en ny side, hvor der i bunden er et område, hvor der står "Opret ny tabel i database mindatabase_com (opdigtet navn)". Tabellen skal navngives med et unikt navn der ikke er brugt før, og antallet af felter skal angives. Det er i første omgang ikke så vigtigt at have overblik over, hvor mange felter man har brug for, da der senere, på fleksibel vis, kan tilføjes flere efter behov.

Bestem tabellens forskellige feltnavne og datatype[redigér]

Efter oprettelse af tabellen er der en ny side, hvor alle felterne skal navngives (første kolonne) og deres datatype skal defineres (anden kolonne).

Det er anbefalelsesværdigt at give de forskellige felter unikke navne, der relaterer til den tabel de findes i. Det skyldes, at et relationelt databasesystem som regel vil hente data fra forskellige tabeller, og der vil opstå fejl, hvis man forsøger at hente "nr" fra tabel 1 og "nr" fra tabel 2. Det er bedre med f.eks. "tab1_nr" og "tab2_nr".

Datatypen er i udgangspunktet "varchar", der har betydningen "et variabelt antal karakterer". Hvis feltet skal bruges til tekst bestående af højst 255 tegn er "varchar" løsningen. Længden angives i 3. kolonne. I mindre databaser er det ikke afgørende om tallene er optimeret til behovet. Det er i øvrigt kun i "varchar" at længden skal angives. De andre datatyper er automatiske, men enkelte af dem kan specificeres.

  • Nr. 2 mulighed er "tinyint", der kun går fra 0-127. Er ofte kilde til fejl, hvis man undervurderer behovet for antallet af rækker.
  • Nr. 3 "Text" benyttes ofte til længere tekster, men der findes variationer som "tinytext" og "longtext".
  • Nr. 4 "Date" er et datoformat. Skal ikke forveksles med "timestamp", der indsætter (serverens) dato og tidspunkt for, hvornår den aktuelle række senest er blevet ændret.

Disse datatyper vil dække de flestes behov.

Bestem felternes øvrige definitioner[redigér]

  • Attributter er for mere avanceret brug og omhandles ikke her.
  • Nulværdi benyttes til at vælge det temmeligt interessante "NULL" begreb. "NULL" betyder at feltet er tomt, ikke at det er nul. Det er ikke alle datatyper, der kan være "NULL", så det er værd at prøve sig lidt frem.
  • Startværdi kan være "NULL", dvs. at det ikke er nødvendigt altid at få udfyldt dette felt i den aktuelle række.
  • Ekstra indeholder kun muligheden for "auto_increment" og det betyder, at nummerering kan foregå automatisk. Det er meget brugbart, hvis ikke man ved, hvor mange poster man når at oprette, men at det er vigtigt at de har unikke identifikationer.
  • Primær bruges til at identificere, hvilket felt, der skal bruges til gøre hver enkelt række unik. Det er ofte et nummer, som det ovenstående brugernumre.
  • Indeks er det vigtigste redskab til at opnå en fuldt optimeret og velfungerende database. Princippet er at et indeks hjælper med at sortere de forskellige rækker således at f.eks. søgninger vil kunne foregå hurtigere. MySQL skaber og opdaterer disse indeks automatisk. Det er dog ikke sådan, at ethvert indeks er nødvendigt og det kan også give bagslag at bruge for mange indeks, men baggrunden for dette vil kræve en grundigere forklaring end der er mulighed for her.
  • Unik refererer til om et felt er unikt i den samlede databasestruktur, f.eks. som i de ovennævnte eksempler med at benævne "nr" og "nr" i forskellige tabeller. Unik vil indikere, at dette ikke forekommer. Kan bruges som en sikkerhedsforanstaltning.
  • Fuldtekst indeks benyttes når det er et helt tekstfelt der skal indekseres til brug ved f.eks. søgning.

"Tabelkommentarer" og "Tabel type" er mere avancerede funktioner, som de fleste begyndere ikke vil benytte.

Denne måde at oprette tabeller på er noget mere brugervenlig end at benytte SQL direkte, men der er fortsat mulighed for at tabellen ikke kan oprettes pga. fejl. Der kan således opstå behov for at eksperimentere lidt med datatyper osv. før man har held til at oprette den første tabel.

Eksempel på oprettet tabel: pressemeddelelser[redigér]

pmnummer får automatisk et unikt nummer, hver gang der oprettes en ny pressemeddelelse (pm). pmover er pm'ens overskrift og kan højst være 255 karakterer lang.

pmresume og pmfuld er henholdsvis et resume og den samlede tekst. Hvis der ikke indsættes en værdi er feltet i den aktuelle række NULL, dvs. "tom".

pmdato følger datoformatet 20xx-mm-dd

Indsættelse af data i en tabel: oprettelse af poster[redigér]

Efter oprettelse af en tabel vil man komme til en side, der viser tabellens struktur i oversigtsform (det samme vil ske, hvis tabellen allerede er oprettet og man vælger denne ude til venstre).

Ved klik på "Indsæt" bliver det nu muligt at oprette en ny post ved at indsætte data i hvert felt. Det mulige indhold vil afhænge en del af den datatype, der er defineret. For nye brugere, der ikke har oprettet tabellen selv, vil det således kunne forårsage nogen frustration, hvis man ikke forstår de enkelte datatyper. Men har man først forstået disse, skulle det være muligt at oprette rækker uden de store problemer.

Bemærk, at den tekst, der indsættes i f.eks. tekstfelter skal være HTML-formatteret for at give den ønskede effekt, f.eks. fed

Det nedenstående billede viser, hvordan browser-vinduet ser ud efter tryk på Indsæt

Redigering og visning af indhold i tabeller[redigér]

Når en tabel er oprettet giver phpMyAdmin en række muligheder for at vise og manipulere dette indhold.

  • Vis bruges til at vise alle de poster som brugeren har oprettet. Hvis der over et vist antal poster i tabellen vises de første 30 (standard).
  • Struktur giver en oversigt over selve tabellen, dens forskellige indeks m.m.
  • SQL er som nævnt tidligere den kodning som databasen "forstår". Ved hver ændring gengives den aktuelle SQL, og igennem dette kan man opnå en forståelse for SQL, dvs. ved at analysere, hvordan ændringer er lavet. SQL er primært for mere øvede brugere, da selv simple SQL-ordrer kan være særdeles vidtrækkende. Fejl som ">" i stedet for "=" kan slette hele indholdet i en tabel. Forskellen mellem phpMyAdmins almindelige brugerflade og SQL er, at i phpMyAdmin ændres hver post som regel enkeltvis, mens SQL kan ændre indholdet i adskillige poster.
  • Eksport kan bruges til at tage backup og benytte det "dump" der laves, til at flytte tabeller m.m. til andre databaser. Se afsnit om backup.
  • Import bruges til at genetablere eksporterede eller egenfremstillede SQL-dumps.
  • Operationer gør det muligt at kopiere/genbruge tabeller m.m. Det er værd at notere, at man både kan flytte struktur og data eller kun strukturen.
  • Tøm sletter indholdet af tabellen (de indeholdte data), ikke selve tabellen (strukturen).
  • Slet sletter både tabel og indhold. Der er en ekstra sikkerhedsmekanisme ved standardindstillingerne, men bemærk at phpMyAdmin er et værktøj, der nemt kan have ret vidtrækkende følger ved uforsigtighed.

Backup og lidt mere om brugen af SQL[redigér]

En del webhoteller tager ikke backup af HTML- og PHP-filer og selve databasen. Derfor er regelmæssig backup afgørende, særligt hvis indholdet på éns hjemmeside ofte ændres af eksterne brugere.

Eksport i forskellige menuer kan benyttes til at lave backup af hele databasen eller enkelte tabeller. Der er to muligheder. Man kan enten få lavet et "dump" af de forskellige tabeller eller gemme det i en tekstfil. Et "dump" er den SQL-kodning, der skal til for at oprette feltnavne m.m. samt indhold. phpMyAdmin gør det meget enkelt at lave disse dumps. Med en standard indstillet phpMyAdmin klikker man sig blot ind under menupunktet Eksport, sætter et mærke i Send (download) og trykker Udfør-knappen - så sendes SQL-dumpet direkte til download i browseren. Man bør efterfølgende tjekke integriteten af den modtagede fil for at være helt sikker på at man har fået det hele med - åbn filen i en teksteditor, hop til slutningen af filen og kontrollér at den ikke slutter i en fejlmelding.

Genskabelse eller flytning til en anden database sker ved at man enten under menupunktet SQL kører en forespørgsel i tekstvinduet eller under menupunktet Import vedhæfter filen.

Bemærk at det kun er databasen, der tages backup af. Det er ikke HTML- og PHP-filerne! Disse skal downloades via ftp eller man skal på anden vis tage en kopi af den originale programmering.

Sikkerhed[redigér]

PHP og herunder phpMyAdmin er ikke nødvendigvis præget af den største sikkerhed. For enkeltbrugere vil det sjældent være et problem, men det kan anbefales at man undersøger sikkerhedsspørgsmålet nærmere, hvis man planlægger at bygge større systemer og benytte phpMyAdmin til flere brugere. Der er gode råd og vejledning at finde i phpMyAdmin's dokumentation og wiki.

Eksterne links[redigér]