Brugernavn:




Kodeord: Husk
Forside Forum Artikler Downloads Søg
 

Brug af MySQL tabeller i PHP

Forord

Denne artikel er for dem som gerne vil lære lidt om hvordan man kan bruge mysql tabeller til daglig brug. Artiklen henvender sig først og fremmest til dem som gerne vil lære noget nyt, eller vil have genopfrisket hvordan det nu er man gør :)

Indholdsfortegnelse

1.0   Indledning
   1.1   Du skal bruge
   1.2   Dette kommer du til at kigge på i denne artikel
   1.3   Hvorfor MySQL databaser?
2.0   Indhold
   2.1   Connect til din database
   2.2   Opret en tabel
   2.3   Indsæt en række (opret bruger for vores vedkommende)
   2.4   Rette i en række
   2.5   Vise data fra en tabel
   2.6   Slet en række
3.0   Demo
4.0   Referencer

1.0  Indledning

1.1  Du skal bruge

For at du kan bruge denne artikel, skal du have:
- Apache server m/PHP (har ikke forstand på om man kan have andet, sorry)
- En mysql-database
- Tid og forståelse til at læse artiklen :)

1.2  Dette kommer du til at kigge på i denne artikel

- Connecte til en database (skabe forbindelse)
- Opret en tabel
- Indsæt data i en tabel (Indsætte en ny række i en tabel)
- Rette i data i en tabel (Opdatere fra en række der er lavet i en tabel)
- Vise data fra en tabel (Select)
- Slette data fra en tabel (Fjerne en række fra en tabel)

1.3  Hvorfor MySQL databaser?

MySQL databaser er smarte, og faktisk også meget vigtige for mange. En database med data udgør meget på en dynamisk hjemmeside. Formålet med at have en MySQL database det er at mindske arbejdstiden på daglig basis, det vil sige at man ikke skal sidde og rette og lave om i sine filer på serveren, men i stedet at man bare retter data i MySQL databasen, eller ens moderatorer gør det. Et eksempel kan være at man gerne vil skrive en masse artikler på sin hjemmeside; før sad man og lavede filer til dem alle, men nu kan man blot indsætte en række i MySQL databasen, som man til værd tid kan rette i. Det lyder ikke smart, men det er på over en længere periode.
En database består af tabeller, som indeholder rækker og koloner.

2.0  Indhold

Fælles for alle de forskellige muligheder (lave en tabel, indsæt række, opdatere række, slette række, mm) er at man altid skal bruge mysql_query funktionen.

2.1  Connect til din database

For at du kan forbinde til din database skal du bruge to funktioner;
@mysql_connect og @mysql_select_db.

Eksempel på hvordan du kan bruge det: config.php
  1. <?php
  2. // Dine MySQL variabler
  3.  // Udfylde parametre med egen data
  4. $connect = @mysql_connect("localhost", "root", "KODEORD") or die(mysql_error());
  5.  // Og det samme gør du her
  6. $db = @mysql_select_db("dinDB") or die(mysql_error());
  7. ?>
Det er så din første fil, config.php, som åbner op for forbindelsen til MySQL databasen, den næste fil du skal lave, gennemgår hvordan man laver en tabel.

2.2  Opret en tabel

For at bruge en MySQL database er man nød til at lave sig nogle tabeller som ens data skal ind i. Hvis du ikke forstår dette så kig lidt på PHPartikler.dk' udemærkede artikel; Hvad er en database (se link nederst i artiklen).

Godt at vide når du skal oprette en tabel:
Når du opretter tabeller skal du starte sådan i din mysql_query:
CREATE TABLE 'dit tabel navn'(
Derefter skal du angive dine felter, sådan:
feltnavn felttype (evt en længde),
Til slut skal du tilføje:
)

Et eksempel på hvordan du opretter en tabel i database: create_table.php
  1. <?php
  2. // Hent dine forbindelsesoplysninger
  3. include("config.php");
  4. // Oprettelse af tabellen 'brugere', med felterne id, navn, alder, email
  5. $opret = mysql_query("CREATE TABLE brugere(
  6.     id INT AUTO_INCREMENT,
  7.     navn VARCHAR(100),
  8.     alder INT(3),
  9.     email VARCHAR(100),
  10.     PRIMARY KEY(id)
  11. )") OR DIE(mysql_error());
  12. // Hvis tabellen blev oprettet så skriver vi en lille tekst
  13. if($opret){
  14. print"Din tabel blev oprettet";
  15. }
  16. ?>

2.3  Indsæt en række (opret bruger for vores vedkommende)

For at indsætte data skal du skrive nogen data ind i din formular, ligesom du gør hver gang du logger ind, opretter dig som bruger, eller andet, så skal man udfylde nogle felter, og dem får vi brug for nu.

Godt at vide når du skal indsætte en række:
Når du indsætter rækker skal du starte sådan i din mysql_query:
INSERT INTO din tabel
Derefter skal du angive hvilke felter din skal indsætte (i en parentes):
(navn, alder, email)
Derefter skal du angive værdierne til opdateringen af felterne, du skal starte med at skrive VALUES, og derefter dine felter i en parantes. Det er vigtigt at værdierne står i samme rækkefølge som dine felter er sat på:
VALUES('$variabel-til-navn','$variabel-til-alder','$variabel-til-email')
Til slut skal du angive hvilken række du vil rette i:
WHERE id = '$_GET[id]'

Et eksempel på hvordan man opretter en bruger (indsætter en ny række) insert_row.php
  1. <?php
  2. require_once("config.php"); // Vi skal connecte for at indsætte data
  3. if($_GET['do'] == "insert" && isset($_POST['navn']))
  4. {
  5.     $todb['navn'] = mysql_real_escape_string($_POST['navn']);
  6.     $todb['alder'] = mysql_real_escape_string($_POST['alder']);
  7.     $todb['email'] = mysql_real_escape_string($_POST['email']);
  8.     $insert_data = mysql_query("INSERT INTO brugere(
  9.                                                 navn,
  10.                                                 alder,
  11.                                                 email)VALUES(
  12.                                                 '".$todb['navn']."',
  13.                                                 '".$todb['alder']."',
  14.                                                 '".$todb['email']."')");
  15.     if($insert_data)
  16.     {
  17.         print"Din bruger blev oprettet.<br /><br />";
  18.     }
  19.     else
  20.     {
  21.         print "<b>FEJL:</b> ".mysql_error();
  22.     }
  23. }
  24. ?>
  25. <form action="?do=insert" method="post">
  26. Navn: <input type="text" name="navn" value="<?=$_POST['navn'];?>" /><br />
  27. Alder: <input type="text" name="alder" value="<?=$_POST['alder'];?>" /><br />
  28. Email: <input type="text" name="email" value="<?=$_POST['email'];?>" /><br />
  29. <input type="submit" value="Opret bruger" />
  30. </form>

2.4  Rette i en række

Vi henter data fra den række som vi allerede er oprettet, via GET funktionen som henter fra urlens ende. Vi husker at vi connecter før vi laver alt andet.

Godt at vide når du skal rette en række:
Når du retter rækker skal du starte sådan i din mysql_query:
UPDATE din tabel
Derefter skal du angive hvilke felter du vil rette, dog med SET foran:
SET navn = '$navn', alder = '$alder', email = '$email'
Til slut skal du opgive hvilken række der skal rettes i:
WHERE id = '$_GET[id]'

Et eksempel hvor vi henter en række, og opdatere data update_row.php
  1. <?php
  2. require_once("config.php");
  3. if($_GET['do'] == "update" && isset($_POST['navn']))
  4. {
  5.     $todb['navn'] = mysql_real_escape_string($_POST['navn']);
  6.     $todb['alder'] = mysql_real_escape_string($_POST['alder']);
  7.     $todb['email'] = mysql_real_escape_string($_POST['email']);
  8.     $update_data = mysql_query("UPDATE brugere SET navn = '".$todb['navn']."', alder = '".$todb['alder']."', email = '".$todb['email']."' WHERE id = '".$_GET['id']."'");
  9.     if($update_data)
  10.     {
  11.         print"Din bruger blev rettet.<br /><br />";
  12.     }
  13.     else
  14.     {
  15.         print "<b>FEJL:</b> ".mysql_error();
  16.     }
  17. }
  18. $getrow = mysql_query("SELECT * FROM brugere WHERE id = '".$_GET['id']."'");
  19. $row = mysql_fetch_array($getrow);
  20. ?>
  21. <form action="?do=update&amp;id=<?=$_GET['id'];?>" method="post">
  22. Navn: <input type="text" name="navn" value="<?=$row['navn'];?>" /><br />
  23. Alder: <input type="text" name="alder" value="<?=$row['alder'];?>" /><br />
  24. Email: <input type="text" name="email" value="<?=$row['email'];?>" /><br />
  25. <input type="submit" value="Ret bruger" />
  26. </form>

2.5  Vise data fra en tabel

Det vi nu skal prøve er at vise alt data fra rækkerne, som er blevet indsat i tabellen.

Godt at vide når du skal vise en tabels rækker:
Når du viser tabeller skal du starte sådan i din mysql_query:
SELECT * FROM din tabel
Derefter skal du blot opgive hvilken orden de skal vises i: (ASC (ascending - dvs. stigende), hvilket betyder at 1 kommer før 2, DESC betyder descending (faldende), hvor 2 kommer før 1)
ORDER BY navn ASC
EKSTRA: Du kan også afgrænse hvor mange rækker du vil vise
LIMIT tal(så mange du vil vise)

Her er et eksempel på hvordan du kan vise din tabel: view_table.php
  1. <?php
  2. // Henter informationer fra config.php
  3. require_once("config.php");
  4. // Hent tabel-data
  5. $getdata = mysql_query("SELECT * FROM brugere ORDER BY navn ASC LIMIT 50") or die(mysql_error());
  6. if(mysql_num_rows($getdata) == 0)
  7. {
  8.     print"Ingen rækker...";
  9. }
  10. else
  11. {
  12.     print"<h2>Rækker</h2>";
  13.     while($row = mysql_fetch_array($getdata))
  14.         {
  15.             print"ID: ".$row['id']."<br />";
  16.             print"NAVN: ".$row['navn']."<br />";
  17.             print"ALDER: ".$row['alder']."<br />";
  18.             print"EMAIL: ".$row['email']."<br />";
  19.             print"RET BRUGER: <a href=\"update_row.php?id=".$row['id']."\">klik her</a>";
  20.             print"<hr />";
  21.         }
  22. }
  23. print"<br /><br /><a href=\"insert_row.php\">Indsæt ny række</a>";
  24. ?>

2.6  Slet en række

Det sidste vi skal prøve er at slette en række, og det gør vi ved at få et id som vi henter fra formularen.

Godt at vide når du skal slette en række:
Når du sletter rækker skal du starte sådan i din mysql_query:
DELETE FROM din tabel
Derefter skal du blot opgive hvilke(n) række der er tale om:
WHERE id = '$_POST[id]'

Her er det sidste eksempel: delete_row.php
  1. <?php
  2. require_once("config.php");
  3. if($_GET['do'] == "delete" && isset($_POST['id']))
  4. {
  5.     $getrow = mysql_query("SELECT * FROM brugere WHERE id = '".$_POST['id']."'");
  6.     $count_rows = mysql_num_rows($getrow);
  7.     if($count_rows == 1)// Hvis der er én bruger med id'et, så sletter vi!
  8.     {
  9.         $delete_data = mysql_query("DELETE FROM brugere WHERE id = '".$_POST['id']."'");
  10.         if($delete_data)
  11.         {
  12.             print"Brugeren blev slettet.<br /><br />";
  13.         }
  14.         else
  15.         {
  16.         print "<b>FEJL:</b> ".mysql_error();
  17.         }
  18.     }
  19.     else
  20.     {
  21.     print"Ingen bruger med id ".$_POST['id'];
  22.     }
  23. }
  24. ?>
  25. <form action="?do=delete" method="post">
  26. Slet bruger med Id: <input type="text" name="id" /><br />
  27. <input type="submit" value="Slet bruger" />
  28. </form>

3.0  Demo

www.stigaard.info/tut/basal_mysql/create_table.php (har oprettet, så denne er lige gyldig)
www.stigaard.info/tut/basal_mysql/insert_row.php
www.stigaard.info/tut/basal_mysql/update_row.php
www.stigaard.info/tut/basal_mysql/view_table.php
www.stigaard.info/tut/basal_mysql/delete_row.php

4.0  Referencer

- PHPartikler.dk - Hvad er en database?
- PHPartikler.dk - Opret forbindelse til Mysql
- Mooboo.dk - Om formularer
Oprettet af:

PHP

Point modtaget: 200

Rate:
19:38 23/03/2008

Kommentarer

Giv din mening tilkende om denne artikel, eller læs andres.
Har du spørgsmål eller brug for hjælp til denne artikel henvises du til forummet.
Yeah, N00b Friendly xD
Oprettet af:
  Mail
19:45 25/03/2008
Men god?
Oprettet af:
  Mail
19:47 25/03/2008
God artikel, men stadigvæk ikke 100% "N00b Friendly". Jeg er selv en N00b og jeg forstod ikke det hele fuldt ud. 4/5
Oprettet af:
  Mail
20:53 25/03/2008
Emil > hvor i artiklen er det omkring?
Oprettet af:
  Mail
21:19 25/03/2008
Jeg er også nybegynder og lærte rigtig meget. 5/5 Forstod det hele.
Oprettet af:
  Mail
09:33 15/06/2008
Absolute nOOb her men det var da til og forstå, top god artikel.
(kan man evt. lave en om at indsætte række hvis den ikke eksisterer, men hvis den allerede eksisterer så bliver den automatisk opdateret (altså en update hvis eksisterer funktion))

//ToPnOOb
Sidst redigeret 13:58 22/02/2011
Oprettet af:
  Mail
13:57 22/02/2011
Du skal være oprettet og logget ind for at kommentere en artikel
Copyright © Rowl.dk v/ Michael Raagaard | 2005-12 | Alle rettigheder forbeholdes