丸投げ的なお願いですので満足回答には1000ポイント差し上げます。



Windows2000Server Apache2を構築しています。

PHP MySql において以下のようにユーザーに予算入力させたいのですが、
データベース名をdbyosanとした場合どのように書けばいいでしょうか?
基本的動作は入力、更新、削除です。
一度ユーザーがデータを入力していればデータを表示させるようにしたいです。


ユーザー側の画面イメージ
***************予算入力画面*****************

1日予算【    】千円
2日予算【    】千円
3日予算【    】千円
     ~
29日予算【    】千円
30日予算【    】千円
31日予算【    】千円
*********************************************
■DB更新 DB削除 
*********************************************

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:2007/09/22 13:38:21
  • 終了:2007/09/23 21:59:15

回答(4件)

id:toyoshi No.1

toyoshi回答回数67ベストアンサー獲得回数12007/09/22 18:58:10

ポイント24pt

(ポイント不要)

DBのスキーマから、PHPのコードまでここに書くのはスペース的に不可能です。

またどんなものかもっと具体的に書く必要があります。

まずここは

1、どんなものを作りたいのか

2、どんなデータベース(テーブルが必要なのか)

3、どんなスクリプトが必要なのか

と3つに分けて質問をしなおされることをお勧めします。

ただし3は非常に長くなるので難しいので、さらに細かく質問をしなくてはならないと思います。


とりあえず、テーブルだったら

CREATE TABLE `yosan` (

`id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,

`user_id` INT NOT NULL ,

`yosan` INT NOT NULL ,

`date` DATE NOT NULL ,

`modified` DATETIME NOT NULL ,

`created` DATETIME NOT NULL

) ENGINE = MYISAM CHARACTER SET sjis COLLATE sjis_japanese_ci;

こんなのをベースに考えてみるのも良いかもしれません。

http://dummy/

id:saiden

聞き方をご教授頂きありがとうございます。参考にいたします。

2007/09/23 21:54:03
id:hayashi6 No.2

hayashi6回答回数140ベストアンサー獲得回数12007/09/22 23:56:00

ポイント24pt

どう書くという問題ではなく、phpでソフトをつくらなければならないのです。

http://www.google.com/

id:Mook No.3

Mook回答回数1312ベストアンサー獲得回数3912007/09/23 02:26:26

ポイント1000pt

削除の仕様がわかりませんが、データの全削除であると想定して作成してみました。


また、yosan テーブルが

項目名 データ型
day integer
price integer

であることを想定しています。


<html>
<head>
<?php
// データベース情報
    define( "db_Server", "localhost" );
    define( "db_User", "foo" );
    define( "db_Password", "bar" );
    define( "db_Name", "dbyosan" );
    define( "db_TableName", "yosan" );

// データベース接続
    $conn = mysql_connect( db_Server, db_User, db_Password ) or die("接続エラー");
    mysql_select_db( db_Name );

// 更新ボタンが押された
    if ( isset( $_POST["update"] ) )
    {
        deleteData( $conn );
        updateData( $conn );
    }

// 削除ボタンが押された
    if ( isset(  $_POST["delete"] ) )
    {
        deleteData( $conn );
    }

    $sql = "SELECT * from ".db_TableName.";";
    $res = mysql_query( $sql, $conn );
    while ( $row = mysql_fetch_array( $res, MYSQL_ASSOC ) )
        $priceArray[$row["day"]] = $row["price"];

// 更新処理
function updateData( $conn ) {
    for( $i=1 ; $i<=31 ; $i++ ) {
        if ( strlen( $_POST["yd".$i] ) > 0 ) {
            $sql = "INSERT INTO ".db_TableName." ( day, price ) VALUE (".$i.",". $_POST["yd".$i].");";
            $res = mysql_query( $sql, $conn );
        }
    }
}

// 削除処理:全データクリア
function deleteData( $conn ) {
    $sql = "DELETE from ".db_TableName.";";
    $res = mysql_query( $sql, $conn );
}

// テーブル表示
function yosan_table()
{
    global $priceArray;
    print <<<_EOT
    <table border="1">
    <tr>
        <th>日付</th>
        <th>予算</th>
    </tr>
_EOT;
    for( $i=1 ; $i<=31 ; $i++ ) {
        print "    <tr><td>".$i.'日予算</td><td><input type="text" style="text-align:right" name="yd'.$i.'"';
        if ( isset( $priceArray[$i] ) )
            print ' value="'. $priceArray[$i].'"';
        print ">千円</td></tr>\n";
    }
    print "</table>\n";
}
?>
</head>
<body>
    <form name="yosan" method="POST">
    <?php yosan_table(); ?>
    <input type="submit" name="update" value="更新">
    <input type="submit" name="delete" value="削除">
    </form>
</body>
</html>

MySQL に必要な情報は先頭部分で定義していますので、適宜変更して試してみてください。


不明な点はコメントで対応しますので、何かあればコメントを有効にお願いします。

http://www.atmarkit.co.jp/flinux/rensai/mysql05/mysql05a.html

id:saiden

取り急ぎご連絡です。回答ありがとうございます。全データ削除でOKです。質問の仕方に至らない点ありますが、コメント欄にて質問させていただきます。これから自分なりに検証にはいります。明日以降の質問になるかと思いますが、宜しくおねがい致します。このような質問にありがとうございます。

2007/09/23 21:56:42
id:minkpa No.4

minkpa回答回数4178ベストアンサー獲得回数552007/09/23 08:55:24

ポイント22pt

http://my.formman.com/

こういったサイトを利用してみてはいかがでしょうか。

  • id:Mook
    多くのポイントありがとうございました。

    仕様の説明は難しいですが、画面イメージがあったのは良かったです。
    それさえあれば、動作はともかく見た目は何とかなりますから。

    運用面での説明があれば、もう少し機能的な面で推測できたのですが、今回は必要最低限に絞りました。

    現在は1ヶ月分のデータしか想定していませんが、
     ・長期間のデータを保持し、月単位で切り替えて管理する
     ・削除を一括ではなく、チェックボックスで制御する
     ・多くのユーザで使うのであれば認証機能を追加する
    など、色々な機能が考えられます。

    目的にあわせて、変更ください。
  • id:saiden

    Mookさんからコメント頂きましたところの質問です。
    PHP MySql において以下のようにユーザーに予算入力させたいのですが、
    データベース名をdbyosanとした場合どのように書けばいいでしょうか?
    基本的動作は入力、更新、削除です。
    という質問をさせて頂きました。

    現状PHP、Apacheが動作しています。

    C:\Program Files\Apache Group\Apache2\htdocs
    の中にindex.htmlやtest.phpを保存しています。LANのパソコンで閲覧できる状態です。

    C:\Program Files\Apache Group\Apache2\htdocs\test
    に作成して頂いた予算のHtmlを保存してあります。

    ■データベースとテーブルはMySQL Command Line ClientからSQLを投げました。

    CREATE TABLE `yosan` (
    `id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
    `user_id` INT NOT NULL ,
    `yosan` INT NOT NULL ,
    `date` DATE NOT NULL ,
    `modified` DATETIME NOT NULL ,
    `created` DATETIME NOT NULL
    ) ENGINE = MYISAM CHARACTER SET sjis COLLATE sjis_japanese_ci;
    C:\Program Files\MySQL\MySQL Server 5.0\data\mysqlの中に

    dbyosan.MYI
    dbyosan.MYD
    dbyosan.frm
    という3つのファイルが作成されました。

    しかしhttp://localhost/test/test002.htmlを閲覧すると画面下のような表示がされます。
    ----------------------------------------------
    0 ) { $sql = "INSERT INTO ".db_TableName." ( day, price ) VALUE (".$i.",". $_POST["yd".$i].");"; $res = mysql_query( $sql, $conn ); } } } // 削除処理:全データクリア function deleteData( $conn ) { $sql = "DELETE from ".db_TableName.";"; $res = mysql_query( $sql, $conn ); } // テーブル表示 function yosan_table() { global $priceArray; print <<<_EOT 日付 予算
    _EOT; for( $i=1 ; $i<=31 ; $i++ ) { print
    ----------------------------------------------

    テーブルは作成されているのにDBに接続できていない。と考えるべきでしょうか?

  • id:Mook
    別に立てられた質問に回答いたしましたが、まずファイルの拡張子が間違っていると思われます。

    DB に接続できるかどうかはその次のステップでしょう。
    コードの5~9行の部分は、実際の環境に合わせて書き換えてください。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません