Klient MySQL w Linuxie potrafi generować pliki wynikowe HTML, posiadają one jednak błędy formatowania (na przykład znaki < > nie są poprawnie formatowane, program je koryguje

Utwórzmy plik zawierający zapytania SQL do bazy np.
program.sql:

1
2
3
USE baza;
SELECT * FROM kupil WHERE pesel < ANY (SELECT pesel FROM klient);
SELECT * FROM samochody WHERE rocznik<2012;

Pamiętajmy, że zapytania poprzedzamy wybraniem bazy danych poleceniem USE baza, a po każdym zapytaniu stawiamy średnik.
Stwórzmy najpierw podkatalog mysql w katalogu public_html
Wyniki zapytań można generować poleceniem powłoki:

1
2
mkdir ./public_html/mysql
mysql -u uzytkownik -p -H -vvv <program.sql >./public_html/mysql/wyniki.inc.html

Gdzie program.sql zawiera polecenia sql, a wyniki generowane są do pliku *.inc.html. Jest to nazwa umowna oznaczająca niekompletny (załączany) plik HTML. Jest on faktycznie niekompletny, gdyż nie zawiera m. in. znaczników head, body, kodowania polskich znaków itd.
Dlatego dorobimy mu front-end w pliku openfile.php:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
<HTML>
 <head>
  <meta charset="utf8">
  <link rel="Stylesheet" type="text/css" href="http://fulara.com/styl.css" />
  <title>Wyniki SQL</title>
 </head>
 <BODY>
  <h1>Plik wyników MySQL</h1>
<?php
//sprawdzanie czy parametr w adresie jest niepusty
if (!isset($_GET['plik']) || $_GET['plik']=='') die ("Błąd! Brak parametru");
$plik=$_GET['plik'];
$stan=0;
echo "Dane wygenerowane z pliku: <b>".$plik."</b>";
$nazwapliku="./".$plik;
if (!file_exists($nazwapliku)) die ("Błąd! Takiego pliku nie ma na dysku!");
$plik=file($nazwapliku);
foreach ($plik as $linia)
{
 $kreska=strpos($linia,"--------");
 
 if ($kreska!==false && $stan ==0)
 {
        $stan=1; //stan polecenia SQL
         echo "<hr> ";
     
 }
 else if ($kreska!==false && $stan==1)
 {
        $stan=0;
         echo "<br>";
       
 }
 else if ($stan==1 && $kreska===false)
 {
   echo '<div class="zapytanie">'.
         htmlspecialchars("$linia").
        '</div>';
 
 }
 else echo $linia;
}
?>
 </BODY>
</HTML>

Aby program działał należy uruchomić go podając w linii adresu ręcznie parametr:

1
http://..../openfile.php?plik=program.inc.html

Ponieważ to jest męczące, drugi program wyszuka wszystkie niekompletne pliki html w katalogu mysql, zapiszemy go jako index.php w tym katalogu:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<html>
 <head>
  <meta charset="utf8">
  <title>Lista wyników zapytań SQL</title>
 </head>
 <body>
  <h1>Wyniki zapytań SQL</h1>
   <ol>
<?php
 foreach(new DirectoryIterator('.') as $file)
  if (strpos($file,'.inc.html')!==false)
   echo "<li><a href="openfile.php?plik=$file">$file</a></li> <br>";
?>
  </ol>
 </body>
</html>