No to skoro chcesz to lecimy.
System budowy zapytania:
IOPlik.php (do pobierania szablonu zapytania ze snippeta)
<?php
// Biblioteka przeznaczone do wykonywania odczytów i zapisów między instancją witryny, a jej plikami
class IOPlik
{
private $plik;
public function __construct ($sciezka)
{
if (!(file_exists ($sciezka)))
{
die ('Podany plik nie isnieje');
}
$this -> plik = $sciezka;
}
public function szybkiDopisDoPliku ($tekst)
{
if (!(is_writable ($this -> plik)))
{
die ('Podany plik nie moze byc zapisywany');
}
file_put_contents ($this -> plik, $tekst, FILE_APPEND | LOCK_EX);
}
public function szybkiOdczytPliku ()
{
if (!(is_readable ($this -> plik)))
{
die ('Podany plik nie moze byc czytany');
}
return file_get_contents ($this -> plik, LOCK_EX);
}
public function __toString ()
{
if (!(is_readable ($this -> plik)))
{
die ('Podany plik nie moze byc czytany');
}
return file_get_contents ($this -> plik, LOCK_EX);
}
}
?>
szablon.php (przekształca szablon we właściwe zapytanie)
<?php
// Biblioteka przeznaczone do obsługi szablonów dancych
class szablon
{
private $tresc = "";
private $poczatekWzorca = '/^\(\$';
private $dopuszczalneZnaki = '[a-zA-Z]+';
//Każdy znak, ktory nie jest alfanumeryczny nie przejdzie tego testu
private $koniecWzorca = '\)$/D';
private function wzorzec ()
{
return $this -> poczatekWzorca . $this -> dopuszczalneZnaki . $this -> koniecWzorca;
}
public function __construct ($zawartosc)
{
$this -> tresc = $zawartosc;
}
public function przeksztalc ($argument, $wartosc)
{
if (!(preg_match ($this -> wzorzec (), $argument)))
{
die ('Wyszukiwany wzorzec jest nieprawidlowy' . $argument);
}
$this -> tresc = str_replace ($argument, $wartosc, $this -> tresc);
}
public function __toString ()
{
if ((preg_match ($this -> wzorzec (), $this -> tresc)))
{
die ('Szablon nie jest przetworzony do konca');
}
return $this -> tresc;
}
public function ujawnij ()
{
if ((preg_match ($this -> wzorzec (), $this -> tresc)))
{
die ('Szablon nie jest przetworzony do konca');
}
return $this -> tresc;
}
}
?>
IOBazaDanych.php (wykonuje pracę)
<?php
// Biblioteka przeznaczone do wykonywania odczytów i zapisów między instancją witryny, a jej bazami danych
require_once ('C:\wamp\www\CMS\skrypty\PHP\IOPlik.php');
require_once ('C:\wamp\www\CMS\skrypty\PHP\szablon.php');
class bazaDanych
{
private $zrodla;
private $lacze;
private $kwerenda;
private $wynik;
private $czyWykonane;
public function __construct ($sciezka)
{
$this -> zrodla = $sciezka . DIRECTORY_SEPARATOR;
$daneLogowania = new IOPlik ($this -> zrodla . 'login.txt');
$loguj = explode ("," , $daneLogowania);
try
{
$this -> lacze = new PDO ($loguj [0], $loguj [1], $loguj [2]);
}
catch (PDOEXception $blad)
{
die ('Połączenie nie moze zostać utworzone: ' . $blad->getMessage());
}
$this -> czyWykonane = true;
}
public function __destruct()
{
if (!($this -> czyWykonane))
{
die ('Poprzednia kwerenda nie wykonana');
}
unset ($this -> lacze);
}
public function utworzKwerende ($typ)
{
if (!($this -> czyWykonane))
{
die ('Poprzednia kwerenda nie wykonana');
}
if ($this -> wynik)
{
$this -> wynik -> closeCursor;
}
unset ($this -> wynik);
$this -> czyWykonane = false;
$typKwerendy = new IOPlik ($this -> zrodla . DIRECTORY_SEPARATOR . $typ . '.txt');
$this -> kwerenda = new szablon ($typKwerendy);
}
public function uzupelnijKwerende ($kolumna, $zawartosc)
{
if ($this -> czyWykonane)
{
die ('W bazie danych nie maktywnego zapytania');
}
$this -> kwerenda -> przeksztalc ($kolumna, $zawartosc);
}
public function wykonajKwerende ($czyZmienia)
{
if ($this -> czyWykonane)
{
die ('W bazie danych nie maktywnego zapytania');
}
try
{
if ($czyZmienia) //Czyli czy nie ogranicza się do odczytu z bazy danych
{
$this -> wynik = $this -> lacze -> exec ('"' . $this -> kwerenda -> ujawnij () . '"');
}
else
{
echo ($this -> kwerenda -> ujawnij ());
$this -> wynik = $this -> lacze -> query ($this -> kwerenda -> ujawnij ());
}
}
catch (PDOEXception $blad)
{
die ('Kwerenda nie moze byc wykonana: ' . $blad->getMessage());
}
$this -> czyWykonane = true;
unset ($this -> kwerenda);
}
public function zwrocWynik ()
{
return $this -> wynik;
}
}
?>
Skrypt wykorzystujący powyższe nagłówki:
$przewodnikWitryn = new bazaDanych ('C:\wamp\www\CMS\Akcje\zarzadzanieWitryna\skrypty\SQL');
$przewodnikWitryn -> utworzKwerende ('liczWiersze');
$przewodnikWitryn -> wykonajKwerende (false);
$obecnaIloscWitryn = $przewodnikWitryn -> zwrocWynik ();
$przewodnikWitryn -> utworzKwerende ('dodajWitryne');
$przewodnikWitryn -> uzupelnijKwerende ('($id)', ++$obecnaIloscWitryn);
$przewodnikWitryn -> uzupelnijKwerende ('($nazwa)', $_GET["katalogWitryny"]);
$przewodnikWitryn -> uzupelnijKwerende ('($domena)', $_GET['domenaWitryny']);
$przewodnikWitryn -> uzupelnijKwerende ('($sponsor)', 'ja');
$przewodnikWitryn -> wykonajKwerende (false);
unset ($przewodnikWitryn);
Dane pochodzą ze strony z kodem:
<!DOCTYPE html>
<html lang="pl">
<head>
<title>Zakladanie konta witryny</title>
</head>
<body>
<form action="./skrypty/PHP/zakladanie konta.php" method="get">
Podaj lokalizacje witryny:
<input type="text" name="katalogWitryny" required /><br />
Podaj domene witryny: <input type="url" name="domenaWitryny" required /><br />
<input type="submit" value="Zatwierdź" />
</form>
</body>
</html>
A o to snippety dla bazy danych:
login.txt
mysql:host=localhost;dbname=witryny,root,
liczWiersze.txt
SELECT COUNT '*' FROM `daneglowne`
dodajWitryne.txt
INSERT INTO `witryny` (`ID`, `Nazwa`, `Domena`, `Sponsor`) VALUES ('($id)', '($nazwa)', '($domena)', '($sponsor)')