PHP

MySQLを使う
 ○PHPからMySQLのデータを使う。
 ○(ど)
 ○カウンタ
   ログファイルを使う ファイルからの入出力
   データベースを使う 




つまずきの解消
配列に入っている内容を利用する方法


MySQLを使う

MySQL

接続.切断.
サーバに接続
 mysql_connect([ホスト名]:[ポート番号],[ユーザ名],[パスワード])
     接続に成功すると コネクションID を返す。

  例] @mysql_connect($MySQL['HOST'],$MySQL['USER'],$MySQL['PASSWORD']);
     @ : warningを表示しない。

サーバとの接続を切断
 mysql_close(リソースリンクID)
    リソースリンクID = コネクションID

  例]
   mysql_close($conn_id);
     $conn_id : コネクションID 
戻る

その他

MySQL

データベースを使う
データベースの選択
 mysql_select_db([データベース名],[リソースリンクID])
   リソースリンクIDを省略すると、一番近い前の行のリソースIDを使う。

クエリの送信
 mysql_query(]クエリの内容],[リソースリンクID])

行数、列数を取得する
行数 mysql_num_rows(リソースリンクID)
列数 mysql_num_fields(リソースリンクID)
戻る

その他

MySQL

○mysql_db_query(データベース名, SQL文);
  古い命令。つぎと同じ。
     mysql_select_db
     mysql_query
  を使う。

戻る

同じスプリクト内でのフォームデータの受信

$_SERVER["PHP_SELF"]

PHP
○<FORM ACTION="<? print($_SERVER["PHP_SELF"]); ?>" method="post">
  
戻る

配列へデータをセットする

PHP
<head>
<title>配列テスト</title>
</head>

<body>

<?php
for($i=0; $i<= 10; $i++)
{
$test[]=$i."a";
}
for($i=0; $i<= 10; $i++)
{
print($i." ".$test[$i]."<br>");
}

?>

</body>
</html>

  

戻る

動作設定のWは小文字

fopen(ファイル名,'w")

PHP
○fopen(test.txt ,’’);
  ’’は、書き込み。
戻る

カウンタ

ログファイルを使う

PHP
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">

<html>
<meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS">

<head>
<title>ログファイルを使ったカウンタ</title>
</head>

<body>

<?php
$logfile = "./counter.log";

$counter = 0;
if($fn = @fopen($logfile, 'r')){
$counter = trim(fgets($fn));
fclose($fn);
}
print( ++$counter . "人目のお客様です");

if($fn = fopen($logfile, 'w')){
fwrite($fn, $counter);
fclose($fn);
}
?>

</body>
</html>
戻る


カウンタ

データベースMySQLを使う

PHP
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">

<html>
<meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS">

<head>
<title>データベースMySQLを使ったカウンタ</title>
</head>

<body>

<?php
$conn_id = mysql_connect("localhost", "root", "a3h7890");
mysql_select_db("test", $conn_id);


$Buf0 = mysql_query("select number from logdata where id='counter'",$conn_id);
$Buf1 = mysql_fetch_array($Buf0, MYSQL_NUM);
//print($Buf1[0]."<br>");

$a_counter = $Buf1[0];
//print($a_counter."<br>");

print( ++$a_counter . "人目のお客様です");

mysql_query("update logdata set number = $a_counter where id = 'counter'", $conn_id);

mysql_close;
?>

</body>
</html>

戻る

配列に入っている内容を利用する方法

読んでもわからなかったこと

PHP
○MySQLからデータを取り出す場合
 mysql_fetch_arry([リンクID],[タイプ] )は、データベースの1行分を配列名arryという配列に格納する。オプションのタイプは、3種類の設定ができる。それらには、MYSQL_ASSOC、MUSQL_NUM、MYSQL_BOTHがある。MYSQL_ASSOCは、添字にレコード名が入る。MYSQL_NUMは、添字に0から始まる数字が入る。MYSQL_BOTHは、ASSOCとNUM両方の添字でデータが格納される。
 配列名arryに格納されたデータをどのようにして利用するか。それが問題だ!
 つぎのデータベースにアクセスした場合をみてみよう。
no a1 a2 a3 a4 a5 name
1 秋の田の かりほの庵の 苫をあらみ わが衣手は 露にぬれつつ 天智天皇
2 春すぎて 夏来にけらし 白妙の 衣ほすてふ 天の香具山 持統天皇
3 あしびきの 山鳥の尾の しだり尾の ながながし夜を ひとりかも寝む 柿本人麻呂

$Buf = mysql_query("select * from issyu , $conn_id);
$table = mysql_fetch_arry($Buf , MYSQL_ASSOC);
print_r($table);
を実行すると(実際にはこの3行だけでは動かない)、
 Array
 (
  [no] => 1
  [a1] => 秋の田の
  [a2] => かりほの庵の
  [a3] => 苫をあらみ
  [a4] => わが衣手は
  [name] => 天智天皇
 )
$table = mysql_fetch_arry($Buf , MYSQL_NUM);の場合は、
 Array
 (
  [0] => 1
  [1] => 秋の田の
  [2] => かりほの庵の
  [3] => 苫をあらみ
  [4] => わが衣手は
  [5] => 天智天皇
 )
$table = mysql_fetch_arry($Buf , MYSQL_BOTH);の場合は、
 Array
 (
  [0] => 1
  [no] => 1
  [1] => 秋の田の
  [a1] => 秋の田の
  [2] => かりほの庵の
  [a2] => かりほの庵の
  [3] => 苫をあらみ
  [a3] => 苫をあらみ
  [4] => わが衣手は
  [a4] => わが衣手は
  [5] => 天智天皇
  [name] => 天智天皇
 )
のように格納されていることが確認できる。
 このデータをプログラムの中で使いたいときは、
  $tukauzo = array[1] ;
とすると、$tukauzo に「秋の田の」が入る。
 それなら、配列array[1]を直接使えばいいのではないか?1行だけ利用するならそれでも大丈夫! 複数行取り込んで利用するときはそれではうまくいかない。なぜか?それは、mysql_fetch_arry()の機能による。後は、考えたり、動作を試してみて、確認しよう。
戻る