• 締切済み

PEARのPagerの設定の仕方

初心者です。 ホームページでDBを利用しているのですが、データ量が多くなるのでページ送り機能をつけたいのでどうすればいいか探していたところ、PEARのPagerを使えばできるとわかりました。 しかしどうもうまくいきません。 Pagerのフォルダもきちんとアップロードしてやってみたのですがうまくいきません。 やりたいのは登録数300件のデータベースの検索結果で、10件ごとにページ送りします。ページ送りは検索結果の最下部におきたいです。 以下のソースのどこに加えればいいか教えていただけないでしょうか。 何度も試してみたんですが、ページ送りしてくれないのです。 よろしくお願いいたします。 <?php extract($_POST); 検索項目のフォーム×3 if($sig=="kb"){ mysql_connect('ほにゃらら','データベース名','パスワード'); mysql_select_db('データベース名'); 検索区分 //クエリの作成 $sql = "select * from データベースの項目 where "; if($wxxx<>""){ 省略 } //本検索 $result = mysql_query($sql); $rows = mysql_num_rows($result); if($rows == 0){ print "検索結果なし"; exit; } else { echo "<b>", $rows, "</b>件HITしました<br />\n"; while($row = mysql_fetch_array($result)){ print("<table>"); print("<tr><td scope='row' rowspan='3'>".$row[""]."</font></td><td>タイトル</td>"); print("<td>".$row["title"]."</td></tr>"); print("<tr><td>項目A<td><td>".$row["koumokua"]."</td></tr>"); print("<tr><td>項目B</td><td>".$row["koumokub"]."</td></tr>"); print("</table>");} } } ?>

みんなの回答

  • tany180sx
  • ベストアンサー率63% (239/379)
回答No.1

<?php extract($_POST); 検索項目のフォーム×3 if($sig=="kb"){ mysql_connect('ほにゃらら','データベース名','パスワード'); mysql_select_db('データベース名'); 検索区分 //クエリの作成 $sql = "select * from データベースの項目 where "; if($wxxx<>""){ 省略 } // 検索範囲 $page = empty($_GET['p']) ? 1: $_GET['p']; $limit = 20; $offset = ($page - 1) * $limit; // 全件数取得 $count = 300;//SELECT count(*) FROM table WHERE ... //本検索 $sql .= " limit {$limit} offset {$offset}"; $result = mysql_query($sql); $rows = mysql_num_rows($result); if($rows == 0){ print "検索結果なし"; exit; } else { echo "<b>", $rows, "</b>件HITしました<br />\n"; while($row = mysql_fetch_array($result)){ print("<table>"); print("<tr><td scope='row' rowspan='3'>".$row[""]."</font></td><td>タイトル</td>"); print("<td>".$row["title"]."</td></tr>"); print("<tr><td>項目A<td><td>".$row["koumokua"]."</td></tr>"); print("<tr><td>項目B</td><td>".$row["koumokub"]."</td></tr>"); print("</table>"); require_once 'Pager/Pager.php'; $params = array( 'mode' => 'sliding', 'perPage' => $limit, 'delta' => 5, 'urlVar' => 'p', 'totalItems' => $count, ); $pager = & Pager::factory($params); $links = $pager->getLinks(); $start = $offset; $end = ($offset + $limit) > $count ? $count : $offset + $limit; echo sprintf('%d件から%d件まで表示しています。<br />', $offset + 1, $end); echo $links['all']; } } } ?>

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • データの表示の仕方について教えてください(PEAR PAGERの使い方)

    PHP5.2.4 MYSQL14.12DISTRIB5.0.4 WINXP IE=6.0 PEAR PAGERを使って、1ページに10件ずつ表示されるようにしたくて、下のようなコードを書きました。不具合として、1ページ目の10件表示はされるのですが、2ページ目、3ページ目といどうさせても表示が1から10件目とおなじになります。結果セットからのデーターの表示の仕方がおかしいと思ってるんですが、どういうふうにしていいのか 全く判りません。どなたか、素人にも判るようにご教授いただけたらと思います。宜しくお願いいたします。 <?php require_once 'Pager/Pager.php'; $totalItems = 47; $perPage=10; /*ページャーのパラメーター設定 モード:スライディング ページごとの表示数(perpage)カレントページの前後の表示ページ数(dalta)アイテムの数(totalitem)  */ $params = array( 'mode' => 'sliding', 'perPage' => $perPage, 'delta' => 5, 'totalItems' => $totalItems ); /*ページャーインスタンスの生成*/ $pager =& Pager::factory($params); /*ページのデータの取得*/ $links = $pager->getLinks(); print($links["all"]); /*現在のページ番号を取得して配列に入れる*/ $currentPageID = $pager->getCurrentPageID();  /*ページIDのオフセット値を返す*/ $index=($currentPageID-1)*$perPage+1;          if($rows==0){ /* 取り出すデーターがないとき、エラーメッセージを表示 */    print "該当するデータが見つかりませんでした。\n";  }else{ for($i=$index;$i<$index+$perPage;$i++){   if($i<=$totalItems){ $row=mysql_fetch_array($result) ?> <div align="center"> <TABLE border="1"> <TR> <TD colspan="2" width="500" align="center"><?=$row["e"] ?></TD> </TR> <TR> <TD height="45"><?=$row["setumei"] ?></TD> </TR> </TABLE><br><br> <div> <?php } } } ?>

    • 締切済み
    • PHP
  • PHP PEARのPagerをSmartyで使う

    初めまして、PEARのPagerを勉強していたのですが、Smartyで実装したいと思い試行錯誤していたらうまく表示されなくて困っています。 【PHP】 //PEARの読み込み、Smartyクラスの読み込み、MySQLクラスの読み込みは省略 //上記は正常に動作しています。 // テーブルの行数を数えます $sql = "SELECT COUNT(*) AS cnt FROM table_name;"; //レコード開始位置指定 $start = 0; //最大レコード数を指定 $limit = 10; // データを取り出すSQLを実行します。 $sql = "select * from table_name ORDER BY no DESC LIMIT $start, $limit"; $result = mysql_query($sql); while($rows = mysql_fetch_array($result)){ $res_data[]=array("title"=>$row['title'],"name"=>$row["name"],"no"=>$row["no"]); } //Pagerのパラメータを指定 $params = array( "itemData" => $res_data, "totalItems" => $limit, "perPage" => 6, "delta" =>5, "mode" =>"Jumping" ); //パラメータの連想配列を受け取る $pager =& Pager::factory($params); // ページデータの割り当て処理 foreach($pager->getPageData() as $item){ $res_data_page[] = $item; } //戻る/次/最初/最後のリンクとページリンクを返す $link = $pager -> getLinks(); //現在のページ番号を返す $currentPageID = $pager -> getCurrentPageID(); // テンプレート用に変数を設定 $smarty->assign('data', $res_data_page); $smarty->assign('pageNavi', $link['all']); $smarty->assign('currentPage', $currentPageID); ■tpl <table border="1"> <tr> <th>名前</th> <th>NO</th> <th>タイトル</th> </tr> {foreach from=$data item=i} <tr> <td>{$i.name}</td> <td>{$i.no}</td> <td>{$i.title}</td> </tr> {/foreach} </table> <p>{$pageNavi}</p> <p>{$currentPage}ページを表示</p> 参考URL http://meerweb.blog7.fc2.com/blog-entry-101.html データベースへの接続は出来ていて、ページャー機能は動いています。 取得しているデータ数もあっているのですが、全部1行目のデータだけ表示されます。 どなたか原因が分かる方いらっしゃいましたら、是非ともご教授ください。 よろしくお願い致します。

    • ベストアンサー
    • PHP
  • PEAR Pagerについて

    PHP Pagerのスクリプトを作成したのですが、うまく動きません。 DBに接続、検索、表示、までは動作確認できたのですが、Pagerを作成してからエラーが出るようになってしまいました。検索データ格納らへんがうまくいってないような気がするのですが・・・・。 DB Error: syntax error が出てしまいます。 どなたかアドバイスの程宜しくお願いします。 $result=$conn->query($sql); if(DB::isError($result)){ die($result->getMessage()); } $count=$result->numRows(); print"店舗数は".$count."件です"; while($rs=$result->fetchRow(DB_FETCHMODE_ASSOC)) { require_once('Pager/Pager.php'); $options = array( "totalItems" => $count, "perPage" => 3, "delta" => 5, "urlVar" => "pageNo" ); $pager =& Pager::factory($options); $navi = $pager -> getLinks(); $tenpo_name = $rs['tenpo_name']; print("{$tenpo_name}"); } ?>

    • ベストアンサー
    • PHP
  • PHPの簡易データ検索プログラムを書いていますがページャーを使ったデー

    PHPの簡易データ検索プログラムを書いていますがページャーを使ったデータ連動でうまくいかないところがあります。問題は1のデータ数取得がどのように2回(カウント+本検索)クエリを投げれば良いか判りません。どうかご教授いただきますようお願いします。 <?php require_once "./rank/config.php"; require_once("Pager/Pager.php"); //【1】カウント用データベースに接続 $link = mysql_connect($server, $usr, $pass); $db = mysql_select_db($mydb, $link); $query = "SELECT COUNT(*) FROM detail WHERE category = '".$ID."'"; $count = mysql_query($query); //【1】データ数の取得 $limit = $count; $page = empty($_GET['p']) ? 1: $_GET['p']; $offset = ($page - 1) * $limit; // クエリ条件部分 $query = "SELECT * FROM detail"; $query .= " where 1"; $query .= " and category = '".$ID."'"; $query .= " limit {$limit} offset {$offset}"; $flag = true; //MySQLデータベースに接続 if(!$link = mysql_connect($server, $usr, $pass)){ $flag = false; } //データベース選択 if(!$db = mysql_select_db($mydb, $link)){ $flag = false; } //lolipop用 mysql_set_charset("utf8"); //クエリ実行 if(!$result = mysql_query($query)){ $flag = false; } if(mysql_num_rows($result)==0){ echo 'データ件数は0件です'; } $rows = mysql_num_rows($result); if ($flag == true){ //メイン出力部 while($row = mysql_fetch_array($result,MYSQL_ASSOC)) { $list[] = array(category =>$row["category"],area=>$row["area"]); } }else{ echo 'データベース接続エラー'; } echo "<b>", $rows, "</b>件HITしました<br />\n"; $params = array( 'mode' => 'sliding', 'perPage' => $limit, 'itemData' => $list, 'firstPagePre'=>'=', "firstPageText"=>"TOP", "firstPagePost"=>"=", "lastPagePre"=>"=", "lastPageText"=>"LAST", "lastPagePost"=>"=", ); $pager = & Pager::factory($params); $navi = $pager->getLinks(); print($pager->numItems()."件中<br/>"); $scope = $pager->getOffsetByPageId(); print($scope['0']."件目から".$scope['1']."件目を表示 <br/>"); $ary = $pager->getPageData(); foreach ($ary AS $key => $value) { echo "<br>□1<br>".$value["category"]."<br>"; echo "□2<br>".$value["area"]."<br>"; echo "<hr>"; } echo $navi['all']; //SQLの解放 mysql_free_result($result); mysql_close($link); ?>

    • 締切済み
    • PHP
  • 検索結果($_POST)が2ページ目以降は消える

    PHP+MySQLで分割ページを作っています。 検索結果のページを分割しているのですが、2ページ目以降に検索されたレコードが表示されません。 1).2ページ目以降に続きのレコード(下記では21件目以降)を表示させるには、どうすれば良いのでしょうか。 2).上記には関係ないのですが、「<?= $msg ?>」で検索結果の総数を表示したいのですが、「1」としか表示されません…ついでで良いので、ご指摘いただけたらと思います。 <?php $keyword = $_POST['keyword']//検索ワードになります、下記の例では使用していません ?> <?php //データベース接続 $page = $_REQUEST['page']; if ($page == '') { $page = 1; } $page = max($page, 1); // 最終ページを取得する $sql = 'SELECT COUNT(*) AS cnt FROM table1'; $result = mysql_query($sql); $rows = mysql_fetch_assoc($result); $maxPage = ceil($rows['cnt'] / 20); $page = min($page, $maxPage); $start = ($page - 1) * 20; $result = mysql_query('SELECT * FROM table1 LIMIT ' . $start . ',20'); $rowss = mysql_num_rows($sql); //表示するデータを作成 if($rows){ while($row = mysql_fetch_array($result)) { $tempHtml .= "<tr>"; $tempHtml .= "<td>".$row["id"]."</td><td>".$row["name"]."</td><td>".$row["mail"]."</td>"; $tempHtml .= "</tr>\n"; } $msg = "".count($rowss).""; }else{ $msg = "sorry"; } //結果保持用メモリを開放する mysql_free_result($result); ?> //下記から、HTML部に表示しています <?php $start_a = ($start + 1); print "".$start_a."件~"; $start_b = ($start + 20); print "".$start_b."件を表示しています(".$page."ページ目/全".$maxPage."ページ)<br>"; if ($page > 1) { print "<a href=\"page.php?page=".($page - 1)."\">前のページへ</a>  "; } else { print "前のページへ"; } if ($page < $maxPage) { print "<a href=\"page.php?page=".($page + 1)."\">次のページへ</a>  "; } else { print "次のページへ"; } ?> <?= $msg ?> 何卒、よろしくお願い致します。

    • ベストアンサー
    • PHP
  • GETメソッド ID MYSQL

    分からないことがありましたのでご質問をさせて頂きます。 現在作成してる仕様なのですが、 フォームの一つの項目のリンクを設置し、別のページに渡し そこで更に詳細な情報をMYSQLからひっぱってきて表示させようとしております。 そこでGETメソッドを使って行おうとしているのですが、どうしても 変数の受け渡しがうまくいきません。 こちらがそのコードになります。 1,フォーム <td><a href="shousai.php?code=<?php echo $row['id'];?>">詳しくはこちら</a></td> 2,詳細ページ(shousai.php) <?php echo var_dump($_GET["id"]); $id = $_GET["id"]; $con = mysql_connect('localhost','aaaa','aaa'); if (!$con) { print("MySQLへの接続に失敗しました"); exit; } if (!mysql_select_db("database")) { print("データベースへの接続に失敗しました"); exit; } $sql="select * from table where id ='$id'"; $result=mysql_query($sql,$con); //SQL文の発 $rows=mysql_num_rows($result); while($row = mysql_fetch_array($result)){ ?> <table border ="1"> <tr><td><?php echo $row["name"]; ?></p></td></tr> <tr><td><?php echo $row["address"]; ?></td></tr> <tr><td><?php echo $row["station"]; ?></td></tr> <?php } ?> </table> 2の詳細ページにてvar_dumpで$_GET["id"];の値を受け取ってるか 確かめたのですがNULLになっており、ページになにも反映されません。 フォームからリンクで値を送り、それをきっかけにデータベースに接続して詳細を表示させたいと思っております。 どなたかご存知の方お伺いできませんでしょうか?

    • ベストアンサー
    • PHP
  • pearのpagerに関しまして

    pearのpagerを使用してページングの機能を追加しようとしたのですが、 次のような警告がでて、データの出力がされません。 Notice: Undefined variable: res3 in /var/www/html/***.php on line 215 Warning: pg_fetch_result(): supplied argument is not a valid PostgreSQL result resource in /var/www/html/***.php on line 215 for文でsqlを回す際に、適切に変数が入っていないようなのですが、 原因がわかりません。 どなたか分かる方、教えていただけますでしょうか。 よろしくお願いいたします。 #SQLを実行する $res3 = pg_query($dbcon, "SELECT status, city, address, line, station, bus, walk, rent, floor_space, parking, remark FROM estates LEFT OUTER JOIN cities USING (city_id) LEFT OUTER JOIN stations USING (station_id) LEFT OUTER JOIN lines USING (line_id) WHERE prefecture_id = '{$prefecture_id}' and status = '{$status}' and floor_space >= '{$floor_space_lower}' and floor_space <= '{$floor_space_upper}' and rent >= '{$rent_lower}' and rent <= '{$rent_upper}' and parking >= '{$parking_lower}' and parking <= '{$parking_upper}' ORDER BY station_id"); #失敗したとき、どんなSQLが失敗したかをエラーとして出力する if (! $res3) { trigger_error("query fail: ". $sql3); exit; } if (pg_num_rows($res3) == 0) { echo("<tr align = \"center\"><td colspan=\"11\"><br><b>現在、該当する情報はありません。</b><br></td></tr>"); } else { require_once("Pager/Pager.php"); function showPage($start,$cnt){ #SQL実行結果の行数だけ繰り返し for ($i = $start; $i < $start+$cnt; $i++) { #SQL実行結果を取り出して、HTML用にエスケープ処理をする $status = pg_fetch_result($res3, $i, 'status'); $city = pg_fetch_result($res3, $i, 'city'); $address = pg_fetch_result($res3, $i, 'address'); $line = pg_fetch_result($res3, $i, 'line'); $station = pg_fetch_result($res3, $i, 'station'); $bus = pg_fetch_result($res3, $i, 'bus'); $walk = pg_fetch_result($res3, $i, 'walk'); $rent = pg_fetch_result($res3, $i, 'rent')/10000; $floor_space = pg_fetch_result($res3, $i, 'floor_space'); $acreage = pg_fetch_result($res3, $i, 'floor_space')*0.3025; $rent_per_acreage = pg_fetch_result($res3, $i, 'rent')*0.00033/pg_fetch_result($res3, $i, 'floor_space'); $parking = pg_fetch_result($res3, $i, 'parking'); $remark = pg_fetch_result($res3, $i, 'remark'); #取り出したデータを出力する echo("<tr align = \"center\"> <td nowrap>{$status}</td> <td nowrap>{$city}<br>{$address}</td> <td nowrap>{$line}<br>{$station}</td> <td nowrap>{$bus}分<br>{$walk}分</td> <td nowrap>{$rent}万円</td> <td nowrap>{$floor_space}m2<br>{$acreage}坪</td> <td nowrap>{$rent_per_acreage}万円</td> <td nowrap></td> <td nowrap>{$parking}台</td> <td nowrap>{$remark}</td> </tr>"); } } $perPage=15; $params=array( "perPage"=>$perPage, "tatalItems"=>pg_num_rows($res3), "firstPagePre"=>"{", "firstPageText"=>"先頭", "firstPagePost"=>"}", "lastPagePre"=>"{", "lastPageText"=>"先頭", "lastPagePost"=>"}"); $o_page=Pager::factory($params); $navi=$o_page->getLinks(); showPage(($o_page->getCurrentPageID()-1)*$perPage,$perPage); print($navi['all']); }

    • 締切済み
    • PHP
  • 検索結果をgoogleのように数件ずつ表示

    データベース初心者で申し訳ないのですが、質問失礼いたします。 googleのような検索結果ページで、検索結果を3件ずつ表示し、改ページ(?)をさせたいと思っております。 【web表示例】 1ページ目 3件表示/20件中表示 +------+------+---+ | name | anime | age | +------+------+---+ | サザエ | サザエさん | 24 | | マスオ | サザエさん | 29 | | タラオ | サザエさん | 3 | +------+------+---+ 1234567 //ページ数へのリンクですが、現在表示されている「1」にはリンクをさせません ※あらかじめLIMITで1~3件、4~6件を表示させるというページを作っているやり方でなく、  検索結果を自動で1ページ、2ページと振り分けてくれるものと考えています。 現在作成しておりますPHP部を、抽出条件など省いてはおりますが下記に表記させていただきました。 <?php //データベース接続 省略・・・ //検索ワードを取得 $keyword = $_POST['keyword']; $sql = "SELECT * FROM TABLE1 WHERE '%".$keyword."%' ORDER BY age "; $result = executeQuery($sql); //結果セットの行数を取得する $rows = mysql_num_rows($result); if($rows){ while($row = mysql_fetch_array($result)) { $tempHtml .= "<tr>"; $tempHtml .= "<td>".$row["name"]."</td><td>".$row["anime"]."</td><td>".$row["age"]."</td>"; $tempHtml .= "</tr>\n"; } $msg = $rows."件のデータがあります。"; }else{ $msg = "データがありません。"; } mysql_free_result($result); ?> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=shift_jis"> <title></title> </head> <body> <?= $msg ?> <table> <?= $tempHtml ?> </table> </body> </html> 他HTMLで検索したあと、上記1ページで検索結果を表示しています。 ○件ずつ表示・・・というのは、難しいと調べている時にありましたが、 もっと理解してからでないととは思ったのですが必要となり自分なりに調べて試したものだけでは解決にならず質問の方させていただきました。 が、やはり初心者には難しいでしょうか?? ちなみに、調べていて「CGIで・・・」というものも多かったのですが、 検索ページがPHP+MySQLで作られているので、同じものでと考えています。 今使用しているものがPHP+MySQLなので、こちらでできればと思っております。 何卒宜しくお願い致します。

    • ベストアンサー
    • PHP
  • PHP pagerについて

    現在mysqlに登録されているデータを表示させてなおかつ表示制限をつくっています。 pagerにて表示を分割しています。 http://www.phppro.jp/qa/3073のソースを参考に作成したみたのですが、 下記が自分なりに編集したコードです。 define(LMAX, 5); if (!isset($_GET['page'])) { $page = 1; } else { $page = intval($_GET['page']); if ($page == 0 ) { die('page no error'); } } $skip = ($page - 1) * LMAX; $query = sprintf('SELECT * FROM `test` LIMIT '.$skip.','.(LMAX + 1)); $result = mysql_query($query, $link) or die(mysql_error()); $line = 0; while ($row = mysql_fetch_array($result)) { if ($line >= LMAX) { break; } if ($line == 0) { // ヘッダ出力 $r_list .= "<tr>\n"; $r_list .= "<th>テスト1</th>\n"; $r_list .= "<th>テスト2</th>\n"; $r_list .= "<th>テスト3</th>\n"; $r_list .= "<th>テスト4</th>\n"; $r_list .= "</tr>\n"; } $line++; $r_list .= "<tr>\n"; $r_list .= "<td>" .$row["test1"]. "</td>\n"; $r_list .= "<td>" .$row["test2"]. "</td>\n"; $r_list .= "<td>" .$row["test3"]."</td>\n"; $r_list .= "<td>" .$row["test4"]."</td>\n"; $r_list .= "</tr>\n"; } if ($page > 1) { $prev = '<a href="?page=' . ($page - 1) . '">Prev</a>'; } if ($line > LMAX) { $next = '<a href="?page=' . ($page + 1) . '">Next</a>'; } としています。 いくつかご質問がお分かりの方が、いらっしゃいましたら教えていただけないでしょうか? ・define(LMAX, 5);のところで5にしているにもかかわらず5件表示がされない。 ・このコードだとPrevやNextがでない。 ・ 2個目の$r_list .= "</tr>\n";の下に$line++;を書くとPrevやNextが表示される。 以上になります。 宜しくお願いいたします。

    • 締切済み
    • PHP
  • PHPの検索システムについてご教授下さい

    こんにちは。現在PHPで検索システムを実装しようとしておるのですが、どうしても条件絞り込みを行うことができず(全件表示されてしまう)困っております。PHP初心者で、無知なため先輩方ご教授頂けますと幸いです。PHPのソースは以下となります。 <?php $debug = fales; //DB接続 mysql_connect('db_host','db_user','db_pass') or die(mysql_error()); mysql_select_db('db_name') or die(mysql_error()); if($debug) print_r($_POST); //エラーチェック //リクエストメソッドチェック if($_SERVER["REQUEST_METHOD"] != "POST"){ // ブラウザからHTMLページを要求された場合 }else{ // フォームからPOSTによって要求された場合 } $query = "SELECT * FROM search "; if(!empty($name)) { $name = addslashes($name); $where = "name = '$name' "; } if(!empty($tel)) { $tel = addslashes($tel); $where .= "tel '$tel' "; } if(!empty($sex)) { $sex = addslashes($sex); $where .= "sex = '$sex' "; } if(!empty($where)) { $where = substr($where, 0, -4); $where = "WHERE" . $where; } $query .= '$where'; $result = mysql_query($query . implode(" AND ", $where)); $num_rows = mysql_num_rows($result); if($num_rows == 0) $message = "該当するデータはありませんでした"; else $message = $num_rows . "件ヒットしました"; ?> 検索結果<br> <?=$message?> <table border=1> <tr><td>名前</td><td>電話番号</td><td>性別</td></tr> <? while($row = mysql_fetch_assoc($result)): ?> <tr><td><?=$row['name']?></td><td><?=$row['tel']?></td><td><?=$row['sex']?></td></tr> <? endwhile; ?> </table> <a href="input.html">再検索</a> 現在データベースにはサンプルとして10件入れておりますが、どの条件で検索を行なっても10件全てが検索結果として表示されてしまいます。どこを触れば良いのでしょうか…? お忙しいところ大変恐れ入りますが何卒、よろしくお願い申し上げます。

    • 締切済み
    • PHP