I gang med PHP/mySQL

Tags:    php
Skrevet af Bruger #1 @ 17.06.2001
I gang med mySQL

Det meste af Anything.dk, kører nu over database. Hvis du selv har lyst til at lære at bruge mySQL databasesystemet, så følg med her. I denne artikel går jeg ud fra at du har installeret php og mySQL på din egen computer. Har du ikke det, kan du få hjælp fra artiklen "Apache, PHP og mySQL på Win9*" her. Nu er du så klar til at komme i gang. Start din Apache server og din mySQL server (Apache kan startes fra Start menuen, mySQL skal startes via DOS ved at skrive "mysqld-opt" i dit mysql\\bin bibliotek. Dette er nærmere beskrevet i førnævnte artikel). Nu skal du så ind i selve mySQL klienten, så vi kan komme i gang med at oprette en table. Dette gøres ved at starte mySQL (som beskrevet ovenover), og derefter skrive "mysql - u root". Nu bliver du så logget ind som root, der i Windows har rettigheder til alt. Jeg vil lave et meget simpelt database eksempel hvor du kan holde styr på din MP3 samling (det er jo bare et eksempel). Det vil lære dig det mest basale, samt give dig en ide om hvad mySQL kan sammen med PHP.

Opret database og tabel

Hvis du har adgang til mySQL på et webhotel, har du sikkert kun adgang til en database som er oprettet for dig. I den database kan du så oprette alle de tabeller du vil. Under Windows kan du oprette både databaser og tabeller lige så tosset du vil, men her vil vi kun bruge en enkel database, som vi kalder for "mp3", med en tabel i der hedder "mp3numre". Skriv følgende i din mySQL klient (dos vinduet). Du kan skrive det hele med små bogstaver, da jeg kun har skrevet noget med stort for pænhedens skyld:

Lav databasen:

CREATE DATABASE mp3;

Lav tabellen:

CREATE TABLE mp3numre (
kunstner CHAR(50), titel CHAR(50), id int(6) NOT NULL AUTO_INCREMENT, PRIMARY KEY(id), dato timestamp(8) );
Lidt forklaring til koden:

Først opretter vi databasen mp3 med koden "create database <databasenavn>", og det er der vist ikke så mange ben i. Tabellen "mp3numre" oprettes, og det er lidt vanskeligere. Første linie fortæller klienten at der skal oprettes en tabel, og at koden der følger efter, fortæller hvordan tabellens struktur skal se ud. De næste 5 linier fortæller altså hvilke kolonner der skal oprettes. Vi har en kolonne der hedder kunstner, en der hedder titel, en der hedder id og en der hedder dato. De er navngivet så vi næsten kan gætte os til hvad de skal indeholde. Efterfølgende ord som fx "char" er typen på den kolonne, og dem vil jeg ikke gå nærmere ind på lige nu og her. Dog vil jeg lige nævne, at under id sørger vi for at den automatisk forøges hver gang der tilføjes noget. På den måde er id altså unikt. Det sættes også til at være primary key, som dog ikke er så vigtigt i dette eksempel. Dato sættes til timestamp, så mySQL selv indsætter en dato på 8 cifre. Alle mySQL spørgsmål kan i øvrigt stilles i vores PHP forum.

PHP dokumenterne

Nu er det hele oprettet, og du har bare brug for et PHP dokument til at vise din samling, samt et hvor du kan tilføje numre. Vi starter med det hvor vi tilføjer et MP3 nummer, da vi jo skal have tilføjet nogen numre, for at mp3e det hele. Et sådan dokument kunne se således ud:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">

<html>
<head>
	<title>Tilføj MP3 nummer</title>
</head>

<body>
<h3 align="center">Tilføj MP3 nummer</h3><br>
<br>
<form action="<? echo $php_self ?>">
Kunstner:<br>
<input type="text" name="kunstner"><br>
<br>
Titel:<br>
<input type="text" name="titel"><br>
<br>
<input type="submit" name="add_mp3" value=" - OK - ">
</form>
<?
if($add_mp3) {
mysql_connect("localhost","root");
mysql_select_db("mp3");
$query = mysql_query("INSERT INTO mp3numre (kunstner, titel)" . "VALUES ('$kunstner','$titel')");
echo "Dit nummer er tilføjet. Tilføj flere eller vis dine numre <a href="mp3er.php">her.</a>";
}
?>
</body>
</html>
Så her laver vi altså en simpelt form, hvor brugeren kan indtaste kunstner og titel på sit MP3 nummer. Når der klikkes, tilføjes det så til databasen. Som i kan se, tilføjer vi kun kunstner og titel, ikke dato og id. Men det er jo fordi de automatisk sættes ind. Når du har mp3et dokumentet og indsat et mp3 nummer, kan du gå tilbage til nySQL og skrive
SELECT * FROM mp3numre;
, for at se om det rent faktisk er blevet tilføjet. Er det tilføjet, er vi rigtig godt i gang. Lidt forklaring af koderne (jeg forklarer kun PHP/mySQL koden): Til at starte med undersøger vi, om der rent faktisk er trykket på knappen. Er der det, skal den bare gå i gang med det der står mellem de to {} (lidt ligesom begin/end i fx Delphi). Vi starter så med at connecte til mySQL via kommandoen "mysql_connect". Så vælger vi en database, nemlig "mp3" som vi jo oprettede før. Derefter kommer vi så til en af de mest brugte ting, nemlig et "query", en slags forespørgsel til databasen. Vi beder den om at indsætte (og her skriver jeg lige lidt i omvendt ordstilling) i kunstner og titel, værdierne $kunstner og $titel. De to værdier har vi jo fra formularens input bokse, og de kan sættes direkte ind. Når det er gjort, fortæller vi lige brugeren at nummeret er tilføjet, samt spytter et link ud til at vise numrene. Og det er den side, vi skal have lavet nu:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">

<html>
<head>
	<title>Mine MP3 numre</title>
</head>

<body>
<h3 align="center">Mine mp3 numre</h3><br>
<br>
<?
mysql_connect("localhost","root");
mysql_select_db("mp3");
$query = mysql_query("SELECT * FROM mp3numre ORDER BY id");
echo "<font color="red"><ol>";
while($r = mysql_fetch_array($query)) {
$kunstner = $r["kunstner"];
$titel = $r["titel"];
$dato = $r["dato"];
echo "<li>$kunstner - $titel blev tilføjet $dato";
}
echo "</ol></font>";
?>

</body>
</html>
Her bliver det så en lille smule mere indviklet, men jeg prøver alligevel at forklare. Som før connecter vi og vælger også en database (altså mp3). Vi bruger også et query, men denne gang ser det lidt anderledes ud. Nu går vi nemlig ind og henter alt (skrives som *) fra mp3numre. Derefter laver vi en lille "while" løkke, der går igennem vores query indtil der ikke er mere data tilbage, og udfører derefter det der står mellem {} tegnene. Det der sker i løkken, er at den lægger de forskellige ting ned i nogen variabler, som vi så bruger bagefter, til at vise MP3 numrene. Det er måske lidt svært at forstå, men det eneste du rigtigt kan gøre, er at lege lidt med det. Til sidst fatter du det nok, det gjorde jeg da i hvert fald :-).

Det var faktisk det. Nu kan du så tilføje nye MP3 numre, og derefter vise dem med tilføjelses dato og det hele. Du kan jo nemt gøre designet nemmere, samt evt. tilføje lidt mere funktionalitet. Dette var jo bare et simpelt eksempel på hvordan du kan bruge PHP og mySQL sammen, men der kunne laves massere af smarte forbedringer, såsom en lidt pænere dato end den autogenererede, end admin del hvor man kan slette numre, lidt pænere design, mulighed for at sortere på forskellige måder osv. Måske skriver jeg snart en artikel hvor vi udvider eksemplet lidt.

Til sidst vil jeg lige nævne, at jeg har mp3et hele eksemplet, så det burde virke. Skulle du dog alligevel have problemer, må du meget gerne spørge i vores PHP forum. God fornøjelse...


Hvad synes du om denne artikel? Giv din mening til kende ved at stemme via pilene til venstre og/eller lægge en kommentar herunder.

Del også gerne artiklen med dine Facebook venner:  

Kommentarer (9)

User
Bruger #956 @ 28.10.03 18:34
Hæ hæ et simpelt script og utrolig let at forstå :o) Keep going like that
User
Bruger #2575 @ 05.01.04 02:28
Kunne være godt med lidt debugging. Hvis der skulle ske en fejl ved connect til MySQL.
User
Bruger #4479 @ 09.02.04 17:58
Rigtig god artikel! Rigtig god for en nybegynder:) Det er utroligt let at forstå og så lære man en del.
User
Bruger #5550 @ 06.04.04 10:58
Rigtig god artikel, og nem at udbygge for nybegyndere (som mig).
User
Bruger #5566 @ 10.04.04 08:13
Linket til at downloade Apache virker ik! :( hvad skal jeg gøre?
User
Bruger #5956 @ 14.06.04 20:10
Nice Artikel! Nem og forstå, Også for Newbies som mig.. :0
User
Bruger #6550 @ 05.11.04 00:48
Okay arktikel. Bare lidt lavt nede at den er lavet til folk som kører mysql selv. Jeg bruger selvfølgelig webhotel, og det tror jeg da at de fleste nybegyndere gør.
User
Bruger #5124 @ 20.07.05 22:11
Giver et godt indblik i, hvordan det hele hænger sammen. Tak :)
User
Bruger #11162 @ 15.01.07 16:54
RIGTIG flot! Tror endelig jeg er ved at fatte lidt af det :$
Du skal være logget ind for at skrive en kommentar.
t