SQL + PHP

1. Andmebaasi ja tabeli loomine (MySQL / XAMPP)

Mida teeme?
Loome andmebaasi ja tabeli, kuhu salvestame teated.
Kuidas?

  1. Ava XAMPP → MySQL → Admin
  2. phpMyAdminis loo andmebaas
  3. Loo tabel SQL käsuga:
CREATE TABLE lehed(
  id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
  pealkiri VARCHAR(50),
  sisu TEXT
);

INSERT INTO lehed (pealkiri, sisu)
VALUES ('Ilmateade', 'Kuiv ilm');

Selgitused:

  • id – unikaalne number igale reale
  • VARCHAR(50) – kuni 50 märki
  • TEXT – pikk tekst
  • AUTO_INCREMENT – MySQL lisab ise numbri

2. Andmebaasi ühendamine PHP-s

Mida teeme?
Loome ühenduse MySQL serveriga.

config.php

<?php
$yhendus = new mysqli("localhost", "kasutaja", "parool", "andmebaas");
?>

3. Andmete lugemine (SELECT)

Mida teeme?
Kuvame tabelis olevad teated.

$kask = $yhendus->prepare("SELECT id, pealkiri, sisu FROM lehed");
$kask->bind_result($id, $pealkiri, $sisu);
$kask->execute();

while($kask->fetch()){
    echo "<h2>".htmlspecialchars($pealkiri)."</h2>";
    echo "<div>".htmlspecialchars($sisu)."</div>";
}

Oluline:

  • htmlspecialchars() – muudab sisu turvaliseks
  • while – loeb kõik read järjest

4. Andmete kustutamine (DELETE)

Mida teeme?
Lisame iga teate juurde kustutamislingi.

echo "<a href='$_SERVER[PHP_SELF]?kustutusid=$id'>kustuta</a>";

Lehe alguses kontroll:

if(isset($_REQUEST["kustutusid"])) {
  $kask = $yhendus->prepare("DELETE FROM lehed WHERE id=?");
  $kask->bind_param("i", $_REQUEST["kustutusid"]);
  $kask->execute();
}

Selgitus:

  • ?kustutusid=3 → kustutab rea ID-ga 3

5. Ühe teate vaatamine (ID järgi)

Mida teeme?
Kuvame vasakul pealkirjad, paremal sisu.

Pealkirjade loetelu:

$kask = $yhendus->prepare("SELECT id, pealkiri FROM lehed");
while($kask->fetch()){
   echo "<li><a href='fail.php?id=$id'>".htmlspecialchars($pealkiri)."</a></li>";
}

Valitud teate sisu:

if(isset($_REQUEST["id"])) {
    $kask = $yhendus->prepare("SELECT pealkiri, sisu FROM lehed WHERE id=?");
    $kask->bind_param("i", $_REQUEST["id"]);
    $kask->execute();
    if($kask->fetch()){
        echo "<h2>".htmlspecialchars($pealkiri)."</h2>";
        echo htmlspecialchars($sisu);
    }
}

6. Uue teate lisamine (INSERT)

Mida teeme?
Lisame vormi kaudu uue rea tabelisse.

Viide lisamiseks:

<a href="<?=$_SERVER['PHP_SELF']?>?lisamine=jah">Lisa ...</a>

Vormi kuvamine:

if(isset($_REQUEST["lisamine"])) {
?>
<form action="<?=$_SERVER['PHP_SELF']?>">
  <input type="hidden" name="uusleht" value="jah" />
  Pealkiri: <input type="text" name="pealkiri"><br>
  Sisu: <textarea name="sisu"></textarea><br>
  <input type="submit" value="Sisesta">
</form>
<?php
}

Andmete salvestamine:

if(isset($_REQUEST["uusleht"])) {
  $kask = $yhendus->prepare("INSERT INTO lehed (pealkiri, sisu) VALUES (?, ?)");
  $kask->bind_param("ss", $_REQUEST["pealkiri"], $_REQUEST["sisu"]);
  $kask->execute();
  header("Location: ".$_SERVER['PHP_SELF']);
  exit();
}

7. Teadete muutmine (UPDATE)

Mida teeme?
Saame muuta olemasolevat teadet.

Muuda link:

<a href='$_SERVER[PHP_SELF]?id=$id&muutmine=jah'>muuda</a>

Vormi näitamine:

if(isset($_REQUEST["muutmine"])) {
?>
<form action="<?=$_SERVER['PHP_SELF']?>">
  <input type="hidden" name="muutmisid" value="<?=$id?>">
  Pealkiri: <input type="text" name="pealkiri" value="<?=htmlspecialchars($pealkiri)?>">
  <textarea name="sisu"><?=htmlspecialchars($sisu)?></textarea>
  <input type="submit" value="Muuda">
</form>
<?php
}

Uuendamise SQL:

if(isset($_REQUEST["muutmisid"])) {
  $kask = $yhendus->prepare("UPDATE lehed SET pealkiri=?, sisu=? WHERE id=?");
  $kask->bind_param("ssi", $_REQUEST["pealkiri"], $_REQUEST["sisu"], $_REQUEST["muutmisid"]);
  $kask->execute();
}

8. Kokkuvõte

Peamised PHP sammud

  1. Ühendus – new mysqli()
  2. prepare() – päringu ettevalmistus
  3. bind_param / bind_result – andmete sidumine
  4. execute() – päringu käivitamine
  5. fetch() – andmete lugemine