ゆめかき進捗&課題点

恥をしのんで。


今んとこのキャプチャ。

f:id:kimihito:20111004223616p:image:w800

実践マスターPHP+MySQL―PHP4/PHP5対応

実践マスターPHP+MySQL―PHP4/PHP5対応


ここにあった、「友達リスト」のサンプルをパクって参考にして書いてます。

【ソース】

<?php
/*
 * MySQL追加、更新、削除
 */
require_once ("mysql2.php");
/*
 * MySQLクラスファイルの読み込み
 */
//変数初期化
$error = "";
$new_no = "";
$new_name = "";
$new_yume = "";


//MySQLクラスインスタンスの作成
$mysql = new MySQL;

//POSTされたとき
if ($_SERVER["REQUEST_METHOD"] == "POST") {
    //新規追加
    if (isset($_POST["submit_add"])) {
        //POSTされたデータを取得
        $new_no = htmlspecialchars($_POST["new_no"], ENT_QUOTES);
        $new_name = htmlspecialchars($_POST["new_name"], ENT_QUOTES);
        $new_yume = htmlspecialchars($_POST["new_yume"], ENT_QUOTES);

        //全角文字を半角に変換
        $new_no = mb_convert_kana($new_no, "as");
        $new_yume = mb_convert_kana($new_yume, "as");

        //チェック
        //番号
        if (!preg_match("/^[0-9]*$/", $new_no)) {
            $error = "新規番号{$new_no}に誤りがあります";
        }
        //最大番号を取得
        $mysql->query("SELECT MAX(no) AS maxno from yumekaki");
        $row = $mysql->fetch();
        if ($new_no <= $row["maxno"]) {
            $error = "新規番号{$new_no}は最大番号よりも大きくしてください";
        }

        //SQL文作成
        if ($error == "") {
            $sql = "INSERT INTO yumekaki VALUES($new_no,'$new_name','$new_yume')";
        }
    }

    //変更
    if (isset($_POST["submit_upd"])) {
        $no = key($_POST[submit_upd]); //押したボタン番号を取得
        /*
         * POSTされたデータを取得
         */
        $name = htmlspecialchars($_POST["name"][$no], ENT_QUOTES); //名前
        $yume = htmlspecialchars($_POST["yume"][$no], ENT_QUOTES); //夢
        //全角文字を半角に変換
        $yume = mb_convert_kana($yume, "as");


        //SQL文作成
        if ($error == "") {
            $sql = "UPDATE yumekaki SET name='$name', yume='$yume', WHERE no=$no";
        }
    }
    //削除
    if (isset($_POST["submit_del"])) {
        $no = key($_POST[submit_del]);
        $sql = "DELETE FROM yumekaki WHERE no=$no";
    }
    /*
     * SQL文をMySQLへ渡す
     */
    if ($error == "") {
        $mysql->query($sql);
        $new_no = "";
        $new_name = "";
        $new_yume = "";
    }
}
?>

<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>ゆめかきしましょ</title>
    </head>
    <body>
        <?= $error ?>
        <h3>* * ゆめかき リスト * *</h3>
        <form action ="<?= $_SERVER['PHP_SELF'] ?>"  method="POST">
            <?php
            //テーブルからデータを読み込む
            $mysql->query("SELECT * FROM yumekaki ORDER BY no");
            while ($row = $mysql->fetch()) {
                $no = $row["no"];
                $name = $row["name"];
                $yume = $row["yume"];
                echo <<<EOF
           $no: 
            <input type="text" name="name[$no]" value="$name" size="10">
            <input type="text" name="yume[$no]" value="$yume" >
            <input type="submit" name="submit_upd[$no]" value="変更">
            <input type="submit" name="submit_del[$no]" value="削除">
            <br>
EOF;
            }
            //ここまでwhileループ
            ?>
            <br>
            yumekakiリストに新規追加 (twitterID,ゆめ)<br>
            <input type="text" name="new_no" value="<?= $new_no ?>" size="5">
            <input type="text" name="new_name" value="<?= $new_name ?>" size="10">
            <input type="text" name="new_yume" value="<?= $new_yume ?>" size="10">
            <input type="submit" name="submit_add" value="追加">
            </body>
            </html>

【課題点】

  • 変更ボタンが効かない…。

「変更」を押すと…
f:id:kimihito:20111004223617p:image:w800
まぁいらない機能ではあるんだけど、気になる。

  • 番号を入力しないといけない(表示させたくない。)
  • twitterIDを入力すると、twitterのURLで出てくるように。

まずはこの辺かなと思います。

あーまだまだだなー。