Šī būs pamācība jeb drīzāk koda paraugs iesācējiem, kuri grib saprast, kā no php pieslēgties datubāzei un tur kaut kaut ko ierakstīt.

Paraugā būs iespējami vienkāršs viesugrāmatas/čata (sauc kā gribi) kods.

 

Lai sāktu, vispirms ir jābūt zināmam datubāzes lietotājam un parolei, kā arī izveidotai kādai datubāzei.

Datubāzes izveide

Ja tik tālu viss ir, tad veram vaļā kādu datubāzes administrēšanas rīku, piemēram phpmyadmin, un taisam jaunu tabulu ar nosaukumu "chat_messages" un 4 laukiem:

 

Nākamajā logā mums jānorāda, kādi būs šo lauku tipi. Ņemam vērā, ka pirmajam laukam (id) jāuzliek PRIMARY indeksu un auto increment. Šādu lauku datubāzes tabulā vajag gandrīz vienmēr, un tas ir unikāls kautram ierakstam.

Nākamais lauks nick - tajā glabāsies niks. Varchar norāda, ka tajā tiks glabātas dažāda garuma teksta virknes. 128 - maksimālais simbolu skaits.

message - pats ziņas saturs. Izmantojam text tipa lauku, kurš paredzēts garāku tekstu glabāšanai.

created - datuma lauks ar tipu datetime, lai mēs zinātu, kad šī ziņa pievienota.

table.png

Alternatīvi, tabulu var izveidot arī iekopējot "SQL" sadaļā šo kodu:

https://exs.lv/mad182/mysql-samples/guestbook.sql

Rezultātā tai būtu jāizskatās šādi: 

 

PHP kods

Bez gariem ievadiem, viss paskaidrots koda komentāros:

<?php
//izviedo savienojumu ar datubāzi (serveris, lietotājs, parole, datubāzes nosaukums)
$db = new mysqli('localhost', 'lietotājs', 'parole', 'datubāze');

//pārbauda, vai savienojums ir veiksmīgs, un ja nav, izdrukā kļūdas paziņojumu un kodu
if ($db->connect_errno) {
   die("Kļūda savienojoties ar MySQL datubāzi: (" . $db->connect_errno . ") " . $db->connect_error);
}


/*
* Jauna komentāra pievienošana
*/
if (isset($_POST['message'])) {

   //nolasa niku un ziņu no $_POST masīva un apstrādā, lai to droši varētu saglabāt datuvāzē
   //iekš post vērtības parādās ar tādu pašu nosaukumu, kā name atribūtā HTML formā
   $message = $db->real_escape_string($_POST['message']);
   $nick = $db->real_escape_string($_POST['nick']);

   //ievieto ziņu datubāzē (NOW() automātiski aizpildīs datuma tipa lauku)
   $db->query("INSERT INTO chat_messages (nick, message, created) VALUES ('$nick', '$message', NOW())");

}


/*
* Komentāra pievienošanas html forma
*/
?>
<form action="" method="post">
   Niks:<br />
   <input type="text" name="nick" /><br />
   Tava ziņa:<br />
   <textarea name="message"></textarea><br />
   <input type="submit" value="Pievienot" />
</form>
<?php


/*
* Nolasa no datubāzes un attēlo esošos komentārus
*/
//LIMIT beigās nosaka, cik ziņas parādīsies, order - pēc kura lauka kārtot (ASC/DESC = augoši/dilstoši)
$messages = $db->query("SELECT * FROM chat_messages ORDER BY created DESC LIMIT 10");

//ciklā izdrukā visas atlasītās ziņas
while ($message = $messages->fetch_object()) {
   echo '<p>
   <b>' . $message->nick . '</b> @ ' . $message->created . ':<br />'
   . $message->message .
   '</p>';
}

PHP kods:

https://exs.lv/mad182/mysql-samples/guestbook.phps

 

Kādam vajadzētu būt rezultātam:

Laboja mad, labots 1x