PhpMyAdmin

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 er fri software, tilgængeligt under GNU General Public Licensen.

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 (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 
Hvis det er angivet, at phpMyAdmin er tilknyttet, findes den ofte på mysql00.webhotelnavn.dk (uden www) eller på phpmyadmin.webhotelnavn.dk. 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 
PhpMyAdmin benytter en todelt ramme (frame på engelsk) til at adskille oversigten over tabeller til venstre (hvis der er nogen) 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 normalt en hilsen i stil med "Velkommen til phpMyAdmin 2/3.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 
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 
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 
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" (hvis man ønsker at fastholde de samme feltnavne i forskellige tabeller er det nødvendigt ved SELECT at identificere, hvilken tabel man henviser til, f.eks. tabel1.nr og tabel2.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 bytes 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 
 Attributter er for mere avanceret brug og omhandles ikke her.
 Nulværdi benyttes til at vælge det temmelig interessante "NULL" begreb. "NULL" betyder at feltet er tomt eller ukendt, ikke at det er nul, som jo er en værdi. 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 

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

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

Redigering og visning af indhold i tabeller 

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 som standard. 
 Struktur giver en oversigt over selve tabellen, dets 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 en sikkerhedskopi og benytte det "database dump", der laves til at flytte tabeller m.m. til andre databaser. Se afsnit om sikkerhedskopiering
 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.

Sikkerhedskopiering og lidt mere om brugen af SQL 
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 
PHP og herunder phpMyAdmin er ikke nødvendigvis præget af den største sikkerhed. For enkeltbrugere vil det sandsynligvis ikke 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 – og i høj grad at disse holdes opdateret. Der er gode råd og vejledning at finde i phpMyAdmin's dokumentation og wiki.

Eksterne henvisninger 

 Officiel side for phpMyAdmin 
 phpMyAdmin's dokumentation
 phpMyAdmin's egen informative wiki
 phpMyAdmin-udvikler Michal Čihař's demo-server
 MySQL Query Browser, et alternativ til phpMyAdmin 
 Uofficiel FreeNode support-chatkanal for phpMyAdmin – hér kan man ofte finde dansktalende support også.

Internetteknologi
Fri software