カテゴリー
PHP

meiboへ入力フォームから入力する

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html lang="ja">
<HEAD>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta http-equiv="Content-Style-Type" content="text/css">
<meta name="GENERATOR" content="JustSystems Homepage Builder Version 18.0.14.0 for Windows">
<TITLE>ユーザ情報登録</TITLE>
</HEAD>
<body background="y8b.gif">

 <?php
  require_once ("newpage8.php");
  print $APPTITLE;
  MyTitlePrint("実験開始!meibo入力フォーム 表示!!");
?>

<FORM method="POST" action="MeiboFormInput.php">
<TABLE border="0">
  <TBODY>
    <TR>
      <TD>meiboid</TD>
      <TD><INPUT size="10" type="text" name = "meiboid"></TD>
    </TR>
    <TR>
      <TD>氏名</TD>
      <TD><INPUT size="30" type="text" name="simei"></TD>
    </TR>
    <TR>
      <TD>住所都道府県以下</TD>
      <TD><INPUT size="50" type="text" name="ikajyusyo"></TD>
    </TR>
    <TR>
      <TD>都道府県コード</TD>
      <TD><INPUT size="10" type="text" name="todouhukencode"></TD>
    </TR>
      <TR>
      <TD colspan="2" align="center"><BR>
      <INPUT type="submit" value=" 登録 " name="exereg"> <INPUT type="submit" value="キャンセル" name="cancelreg"></TD>
    </TR>
  </TBODY>
</TABLE>
</FORM>


<p><a href="newpage10.php">書き込みインデックスへ戻る</a></p>
</body></html>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html lang="ja">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta http-equiv="Content-Style-Type" content="text/css">
<meta name="GENERATOR" content="JustSystems Homepage Builder Version 18.0.14.0 for Windows">
<title></title>
</head>
<body background="y8b.gif">

 <?php
  require_once ("newpage8.php");
  print "$APPTITLE";
  MyTitlePrint("実験開始!入力フォーム決定データ 表示します!!");
?>

<?php

  if (isset($_POST['exereg'])) {
    print "登録ボタンが、クリックされました!" . "<BR>";
    print "meiboid → "            . $_POST["meiboid"] . "<BR>";
    print "氏名 → "        . $_POST["simei"] . "<BR>";
    print "以下住所 → "            . $_POST["ikajyusyo"] . "<BR>";
    print "都道府県コード → "        . $_POST["todouhukencode"] . "<BR>";

    $dsn = "mysql:host=".$hostname.";dbname=".$dbname;

    try {
    $dbh = new PDO($dsn, $username, $password);

    // 接続を使用する
    $Meiboid = $_POST["meiboid"];
    $Simei = "'" . $_POST["simei"] . "'";
    $Ikajyusyo = "'" . $_POST["ikajyusyo"] . "'";
    $Todouhukencode = $_POST["todouhukencode"];
    $sql = "INSERT INTO `isamstar2_wp1`.`meibo` (`id`, `namae`, `jyusyo`, `prefcode`) VALUES
                                                ($Meiboid, $Simei, $Ikajyusyo, $Todouhukencode)";

    $stmt= $dbh->query( $sql);

    $sql = 'select id, namae, jyusyo, prefcode from meibo';
    $stmt= $dbh->query( $sql);

    echo "<table>\n";
    echo "\t<tr><th>id</th><th>namae</th><th>jyusyo</th><th>prefcode</th></tr>\n";
    while( $result = $stmt->fetch( PDO::FETCH_ASSOC ) ){
      echo "\t<tr>\n";
      echo "\t\t<td>{$result['id']}</td>\n";
      echo "\t\t<td>{$result['namae']}</td>\n";
      echo "\t\t<td>{$result['jyusyo']}</td>\n";
      echo "\t\t<td>{$result['prefcode']}</td>\n";
      echo "\t</tr>\n";
    }
    echo "</table>\n";

    } catch (PDOException $e) {
        echo 'Connection failed: ' . $e->getMessage();
    }


    //INSERT INTO `isamstar2_wp1`.`meibo` (`id`, `namae`, `jyusyo`, `prefcode`) VALUES
    //   ($_POST["meiboid"], $_POST["simei"], $_POST["ikajyusyo"], $_POST["todouhukencode"]);
    //INSERT INTO `isamstar2_wp1`.`meibo` (`id`, `namae`, `jyusyo`, `prefcode`) VALUES (5, '阿弖流為', '奥州市', 3);

    print "$APPFOOTER"; 
  }
  elseif (isset($_POST['cancelreg'])) {
    print "キャンセルボタンがクリックされました!";
  }

?>
<p><a href="newpage10.php">書き込みインデックスへ戻る</a></p>

</body>
</html>

上の部分が、実際の入力をする部分です。下の部分が決定したデータを表示して、meiboへ書き込む部分です。

入力を表示する部分はありますが、テーブルへ書き込むルーティンがありません。ここでトラブルしてます。リストアップprintが出来ているので、簡単かと思ってましたが、insert intoが出来ません。エラーにはなりませんが、phpMyAdminでも載ってませんし、何より直後のリストアップに出てきません。なので中途半端な状態になっています。

 上のコードは、解決しています。何が問題だったかと言うと、文字列のデータ、名前と住所の部分をシングルクオートで括っていなかったのが問題でした。

カテゴリー
PHP

meiboからprefを参照して、printする。left join

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta http-equiv="Content-Style-Type" content="text/css">
<meta name="GENERATOR" content="JustSystems Homepage Builder Version 18.0.14.0 for Windows">
<title></title>

<style>
<!--
    table,th,td{
        border: 1px solid #000;
    }
-->
</style>

</head>
<body background="y8b.gif">
<?php
  require_once ("newpage8.php");
//自身の環境に合わせて書き換える
//接続に必要な$hostname、$dbname、$username、$passwordはnewpage8.phpへ移動
//newpage8.phpはサイト転送出来ないので、転送ツールでアップする

  print $APPTITLE;

  MyTitlePrint("実験開始!データベースのテーブル表示テスト");

//------
  $dsn = "mysql:host=".$hostname.";dbname=".$dbname;

  try {
  $dbh = new PDO($dsn, $username, $password);

   // 接続を使用する

    $sql = 'select isamstar2_wp1.meibo.id, namae, jyusyo, prefecture from isamstar2_wp1.meibo left join pref on prefcode = prefid';
    $stmt= $dbh->query( $sql);

    echo "<table>\n";
    echo "\t<tr><th>id</th><th>namae</th><th>jyusyo</th><th>prefecture</th></tr>\n";
    while( $result = $stmt->fetch( PDO::FETCH_ASSOC ) ){
      echo "\t<tr>\n";
      echo "\t\t<td>{$result['id']}</td>\n";
      echo "\t\t<td>{$result['namae']}</td>\n";
      echo "\t\t<td>{$result['jyusyo']}</td>\n";
      echo "\t\t<td>{$result['prefecture']}</td>\n";
      echo "\t</tr>\n";
    }
    echo "</table>\n";

} catch (PDOException $e) {
echo 'Connection failed: ' . $e->getMessage();
}

  print "$APPFOOTER";

?>

<p><a href="newpage10.php">書き込みインデックスへ戻る</a></p>
</body>
</html>

データベースの指定がないとのエラーが出ました。phpMyAdminでは出なかったと思いますが、そのコードをコピペしたらエラーでした。データベースの指定は一ヵ所で良いかもしれません。良く分からないコードでもphpMyAdminで実行してから、phbに書けるので、一応は便利と思います。エラーになることもありますが。

カテゴリー
PHP

phpMyAdminでデータを編集できました。

 上のテーブルはmeiboですし、下はprefです。上の図では、phpMySQLで編集等がどうやったらいいか分からない状態です。下の図では出来るようになった後の図です。やったことはただ一つidにプライマリーキーを指定しました。

 あと参考にしている評判の良くない「PHP5.0とMySQL5.0で構築する最速Webシステム」では、自分のマシンで疑似的にアパッチを作っているので、そのままのコードでは危ないようです。その内容もかなり古いので注意が必要のようです。自分的には、もう一度挑戦してみましたが、アパッチのDLが上手く行かないようですし、付録のCDでアパッチをインストール出来ても、モニターは正常そうですが、スタートとストップがきかないようですし、一応は走っているようにモニターされます。が、http://localhost/で上手く表示になりません。原因は不明。

参考にしている本ではコマンドラインSQLを使用していますが、phpMyAdminでは、雰囲気はかなり違いますが、ログインした状態と思っていいようです。

カテゴリー
PHP

テーブルmeiboのデータを修正したい

例えばidが2のレコードを修正する手順を知りたいのですが、今はテーブルの内容を削除してから、再入力しました。参考にしたサイトのリンクを張っておきます。

カテゴリー
PHP

テーブルprefのリストprintする

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html lang="ja">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta http-equiv="Content-Style-Type" content="text/css">
<meta name="GENERATOR" content="JustSystems Homepage Builder Version 18.0.14.0 for Windows">
<title></title>

<style>
<!--
    table,th,td{
        border: 1px solid #000;
    }
-->
</style>

</head>
<body background="y8b.gif">
<?php
  require_once ("newpage8.php");
//自身の環境に合わせて書き換える
//接続に必要な$hostname、$dbname、$username、$passwordはnewpage8.phpへ移動
//newpage8.phpはサイト転送出来ないので、転送ツールでアップする

  print $APPTITLE;

  MyTitlePrint("実験開始!データベースのテーブルpref表示テスト");

//------
  $dsn = "mysql:host=".$hostname.";dbname=".$dbname;

  try {
  $dbh = new PDO($dsn, $username, $password);

   // 接続を使用する

    $sql = 'select prefid, zone, prefecture, population, area from pref';
    $stmt= $dbh->query( $sql);

    echo "<table>\n";
    echo "\t<tr><th>prefid</th><th>zone</th><th>prefecture</th><th>population</th><th>area</th></tr>\n";
    while( $result = $stmt->fetch( PDO::FETCH_ASSOC ) ){
      echo "\t<tr>\n";
      echo "\t\t<td>{$result['prefid']}</td>\n";
      echo "\t\t<td>{$result['zone']}</td>\n";
      echo "\t\t<td>{$result['prefecture']}</td>\n";
      echo "\t\t<td>{$result['population']}</td>\n";
      echo "\t\t<td>{$result['area']}</td>\n";
      echo "\t</tr>\n";
    }
    echo "</table>\n";

} catch (PDOException $e) {
echo 'Connection failed: ' . $e->getMessage();
}

  print "$APPFOOTER";

?>

<p><a href="newpage10.php">書き込みインデックスへ戻る</a></p>
</body>
</html>

テーブルmeiboと同じルーティンです。でも、もしテーブルが10個あったらこれを10個作るわけですか?共通に使えるコードは書けないのでしょうか?

カテゴリー
PHP

テーブルprefをデータベースに追加する

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html lang="ja">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta http-equiv="Content-Style-Type" content="text/css">
<meta name="GENERATOR" content="JustSystems Homepage Builder Version 18.0.14.0 for Windows">
<title></title>
</head>
<body background="y8b.gif">

 <?php
  require_once ("newpage8.php");
//自身の環境に合わせて書き換える
//接続に必要な$hostname、$dbname、$username、$passwordはnewpage8.phpへ移動
//newpage8.phpはサイト転送出来ないので、転送ツールでアップする

  print $APPTITLE;

  MyTitlePrint("実験開始!データベース接続とテーブル作成テスト");

//------//
$dsn = "mysql:host=".$hostname.";dbname=".$dbname;

try {
$dbh = new PDO($dsn, $username, $password);

   // 接続を使用する
    $sql = 'CREATE TABLE `isamstar2_wp1`.`pref` ( `prefid` INT(5) NOT NULL , `zone` TEXT NOT NULL , 
                        `prefecture` TEXT NOT NULL , `population` INT NOT NULL , `area` INT NOT NULL ) ENGINE = InnoDB';
    $stmt= $dbh->query( $sql);
    $sql = 'show fields from pref';
    $stmt= $dbh->query( $sql);

} catch (PDOException $e) {
echo 'Connection failed: ' . $e->getMessage();
}

  print "$APPFOOTER";

?>

<p><a href="newpage10.php">書き込みインデックスへ戻る</a></p>
</body>
</html>

一度テーブルを作成してしまえば、二度する必要はないのですが、そうなってません。どうなるんでしょうか?データも何件か入れてます。

追記)再度、テーブルを作るこのルーティンを実行しても、入力済みにデータには影響もないようです。テーブルも再び作られることは無いようです。

カテゴリー
PHP

条件によるテーブルのデータ削除

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html lang="ja">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta http-equiv="Content-Style-Type" content="text/css">
<meta name="GENERATOR" content="JustSystems Homepage Builder Version 18.0.14.0 for Windows">
<title></title>

<style>
<!--
    table,th,td{
        border: 1px solid #000;
    }
-->
</style>

</head>
<body background="y8b.gif">
<?php
  require_once ("newpage8.php");
//自身の環境に合わせて書き換える
//接続に必要な$hostname、$dbname、$username、$passwordはnewpage8.phpへ移動
//newpage8.phpはサイト転送出来ないので、転送ツールでアップする

  print $APPTITLE;

  MyTitlePrint("実験開始!データベースのテーブルデータ削除テスト");

//------
  $dsn = "mysql:host=".$hostname.";dbname=".$dbname;

  try {
  $dbh = new PDO($dsn, $username, $password);

   // 接続を使用する
    $sql = 'delete from meibo where id > 00004';
    $stmt= $dbh->query( $sql);

    $sql = 'select id, namae, jyusyo from meibo';
    $stmt= $dbh->query( $sql);

    echo "<table>\n";
    echo "\t<tr><th>id</th><th>namae</th><th>jyusyo</th></tr>\n";
    while( $result = $stmt->fetch( PDO::FETCH_ASSOC ) ){
      echo "\t<tr>\n";
      echo "\t\t<td>{$result['id']}</td>\n";
      echo "\t\t<td>{$result['namae']}</td>\n";
      echo "\t\t<td>{$result['jyusyo']}</td>\n";
      echo "\t</tr>\n";
    }
    echo "</table>\n";

} catch (PDOException $e) {
echo 'Connection failed: ' . $e->getMessage();
}

  print "$APPFOOTER";

?>

<p><a href="newpage10.php">書き込みインデックスへ戻る</a></p>
</body>
</html>

同じデータを何件も追加できるので、条件付きでデータを削除して見ました。

カテゴリー
PHP

テーブルにデータを追加して見ました。

<meta http-equiv="Content-Style-Type" content="text/css">
<meta name="GENERATOR" content="JustSystems Homepage Builder Version 18.0.14.0 for Windows">
<title></title>

<style>
<!--
    table,th,td{
        border: 1px solid #000;
    }
-->
</style>

</head>
<body background="y8b.gif">
<?php
  require_once ("newpage8.php");
//自身の環境に合わせて書き換える
//接続に必要な$hostname、$dbname、$username、$passwordはnewpage8.phpへ移動
//newpage8.phpはサイト転送出来ないので、転送ツールでアップする

  print $APPTITLE;

  MyTitlePrint("実験開始!データベースのテーブルデータ追加テスト");

//------
  $dsn = "mysql:host=".$hostname.";dbname=".$dbname;

  try {
  $dbh = new PDO($dsn, $username, $password);

   // 接続を使用する
    $sql = 'insert into meibo values (00005,"山田 太郎", "岩手県")';
    $stmt= $dbh->query( $sql);

    $sql = 'select id, namae, jyusyo from meibo';
    $stmt= $dbh->query( $sql);

    echo "<table>\n";
    echo "\t<tr><th>id</th><th>namae</th><th>jyusyo</th></tr>\n";
    while( $result = $stmt->fetch( PDO::FETCH_ASSOC ) ){
      echo "\t<tr>\n";
      echo "\t\t<td>{$result['id']}</td>\n";
      echo "\t\t<td>{$result['namae']}</td>\n";
      echo "\t\t<td>{$result['jyusyo']}</td>\n";
      echo "\t</tr>\n";
    }
    echo "</table>\n";

} catch (PDOException $e) {
echo 'Connection failed: ' . $e->getMessage();
}

  print "$APPFOOTER";

?>

<p><a href="newpage10.php">書き込みインデックスへ戻る</a></p>
</body>
</html>

00001から00003まではphpMySQLで追加しました。00004と00005は上のスクリプトで追加しましたが、同じような行が二つできましたので、00005を削除は次回の課題。00005を二行追加できるか?出来ないかは、今は不明です。エラーになるかもしれません。”(-“”-)”

その後やって見たら、00005の行が何行でも出来ました。

カテゴリー
PHP

枠付きでテーブルを印刷する

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html lang="ja">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta http-equiv="Content-Style-Type" content="text/css">
<meta name="GENERATOR" content="JustSystems Homepage Builder Version 18.0.14.0 for Windows">
<title></title>

<style>
    table,th,td {
        border: 1px solid #000;
    }
</style>

</head>
<body background="y8b.gif">
<?php
  require_once ("newpage8.php");
//自身の環境に合わせて書き換える
//接続に必要な$hostname、$dbname、$username、$passwordはnewpage8.phpへ移動
//newpage8.phpはサイト転送出来ないので、転送ツールでアップする

  print $APPTITLE;

  MyTitlePrint("実験開始!データベースのテーブル表示テスト");

//------
  $dsn = "mysql:host=".$hostname.";dbname=".$dbname;

  try {
  $dbh = new PDO($dsn, $username, $password);

   // 接続を使用する
    $sql = 'select id, namae, jyusyo from meibo';
    $stmt= $dbh->query( $sql);

    echo "<table>\n";
    echo "\t<tr><th>id</th><th>namae</th><th>jyusyo</th></tr>\n";
    while( $result = $stmt->fetch( PDO::FETCH_ASSOC ) ){
      echo "\t<tr>\n";
      echo "\t\t<td>{$result['id']}</td>\n";
      echo "\t\t<td>{$result['namae']}</td>\n";
      echo "\t\t<td>{$result['jyusyo']}</td>\n";
      echo "\t</tr>\n";
    }
    echo "</table>\n";

} catch (PDOException $e) {
echo 'Connection failed: ' . $e->getMessage();
}

  print "$APPFOOTER";

?>

<p><a href="newpage10.php">書き込みインデックスへ戻る</a></p>
</body>
</html>

styleの部分だけで、枠が付きました。

カテゴリー
PHP

データベースのテーブルをprintする

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html lang="ja">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta http-equiv="Content-Style-Type" content="text/css">
<meta name="GENERATOR" content="JustSystems Homepage Builder Version 18.0.14.0 for Windows">
<title></title>
</head>
<body background="y8b.gif">

 <?php
  require_once ("newpage8.php");
//自身の環境に合わせて書き換える
//接続に必要な$hostname、$dbname、$username、$passwordはnewpage8.phpへ移動
//newpage8.phpはサイト転送出来ないので、転送ツールでアップする

  print $APPTITLE;

  MyTitlePrint("実験開始!データベースのテーブル表示テスト");

//------
  $dsn = "mysql:host=".$hostname.";dbname=".$dbname;

  try {
  $dbh = new PDO($dsn, $username, $password);

   // 接続を使用する
    $sql = 'select id, namae, jyusyo from meibo';
    $stmt= $dbh->query( $sql);

    echo "<table>\n";
    echo "\t<tr><th>id</th><th>namae</th><th>jyusyo</th></tr>\n";
    while( $result = $stmt->fetch( PDO::FETCH_ASSOC ) ){
      echo "\t<tr>\n";
      echo "\t\t<td>{$result['id']}</td>\n";
      echo "\t\t<td>{$result['namae']}</td>\n";
      echo "\t\t<td>{$result['jyusyo']}</td>\n";
      echo "\t</tr>\n";
    }
    echo "</table>\n";

} catch (PDOException $e) {
echo 'Connection failed: ' . $e->getMessage();
}

  print "$APPFOOTER";

?>

<p><a href="newpage10.php">書き込みインデックスへ戻る</a></p>
</body>
</html>

 ネットで見つけたコードを変更しました。ほとんど同じコードでしたが。枠の無い表でしたが、枠を付けるのはどうするんでしょうか?

inserted by FC2 system