顯示具有 PHP 標籤的文章。 顯示所有文章
顯示具有 PHP 標籤的文章。 顯示所有文章

2013年10月22日 星期二

PHP 字串.搜尋.取代,實作Session購物車

以往在實作商品購物車的時候都會先把顧客的商品儲存在Session裡,當顧客要結帳或者想暫時存放在自己的購物車時就能得知顧客選了哪些商品及數量。

說明:
此篇假設我選完商品,但我想取消某個商品。其他說明直接寫在程式碼註解中,不再多作解釋。

程式碼如下:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>字串.搜尋.取代</title>
</head>

<body>
<?php
$search_temp='P112'; //要取消的商品編號
$str_temp='P111=2;P112=1;P113=3;'; //假設這是商品編號=數量;
//取得字串起始位置
$start=strpos($str_temp,$search_temp); //strpos(字串,要搜尋的字串,起始位置) 起始位置如果是0可以不用寫
if(gettype($start)!="integer"){
$start=-1; //沒有找到字串
}
if ($start!=-1){
//不等於-1代表有找到商品
$end=strpos($str_temp,';',$start);
$end2=($end-$start)+1; //取幾個字元
$get_strtemp=mb_substr($str_temp,$start,$end2,'UTF-8');//取出某個範圍的字串 mb_substr(搜尋某個字串,起始位置,取幾個字元,'UTF-8')
echo $start.';'.$end."<br/>";
echo '擷取出來的字串,也就是要取消的商品:'.$get_strtemp."<br/>";
$str_temp=str_replace($get_strtemp,'',$str_temp); //取消的商品後的字串
echo $str_temp;
}else{
//等於-1沒有找到商品
echo '紀錄中沒有這項商品';
}

?>
</body>
</html>

2013年5月4日 星期六

PHP 取得mysql資料庫中的資料



前置作業:
1.新增 db_mysql.ini.php 檔案
   新增 test_db.php 檔案
2.需要有mysql資料庫,並新增一個資料表,如下:




P.S上圖為測試資料,如有冒犯請告知...

程式碼:(解釋都在註解裡)
 db_mysql.ini.php:

<?php
  /**
  Step 1.mysql_connect(伺服器位置,帳號,密碼) 連線資料庫伺服器
  因資料庫在自己的電腦裡而mysql資料庫使用的port是3306,所以伺服器位置值接填入localhost:3306
  */
  if (! mysql_connect('localhost:3306','root','root')){
    //die中斷程式執行
    die('無法連線資料庫伺服器');
  }
  //Step 2.設定連線編碼為UTF8,如果您的資料庫字元集不是UTF8請自行更改
  mysql_query('SET NAMES utf8');
  //Step 3.選擇資料庫
  if (!@mysql_select_db('itn')){
    die('無法使用資料庫');
  }
  echo 'DB inc End...<br />開始準備輸出資料....<br />';
?>

test_db.php:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>取得mysql資料庫中的資料</title>
</head>
<body>
<?php
  //Step 1.引用db_mysql.inc.php檔,當引用後會去執行db_mysql.inc.php檔中所有程式碼
  include('db_mysql.inc.php');
  //執行sql指令,如查詢資料表
  $result=mysql_query('select * from users'); //執行sql指令;
  $row_total=mysql_num_rows($result);//取得資料表資料列數
  $fields=mysql_num_fields($result);//取得資料表欄位數

  //取資料表欄位名稱
  for ($x=0;$x<($fields);$x++){
    $meta=mysql_fetch_field($result);//取得欄位資訊,使用mysql_fetch_field函數目的要取得資料表欄位名稱
    $fields_name[$x]=$meta->name; //將欄位名稱儲存到$fields_name陣列
  }
  echo "<br/>筆數=$row_total;欄位數=$fields<br />";

  //先將資料存入二維資料表
  for ($y=0;$y<($row_total);$y++){
    $row=mysql_fetch_array($result);
    $db_data[$y]=$row;
  }

  //輸出資料
  echo '<table border="1">';
  for ($y=-1;$y<($row_total);$y++){
    echo '<tr>';
    for ($x=0;$x<($fields);$x++){
 //假如y等於-1就先輸出資料表欄位名稱
 if ($y==-1){
   echo '<td align="center">'.$fields_name[$x].'</td>';
 }else{
   echo '<td align="center">'.$db_data[$y][$x].'</td>';
 }
}
echo '</tr>';
  }
  echo '</table>';
?>
</body>
</html>

輸出結果: