<?php
// PostgreSQL in UTF-8 charset
ini_set('max_execution_time', 86400); // 86400 = 60 * 60 * 24 seconds = 24 Hours
/* Section 1 : Configuration */
// 1.1 Main configuration
$db = parse_url(getenv("DATABASE_URL"));
$connect = new PDO("pgsql:" . sprintf("host=%s;port=%s;user=%s;password=%s;dbname=%s",$db["host"],$db["port"],$db["user"],$db["pass"],ltrim($db["path"], "/")));
$host = $db["host"];
$db = ltrim($db["path"], "/");
$tb = 'car';
$user = $db["user"];
$password = $db["pass"];
$file = "postgresqlworking.php"; // index.php
$start = microtime();
// 1.2 Security option
$protect_sql_injection = false; // true = safe; false = unsafe
$phpinfo_function_allow = true; // true = can use phpinfo()
// 1.3 Database connection
// $connect = new mysqli($host,$user,$password,$db);
if ($connect->connect_error) die("Connection Database :failed");
$tb_found = reccount("select count(*) from information_schema.tables where table_name like '$tb'");
// 1.4 phpinfo function
if (isset($_GET{'action'}) && ($_GET{'action'} == "phpinfo") && ($phpinfo_function_allow == true)) { phpinfo(1); exit; }
// 1.5 start html
echo '<html><head><title>PostgreSQL Working</title><meta http-equiv="content-type" content="text/html;charset=UTF-8" />
<style type="text/css">
textarea{font-size:10px;color:blue;scrollbar-base-color:red;scrollbar-arrow-color:white;background-color:#ffffdd;}
input{font-family:microsoft sans serif;font-size:16px;color:black;background:#ffffdd;}
</style></head><body>';
?>
<!-- Section 2 : Menu screen -->
<form action="" method="post">
<table style="background-color:blue;border-width:15px;border-style:solid;width:740px;margin-left:auto;margin-right:auto;text-align:center;">
<?php if ($tb_found == 0) { ?>
<tr><td style="background-color:white">
<input type="submit" value="Create table" name="action" style="width:350px;height:50px;">
</td></tr>
<?php } else { ?>
<tr><td style="vertical-align:top;background-color:white;width:100;text-align:center;">
<input type="submit" value="post 1000" name="action" style="width:100px;background-color:yellow;">
<input type="submit" value="post_recs" name="action" style="width:100px;background-color:#dddddd;">
<input name="recs" value="1000" size="6">
</td>
<td style="background-color:#dddddd"><input type="submit" value="postmany" name="action" style="width:100px;background-color:#ddffdd;">
ข้อมูลข้างล่างนี้สามารถ copy จาก excel มา paste ได้<br/>
<textarea name="manyrecord" rows="4" cols="120" wrap="off">
1 2547 หจก. กองเกตุเอ๊กซ์เปรส 20 11 2551 8/1 ม.2 แขวงทุ่งครุ ทุ่งครุ กรุงเทพฯ 17 14 3 1 3
2 2547 หจก. ดาวคะนองการท่องเที่ยว 5 1 2552 10/223 ม.4 แขวงดินแดง ห้วยขวาง กรุงเทพฯ 2 2 3
3 2547 บจ. ธรรมนูญ โพธิ์ทอง 5 1 2552 1407/6 ซ.ตากสิน 7 ถ.สมเด็จพระเจ้าตากสิน แขวงบุคคโล สายไหม กรุงเทพฯ 4 2 2 3
4 2547 บจ. นิติพงษ์ ไพบูลย์ทรานสปอร์ต 6 1 2552 15/20 ถ.นวลจันทร์ แขวงคลองกุ่ม สายไหม กรุงเทพฯ 1 1 3
5 2547 นาย บางแคการท่องเที่ยว 6 1 2552 209/718 ม.ปรีชา 8 ถ.รามคำแหง แขวงหัวหมาก สะพานสูง กรุงเทพฯ 1 1 3
6 2547 นาย ผาน ตอลบรัมย์ 6 1 2552 4/33 ม.6 แขวงสายไหม สวนหลวง กรุงเทพฯ 1 1 3
7 2547 บจ. วิจิตรประกอบ 7 1 2552 25 ซ.อ่อนนุช 10 ถ.อ่อนนุช แขวงสวนหลวง ลาดพร้าว กรุงเทพฯ 02-2743222-3 3 3 3
8 2547 หจก. สตาร์แปซิฟิคทรานสปอร์ต 26 1 2552 41/9 ม.9 ถ.วิภาวดีรังสิต แขวงสีกัน บึงกุ่ม กรุงเทพฯ 21 1 19 1 3
9 2547 นาย สมนึก ผลดีนานา 12 1 2552 43 ซ.บรมราชชนนี 14 ถ.บรมราชชนนี แขวงบางบำหรุ บางพลัด กรุงเทพฯ 1 1 3
10 2547 บจ. สวัสดิภาพทัวร์ 13 1 2552 44/73 ม.7 แขวงลาดพร้าว บางกะปิ กรุงเทพฯ 2 2 3
11 2547 นาย สุชาติ ภรมงคลธรรม 13 1 2552 52/4 ม.13 ถ.กรุงเทพกรีฑา แขวงสะพานสูง บางกะปิ กรุงเทพฯ 1 1 3
12 2547 นาย เสวกทัวร์ 13 1 2552 55 ม.9 ซ.ปรีชา แขวงฉิมพลี ธนบุรี กรุงเทพฯ 1 1 3
13 2547 หจก. ไสว วรรณรังสี 24 1 2552 55/4 ม.3 ซ.ประชาอุทิศ 76 ถ.ประชาอุทิศ แขวงทุ่งครุ กรุงเทพฯ 10 10 3
</textarea>
</td></tr></table>
<table style="background-color:black;border-spacing:5px;text-align:center;width:760px;margin-left:auto;margin-right:auto;"><tr>
<td bgcolor="white" align="center"><input type="submit" value="listall" name="action" style="width:60px;background-color:#ffdddd;">
เริ่ม <input name="begin" value="0" size="1">
จำนวน <input name="total" value="100" size="2">
</td>
<td style="background-color:white;text-align:center;">
<input type="submit" value="findname" name="action"><input name="name" value="หจก." size="3" style="width:60px;background-color:#ffddff;">
</td>
<td style="background-color:white;text-align:center;">
<input type="submit" value="deleterecord" name="action" style="width:100px;background-color:#ddddff;">
<input name="did" value="1" size="1"><input name="dyear" value="2547" size="4">
</td>
<td style="background-color:white;text-align:center;">
<input type="submit" value="deletetable" name="action" style="width:100px;background-color:red;color:white;">
</td></tr>
<?php } ?>
</table>
</form>
<!-- Section 3 : Activity -->
<table style="background-color:gray;width:760px;margin-left:auto;margin-right:auto;">
<tr><td style="background-color:white;">
<?php
### Start of 10 Activity ###
if (isset($_POST{'action'})) {
###########################
# 1 # create table
###########################
if ($_POST{'action'} == "Create table") {
$query = "create table $tb (";
for ($i=1;$i<=26;$i++) $query = $query . "f" . $i . " char(100),";
$query .= "f27 char(100)";
$query .= ")";
echo $query."<br/>";
if ($connect->query($query)) echo "process : completely<br/>"; else { echo "error to create table<br/>"; exit; }
echo "<meta http-equiv='refresh' content=\"3;URL='$file'\" />";
exit;
}
###########################
# 2 # delete table
###########################
if ($_POST{'action'} == "deletetable") {
$query = "drop table $tb;";
if ($connect->query($query)) echo "process : completely<br/>"; else { echo "table remove : error<br/>$query"; exit; }
echo "<meta http-equiv='refresh' content=\"3;URL='$file'\" />";
exit;
}
###########################
# 3 # search from keyword
###########################
if ($_POST{'action'} == "findname") {
if(strlen($_POST{'name'}) > 1) {
$query = "select * from $tb where f4 like '". $_POST{'name'} ."%'";
$result = $connect->query($query);
if (!$result) { echo "Finding : error<br/>$query"; exit;}
$rows = $result->fetchAll(PDO::FETCH_OBJ); // $num_rows = count($rows);
foreach ($rows as $object) {
echo "<br/>";
foreach ($object as $o) echo "$o ";
}
} else {
echo '<b>Error</b> : Keyword required > 1 character';
}
}
###########################
# 4 # delete record
###########################
if ($_POST{'action'} == "deleterecord") {
$before = reccount("select count(*) from $tb");
$query = "delete from $tb where f1 = '". $_POST{'did'}."' and f2 = '". $_POST{'dyear'}."'";
$result = $connect->query($query);
$after = reccount("select count(*) from $tb");
if ($result) echo "delete : ". ($before - $after) ." records<br/>"; else { echo "delete : error<br/>$query"; }
}
###########################
# 5 # list all records
###########################
if ($_POST{'action'} == "listall") {
// $query = "select * from $tb limit " . $_POST{'begin'} . "," . $_POST{'total'} ;
$query = "select * from $tb limit " . $_POST{'total'} . " offset " . $_POST{'begin'} ;
$result = $connect->query($query);
if (!$result) { echo "listing : error<br/>$query"; exit;}
$rows = $result->fetchAll(PDO::FETCH_OBJ); // $num_rows = count($rows);
echo "<ol start=" . ($_POST{'begin'} + 1) . ">";
foreach ($rows as $object) {
echo "<li>";
foreach ($object as $o) echo "$o ";
}
echo "</ol>";
/* while ($object = $result->fetch_object()) { echo "<li>"; foreach ($object as $o) echo "$o "; } */
}
###########################
# 6 # post records
###########################
if ($_POST{'action'} == "postmany") {
$getline = explode("\r\n",$_POST{'manyrecord'});
for ($j=0;$j<count($getline);$j++) {
$l = $j + 1;
$getfield = explode("\t",$getline[$j]);
# echo "$l $getfield[0] - $getfield[26]<br/>";
}
if ($connect) {
echo "post from textarea : completely<br/>";
for ($j=0;$j<count($getline);$j++) {
if (strlen($getline[$j]) > 1) {
$l = $j + 1;
$getfield = explode("\t",$getline[$j]);
$query = "insert into $tb values(";
for ($i=0;$i<=25;$i++) $query = $query . "'$getfield[$i]',";
$query = $query . "'$getfield[26]'";
$query = $query . ");";
echo $query."<br/>";
$result = $connect->query($query);
}
}
} else {
echo "connect : fail";
}
}
###########################
# 7 # post 1000
###########################
if ($_POST{'action'} == "post 1000") {
if ($connect) {
echo "Post 1000 : completely";
for ($j=0;$j<1000;$j++) {
if(!function_exists("iconv")) {
$c1 = chr(rand(65,91));
$c2 = chr(rand(65,91));
$c3 = chr(rand(65,91));
} else { //phpversion()
$c1 = iconv("TIS-620","UTF-8",chr(rand(161,206))); // 196 = ฤ ทำให้มี 45 ตัว
$c2 = iconv("TIS-620","UTF-8",chr(rand(161,206)));
$c3 = iconv("TIS-620","UTF-8",chr(rand(161,206)));
}
$query = "insert into $tb (f1,f2,f4) values( $j , $j, '" . $c1.$c2.$c3 . "');";
$result = $connect->query($query);
}
} else {
echo "connect : fail";
}
}
// echo iconv("TIS-620","UTF-8",chr(161)); // output = ก
// echo ord(iconv("UTF-8","TIS-620","ก")); // output = 161
###########################
# 8 # post_recs
###########################
if ($_POST{'action'} == "post_recs") {
if ($connect) {
echo "Post " . $_POST{'recs'} ." : completely";
// echo "iconv:" . function_exists("iconv"); // 000webhosting.com จะ return 1 กลับมา
for ($j=0;$j<$_POST{'recs'};$j++) {
if(!function_exists("iconv")) { // ป้องกันการเรียกใช้ iconv ที่ 5GBFree.com
$c1 = chr(rand(65,91));
$c2 = chr(rand(65,91));
$c3 = chr(rand(65,91));
} else {
$c1 = iconv("TIS-620","UTF-8",chr(rand(65,91))); // ที่ 5GBFree.com หากเรียกใช้ iconv จะหยุดการทำงาน
$c2 = iconv("TIS-620","UTF-8",chr(rand(65,91))); // ตรวจสอบการ support ของ iconv ด้วย phpinfo() ได้
$c3 = iconv("TIS-620","UTF-8",chr(rand(65,91)));
}
$query = "insert into $tb (f1,f2, f4) values( $j , $j, '" . $c1.$c2.$c3 . "');";
$result = $connect->query($query);
}
} else {
echo "connect : fail";
}
}
###########################
# 9 # Total records
###########################
echo "<hr style='display:block;height:1px;border:0;border-top:1px solid#ccc;margin:1em0;padding:0;' />Total records : ". reccount("select count(*) from $tb");
$connect->close();
### Stop of 10 Activity ###
} // end of isset : action from post
?>
</td></tr></table>
<!-- Section 4 : Introduction -->
<table style="margin-left:auto;margin-right:auto;width:760px;border-width:5px;border-style:solid;">
<tr><td style="background-color:#ddffdd;">
<fieldset><legend><b>Suggestion about this script</b></legend>
<ol>
<?php if($phpinfo_function_allow) { ?>
<li>เรียกใช้ <a href="?action=phpinfo">phpinfo()</a> เพื่อดูค่าต่าง ๆ ของ server เช่น version ของ php หรือ mysql
<?php } ?>
</ol>
</fieldset>
</td></tr>
<tr><td style="background-color:white;">
<?php
$demo = array("https://myapp630306.herokuapp.com/postgresqlworking.php");
for($demo_no=0;$demo_no<count($demo);$demo_no++) {
echo "<b>Demo site</b> : <a href='$demo[$demo_no]'>$demo[$demo_no]</a><br/>";
}
list($u_start,$s_start) = explode(" ",$start);
list($u_stop,$s_stop) = explode(" ",microtime());
$tstart = $u_start + $s_start;
$tstop = $u_stop + $s_stop;
echo "Page loading in " . ($tstop - $tstart) . " seconds";
?>
</td></tr></table>
</body></html>
<?php
###########################
# 10 # Function
###########################
function reccount ($q) {
global $connect;
$result = $connect->query($q);
return $result->fetchColumn();
}
/* http://thaiabc.ueuo.com/ http://thaiabc.000webhostapp.com/mysqlworking.php */
?>
จำนวน : 273 บรรทัด