変数を組み入れたい - MySQLのデータベースのテーブルに毎日1つのカラムを追加する方法

このQ&Aのポイント
  • MySQLのデータベースのテーブルに毎日1つのカラムを追加する方法について解説します。
  • PHPのdate関数を使用して当日の日付を変数として取得し、ALTER TABLE文を使ってデータベースのテーブルにカラムを追記します。
  • この方法を使うことで、クーロンで1日に1回実行すると、データベースの日付カラムに当日の日付が追加されるようになります。
回答を見る
  • ベストアンサー

変数を組み入れたい

MySQLのデータベースのテーブルに毎日1つのカラム(当日の名前のカラム)下記のようなPHPを作りました。 このPHPをクーロンで1日に1回踏むことにより、データベースの日付カラムを追記していくことを考えています。 下記のPHPだと、 ALTER TABLE `www_dairy` ADD `12-1` INT NOT NULL DEFAULT 0; という形で「12月1日」の固定値が追記されることになっています。 この固定値を「当日の変数としたい」というのが希望です。 print date("n-j"); で当日の日にちの変数は取得出来ます。 $today = date("n-j"); として変数を設定したまでは良いのですが、これを ALTER TABLE `www_dairy` ADD `12-1` INT NOT NULL DEFAULT 0; の12月1日の欄に変数として与える方法がわかりません。 ご教授いただきたくお願いいたします。 <?php $link = mysql_connect('localhost', 'root', 'password'); if (!$link) { die('接続失敗です。'.mysql_error()); } print('<p>接続に成功しました。</p>'); print date("n-j"); $db_selected = mysql_select_db('db_name', $link); if (!$db_selected){ die('データベース選択失敗です。'.mysql_error()); } print('<p>データベースを選択しました。</p>'); mysql_set_charset('utf8'); $today = date("n-j"); print('<p>データを追加します。</p>'); $sql = " ALTER TABLE `www_dairy` ADD `12-1` INT NOT NULL DEFAULT 0; "; $result_flag = mysql_query($sql); if (!$result_flag) { die('ADDクエリーが失敗しました1。'.mysql_error()); } $close_flag = mysql_close($link); if ($close_flag){ print('<p>切断に成功しました。</p>'); } ?>

  • PHP
  • 回答数5
  • ありがとう数5

質問者が選んだベストアンサー

  • ベストアンサー
  • sora1515
  • ベストアンサー率58% (54/92)
回答No.2

$sql = "ALTER TABLE `www_dairy` ADD `12-1` INT NOT NULL DEFAULT 0;"; ↓ $sql = "ALTER TABLE `www_dairy` ADD `".$today."` INT NOT NULL DEFAULT 0;"; これでどうでしょう。 というかhitomuraさんの言う通りこのめったにない仕様をどうにかした方がいいと思われます。

tajix14
質問者

お礼

有難うございます。 ご教授頂きました仕様で完成致しました。 本当にありがとうございました。 結局は、ご指摘頂きましたように、カラムを追記する方法は非推奨の方法のため、行を追記する方法に変更したいと考えております。 沢山の方にご指導頂き、気持ち的にはすべてをベストアンサーとしたいところです。 1人選択ということになりますので、今回のベースの質問である「変数」の質問の正答を頂きましたsora1515様をベストアンサーとさせていただきたいと思います。 有難うございました。

tajix14
質問者

補足

有難うございます。 ご教授頂きました仕様で完成致しました。 本当にありがとうございました。 >このめったにない仕様をどうにかした方がいいと思われます。 素人なもので、ついつい思いつくままに作っています。お恥ずかしい限りです。 もし、よろしければ、下記のような状況の時に「私が考えた方法以外」の方法があれば、ヒントだけでも頂けましたら助かります。ソースは不要です。 「こういう場合は、こうしてるんじゃないか」というレベルで構いません。 【今回のニーズ】 ユーザーが10万人おり、ゲームの1クールが120日あります。 この120日間、毎日の順位を随時記録することになります。 120カラムX10万行だと負担になると思い、過去1週間分だけ残し、8日前より以前の順位は削除していくことを考えています。 (テーブルの大きさは7日分を超えない範囲で過去1週間の順位を表示する仕様とする) うまい方法が思いつかず、 ALTER TABLE `www_dairy` ADD `2013-11-30` INT NOT NULL DEFAULT 0 ALTER TABLE `www_dairy` DROP `2013-11-22 のような形で、記載していこうと考えていました。 このようなニーズは多いと思いますが、通常はどのように作るものなのかヒントでもありましたらご教授頂けますと幸いです。

その他の回答 (4)

noname#244856
noname#244856
回答No.5

データベース設計の問題点に関しては他の人から既にたくさん指摘があるので割愛します。 1. 非推奨のMysql関数を使うのはやめてPDOクラスで書きましょう。 http://qiita.com/mpyw/items/b00b72c5c95aac573b71 2. Mysql関数を使う場合でもPDOクラスを使う場合でもいずれにせよ、データベースと接続するコードをグローバル空間にべた書きするコーディングは、将来的にいろいろ機能を追加したりする場合はやめておいた方が無難でしょう。典型的な「スパゲティプログラム」の要因になります。最低限、専用の関数を作る、理想は専用のクラスを作ること。 https://github.com/Certainist/sns_php

tajix14
質問者

お礼

1 PDOクラスのアドバイス有難うございました。この部分は殆ど理解していなかったためご指摘頂きましたページを参照に勉強させて頂きます。 2 また、このソースはテストのため、データベースと接続するコードをべた書きしておりますが、通常のユーザーが使用するページは、ドキュメントルート外にログイン用のクラスを作っており、データベース接続はそこを通しております。(ドキュメントルート内にべた書きはしておりません)。ご指導有難うございます。 3 https://github.com/Certainist/sns_php 拝見させて頂きました。 To_aru_User様が作成されたSNS用クラスなのですね。 まさに、ここに記載されている「フレームワークを使わずにフレームワークっぽいことをする。」が理想でした! 当初フレームワークで開発していたのですが、cakaPHPは勿論のこと、最速と呼ばれるcodeIgniter でもフレームワークの遅さは否めず、結局、Dreamweverの機能を使ってSNSを自作致しました。 Dreamweverの機能で作ってもCodeIgnitorより圧倒的に早いですが、 https://github.com/Certainist/sns_php 上記であれば、さらにソースが半分以下になっているようです。 今からでも乗り換えたいくらいです。(ページが膨大なため今回は不可能かも) 次回、利用させて頂きます。ご紹介有難うございました。

  • kmee
  • ベストアンサー率55% (1857/3366)
回答No.4

ユーザーID, 日付,得点 A, 12-1,100 A, 12-2,120 A, 12-3,130 A, 12-4,140 みたいなテーブルを作って、出力時に工夫する とか。 この手法だと、「期間が120日→150日になった」とか「保存期間を14日にした」とかの仕様変更にも柔軟に対応できます。 また、その日の得点で残すことで 「アクセスのなかったユーザーの分は行が無い→データ量の節約」 「0にリセットする必要が無い→cron不要」 「週間順位、月間順位等を記録することなく計算で求められる」 という利点もあります。 私には思い付きませんが、他の方法もあるでしょう。 どうしても1行にこだわりたい、というのなら、 > 過去1週間分だけ残し、8日前より以前の順位は削除 ということなら ユーザーID, 月曜、火曜、水曜、木曜、金曜、土曜、日曜 A,100,110,120,130,140,150,160,170 みたいにするとか ただ、上の方式を越えるメリットがあるとは思えません。 > 120カラムX10万行だと負担になる どの程度確認したのでしょうか? 大きなデータを扱うために特化しているのがデータベースです。 大した負担にならない気がします。 良い実装ではありませんが、少なくとも、「毎日列が変更される」のよりは、遥かにましな実装です。 データベースとExcelとを混同しないことです。 PHP、MySQLよりも先に、リレーショナルデータベースについて書かれた本を読んではいかがでしょうか? 業務で納期まで時間無い、というのなら、データベースに詳しい技術者にヘルプを頼みましょう。 データ構造がいいと、後のプログラミングも楽になります。

tajix14
質問者

お礼

ユーザーID, 日付,得点 A, 12-1,100 A, 12-2,120 A, 12-3,130 A, 12-4,140 みたいなテーブルを作って、出力時に工夫する とか。 有難うございます。 確かにこの方法が確実にスマートです。 この方法で作りなおしてみます。 ご指導有難うございました。

  • notnot
  • ベストアンサー率47% (4848/10262)
回答No.3

>このようなニーズは多いと思いますが、通常はどのように作るものなのか 普通は、ユーザIDと日付と順位の3カラムを持ったテーブルを作ります。 10万人x7日⇒70万行。 データベース入門のような本を読むといいかと思います。 あなたの設計したようなテーブルをこういうテーブルに変更するのを第一正規化と言います。 これくらいのレベルだとウェブ上の情報だけでも十分かも。

tajix14
質問者

お礼

普通は、ユーザIDと日付と順位の3カラムを持ったテーブルを作ります。 10万人x7日⇒70万行。 有難うございます。 確かにこのやり方の方がスマートですね。 1行にこだわり過ぎていました。 この方法で作りなおしてみます。 有難うございました。

  • hitomura
  • ベストアンサー率48% (325/664)
回答No.1

……えーと、すみません。 あなたがやろうとしていることはよくわかります。 ですが、なぜ「1日に1回」「データベースの日付カラムを追記していく」ようなことをする羽目になっているのでしょうか? データベースの列を追加する操作はそんなに頻繁に行うものではありません。 年に1度でも多い部類に入ります。

tajix14
質問者

お礼

データベースの列を追加する操作はそんなに頻繁に行うものではありません。というご指導に端を発し 最終的には 行追加の方法をとることになりました。 ご指摘頂いたことで方向性が決まりました。有難うございました。

tajix14
質問者

補足

有難うございます。 ユーザーが10万人おり、ゲームの1クールが120日あります。 この120日間、毎日の順位を随時記録することになります。 120カラムX10万行だと負担になると思い、過去1週間分だけ残し、8日前より以前の順位は削除していくことを考えています。 (テーブルの大きさは7日分を超えない範囲で過去1週間の順位を表示する仕様とする) うまい方法が思いつかず、 ALTER TABLE `www_dairy` ADD `2013-11-30` INT NOT NULL DEFAULT 0 ALTER TABLE `www_dairy` DROP `2013-11-22 のような形で、記載していこうと考えていました。 このようなニーズは多いと思いますが、通常はどのように作るものなのかヒントでもありましたらご教授頂けますと幸いです。

関連するQ&A

  • PHPでMySQLへの接続

    お世話になります。 phpを用いてMySQLへ接続したのですが、データが空で戻ってきました。lowは件数表示されましたし、行数もその分返ってきています。何か原因は考えられるでしょうか? <html> <head> <title>PHP TEST</title> </head> <body> <?php $link = mysql_connect('localhost', 'XXXX', 'XXXX'); if (!$link) { die('接続失敗です。'.mysql_error()); } print('<p>接続に成功しました。</p>'); $db_selected = mysql_select_db('XXXX', $link); if (!$db_selected){ die('データベース選択失敗です。'.mysql_error()); } print('<p>uriageデータベースを選択しました。</p>'); //mysql_set_charset('utf-8'); $result = mysql_query('SELECT * FROM sample'); if (!$result) { die('クエリーが失敗しました。'.mysql_error()); } while ($row = mysql_fetch_assoc($result)) { print('<p>'); print('id='.$row['str']); print(',name='.$row['etc']); print('</p>'); } $close_flag = mysql_close($link); if ($close_flag){ print('<p>切断に成功しました。</p>'); } ?> </body> </html>

    • ベストアンサー
    • PHP
  • チェックボックスの値のデータベースへの挿入方法

    すみませんが、どなたか教えていただけないでしょうか。 ブラウザ上に2つチェックボックスがあり、チェックしたら1、チェックしなかったら0(または空白)をMySQLのデータベースのテーブルに挿入したいと思っています。 これを最初のブラウザのページをhtml、チェック後にそれを処理してデータベースとの処理をするのをphpで書いています。 また、データベースは下記のように作成し、testtbテーブルはt1, t2という名の2つのcolumnで出来ています。 ・MySQL データベース名:testdb ・MySQL テーブル名:testtb 下記のようにプログラムを書いたところ、無事挿入までは出来たのですが、MySQLでテーブルの中身を確認したところ毎回2つ分rowに値が挿入されていたり、2つ目のチェックボックスがチェックされているのにも関わらずt1に値が入ってしまったりしています...。 期待している動作は、下記のようになります。 ・チェックボックス1だけにチェックが入った場合  >t1に1が入り、t2は0(または空欄)が入る ・チェックボックス2だけにチェックが入った場合  >t2に1が入り、t1は0(または空欄)が入る ・チェックボックス1と2の両方にチェックが入った場合  >t1とt2両方に1が入る ・チェックボックス1と2の両方ともチェックが入らなかった場合  >t1とt2両方とも0(または空欄)が入る チェックボックスの2次元配列(?)を理解出来ていないのが一因かと思われるのですが、どう書けば良いか教えていただけませんでしょうか。 宜しくお願いします。 --------------------- <!DOCTYPE html> <html> <head> <title>test</title> </head> <body> <meta http-equiv=Content-Type content="text/html; charset=UTF-8"> <form method = "POST" action = "test.php"> A&emsp;&emsp; <input type="checkbox" name="t[]" value="1"><br> B&emsp;&emsp; <input type="checkbox" name="t[]" value="1" checked><br> <input type = "submit" name = "btn1" value = "send"> </form> </body> </html> ----------ここまでがhtml ----------ここからがphp <!DOCTYPE html> <html> <head> <title>test</title> </head> <body> <meta http-equiv=Content-Type content="text/html; charset=UTF-8"> <?php $idata1 = $_POST["t"]; print $idata1; $link = mysql_connect('localhost', 'root', 'パスワード'); if (!$link){ die('接続失敗です。'.mysql_error()); } print('<p>接続に成功しました。</p>'); $db_selected = mysql_select_db('testdb', $link); if (!$db_selected){ die('データベース選択失敗です。'.mysql_error()); } print('<o>testdbデータベースを選択しました。</p>'); mysql_set_charset('utf8'); $result = mysql_query('SELECT t1, t2 FROM testtb'); if (!$result){ die('SELECTクエリーが失敗しました。'.mysql_error()); } print('<p>テーブル選択成功</p>'); while ($row = mysql_fetch_assoc($result)){ print('<p>'); print('t[]='.$row['t[]']); print('</p>'); } print('<p>データを追加します。</p>'); $sql = 'INSERT INTO testtb (t1, t2) VALUES ("'.$idata1.'")'; $result_flag = mysql_query($sql); if (!$result_flag){ die('INSERTクエリーが失敗しました。'.mysql_error()); } print('<p>追加後のデータを取得します。</p>'); $result = mysql_query('SELECT * FROM testtb'); if (!$result) { die('SELECTクエリーが失敗しました。'.mysql_error()); } while ($row = mysql_fetch_assoc($result)){ print('<p>'); print('t[]='.$row['t[]']); print('</p>'); } $close_flag = mysql_close($link); if ($close_flag) { print('<p>切断に成功しました。</p>'); } ?> </body> </html>

    • 締切済み
    • PHP
  • PHPの変数をhtmlで出力する

    ど初心者でごめんなさい。 phpの変数をhtmlで表示する場合 <?= $変数名 ?>と教わったのですが、下記のプログラムをじっこうすると <?php $url = "localhost"; $user = "root"; $pass = ""; $db = "SampleDB050"; // MySQLへ接続する $link = mysql_connect($url,$user,$pass) or die("MySQLへの接続に失敗しました。"); // データベースを選択する $sdb = mysql_select_db($db,$link) or die("データベースの選択に失敗しました。"); // クエリを送信する $sql = "SELECT * FROM T01Prefecture"; $result = mysql_query($sql, $link) or die("クエリの送信に失敗しました。<br />SQL:".$sql); //結果セットの行数を取得する $rows = mysql_num_rows($result); //結果保持用メモリを開放する mysql_free_result($result); // MySQLへの接続を閉じる mysql_close($link) or die("MySQL切断に失敗しました。"); ?> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=SHIFT-JIS"> <title>全件表示</title> </head> <body> 接続ID:<?= $link ?><br /> 選択の成否:<?= $sdb ?><br /> 結果ID:<?= $result ?><br /> 行数:<?= $rows ?><br /> </body> </html> 表示結果は以下のようになります。↓ 接続ID: 選択の成否: 結果ID: 行数: 変数が表示されないのは、なんででしょうか・・・?

    • ベストアンサー
    • PHP
  • mysql_select_db()関数に関して・・・。MySQLでテーブルの作成ができません。

    こんにちは、さくらインターネットのレンタルサーバでMySQLとphpを連動させたサイトを作っているのですが、初歩的なことでつまずいてしまい困っています。 まず、フォームで入力させたデータをPOSTで受け取り、その受け取ったデータをテーブル名として、データベース上にテーブルをつくりたいのですが、エラー文が表示されるだけでできません。 データベース自体への接続はできているようなのですが、phpMyAdminで見ても全くできていません。SQL文をphpMyAdminで実行するときちんと正常にテーブルができますので、そもそもデータベースが使用できないとか、もしくはSQL文の間違いでもなさそうです。 $t1 = $_POST['test1']; $t2 = $_POST['test2']; echo"{$t1}を受け取りました<br>"; $link = mysql_connect('mysql**.db.sakura.ne.jp', 'ユーザー名', 'パスワード'); if (!$link) { die('接続失敗です。'.mysql_error()); } print('接続に成功しました。<br>'); //1.さくらインターネット内にあるデータベースの選択 $db_name = "自分のデータベース名"; $selectDB = mysql_select_db($db_name,$link) or die("接続できません。"); //2.データベース内にテーブルを作成。 echo"{$t1}がテーブル名になります。<br>"; //3.テーブル作成用SQL文 $str_sql = "CREATE TABLE {$t1}" . "(" . "{$t2} INT(7) NOT NULL," . ");"; //4.上のSQL文を実行してテーブルを作る。 mysql_query($str_sql,$selectDB); echo"データベース内にテーブル「{$t1}」を作成しました。<br>"; //データベースへの接続を切断 $close_flag = mysql_close($link); if ($close_flag){ print('切断しました。<br>'); } 実行結果:Warning: mysql_query(): supplied argument is not a valid MySQL-Link resourceとなってテーブルは作成されず。 自分でも調べて見たところ、mysql_connect()での接続はちゃんとできているようなのですが、その次のmysql_select_db()関数がうまく働いていないようです。 つまりデータベースの選択ができていないので当然エラーとなるようです。 もう何日も悩んでいます。わかる方がいましたらどうぞよろしくお願いします。

    • ベストアンサー
    • PHP
  • mySQLでINSERT Errorとなります。

    初心者です。よろしくお願いいたします。 データを入れたいのですが、エラーとなってしまいます。 以下でデータベースとテーブルを作成し、 <?php $db_name="tori"; $tbl_name = "hato"; $db = mysql_connect('localhost', 'root', ''); if (!$db) { die('接続できません: ' . mysql_error()); } $sql = 'CREATE DATABASE tori'; if (mysql_query($sql, $db)) { echo "データベースtori の作成に成功しました\n"; } else { echo 'データベースtoriの作成に失敗しました: ' . mysql_error() . "\n";} mysql_select_db($db_name,$db) or die("データベースへの接続エラー"); $query ="create table {$tbl_name} ( id char(8) primary key, date TEXT, sex TEXT, age TEXT )TYPE=MyISAM"; mysql_query($query); $query ="INSERT INTO `houzingpark`.`hatogaya` ( id , date , sex , iro ) VALUES ( '2', 'uu', 'ii', 'po' )"; mysql_close($db); ?> 以下で入れ込みたいのですが、出来ないのです。 <?php $db_name="tori"; $tbl_name = "hato"; $db = mysql_connect('localhost', 'root', ''); if (!$db) { die('接続できません: ' . mysql_error()); } mysql_select_db($db_name,$db) or die("データベースへの接続エラー"); $sql="INSERT INTO hatogaya ( id , date , sex , iro ) VALUES ( 3, 2005-12-3, mesu, cya )"; mysql_query($sql); if(!$result){print 'INSERT Error!';} echo $sql; mysql_close($db); ?> でINSERTしようとするのですが、INSERT Error!と表示されてしまいます。 Adminで見るとデータベースとテーブルは出来ているのですが、どうしてもINSERTできないのです。 もう何時間も悪戦苦闘しております。 どなたかご指導よろしくお願いいたします。

  • PHPから、MySQL内に日本語名のテーブルを作成する事ができません。

    PHPから、MySQL内に日本語名のテーブルを作成する事ができません。 いつも、お世話になっております。 小生、現在、WindowsXPSP3上で、Apache2.2.15とMySQL5.1.46とPHP5.2.13を使用し、PHPを勉強している、PHP初心者です。 今回質問させて頂きたいのは、PHPからMySQL内にデータベースを作成後、日本語名でテーブルを作成したいのですが、なぜか作成できません。 PHPのソースは以下の様になっています。 -----mysql.php----- <?php //MySQLに接続 $sql = mysql_connect('localhost', 'root', 'root'); if(!$sql){ print("MySQLに接続失敗" . "<br>\n"); mysql_close($sql); die(); } else{ print("MySQLに接続成功" . "<br>\n"); } //DB作成 $create_db = 'CREATE DATABASE HUMAN'; if(mysql_query($create_db, $sql)){ print("DB作成成功" . "<br>\n"); } else{ print("DB作成失敗" . "<br>\n"); mysql_close($sql); die(); } //DB選択 if(!(mysql_select_db("HUMAN"))){ print("DB選択失敗" . "<br>\n"); mysql_close($sql); die(); } //文字コードをutfに設定 mysql_query("set names utf-8"); //テーブル作成 $create_table = "CREATE TABLE 人間 (名前 VARCHAR(100) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL, 年齢 INT NOT NULL, 身長 VARCHAR(50) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL, 体重 VARCHAR(50) CHARACTER SET utf8 COLLATE uft8_general_ci NOT NULL, 職種 VARCHAR(50) CHARACTER SET utf8 COLLATE uft8_general_ci NOT NULL, ENGINE = MyISAM CHARACTER SET utf8 COLLATE utf8_general_ci;"; if(mysql_query($create_table, $sql)){ printf("テーブル作成成功" . "<br>\n"); } else{ print("テーブル作成失敗" . "<br>\n"); mysql_close($sql); die(); } //テーブルのデータを取得、表示 $select = "SELECT * FROM 人間"; if($result = mysql_query($select, $sql)){ print("データ取得成功" . "<br>\n"); } else{ print("データ取得失敗" . "<br>\n"); mysql_close($sql); die(); } while($getdata = mysql_fetch_assoc($result)){ foreach($getdata as $output){ print($output . "<br>\n"); } } //MySQLにCOMMIT文送信 $commit = "COMMIT;"; if(mysql_query($commit, $sql)){ print("コミット成功" . "<br>\n"); } else{ print("コミット失敗" . "<br>\n"); mysql_close($sql); die(); } //MySQLの接続終了 mysql_close($sql); ?> 以上です。 お忙しい中、申し訳ございませんが、先輩方ご教示宜しくお願い致します。

    • ベストアンサー
    • PHP
  • MySQLに日本語を登録すると文字化けする

    お世話になります。 PHPを使用して日本語文字を登録しようとすると文字化けします。 どこをどのようにすれば文字化けはなおるのでしょうか? ソースは以下で書いています。 よろしくお願いします。 <?php function blank($value){ if(isset($value)){ if(is_array($value)){ return count($value)==0; }else{ return $value==""; } } return true; } if(blank($_POST["phonenumber"])||blank($_POST["password"])||blank($_POST["name"])||blank($_POST["mail"])){ ?> <p>名前、E-mail、携帯番号またはパスワードを入力してください</p> <p><a href="input.html">戻る</a></p> <?php }else{ $name= $_POST["name"]; $mail= $_POST["mail"]; $phonenumber = $_POST["phonenumber"]; $password= $_POST["password"]; $link=mysql_connect("localhost","id","password"); if(!$link){ die("データベースに接続できません"); } $db=mysql_select_db("id"); if(!$db){ die("データベースを選択できません"); } $sql=<<<SQL insert into password(phonenumber,password,name,mail)value("{$phonenumber}","{$password}","{$name}","{$mail}") SQL; $result=mysql_query($sql,$link); if(!$result){ die("同じ携帯番号で登録済です。"); }else{ print("正常に登録が終了しました"); } } ?>

    • ベストアンサー
    • PHP
  • DBから取得した内容を横表示

    質問します。 DBにID,NAME,IMGと言うカラム名があります。 例 ID NAME IMG 0001 PHP1 PHP1 0002 PHP2 PHP2 0003 PHP3 PHP3 データを取得し、ブラウザにて横に表示するように したいのですが、うまくいきません…。 ブラウザーイメージ 0001 0002 0003 PHP1 PHP2 PHP3 画像 画像 画像 以下がサンプルです。 <?php //DB接続 if((!$db = mysql_connect("","",""))){ die; } //DB選択 if((!mysql_select_db(""))){ die; } if(!mysql_query('set names sjis')){ echo "sjis 設定エラー"; die; } $SQL = "SELECT * FROM video_data"; if(!($rs = mysql_query($SQL))){ print mysql_error(); die; } ?> <table border="0"> <TR> <?php $count = 0;      while($item = mysql_fetch_array($rs)){ //ID表示 print "<TD>".$item['ID']."</TD>"; //名前表示 print "<TD>".$item['NAME']."</TD>"; //改行     if($count == 4){       print "</TR>";   $count = 0;     }     //IMG表示 print "<TD><img src='./test/".$item['ID'].".jpg'/></TD>"; $count++; } print "<TR>"; //コネクションクローズ mysql_close(); ?> </TABLE> どこを修正したらいいのかわかりません… 色々やっているんですが…。 わかる方が居たらヒントでもいいので 教えて下さい。よろしくお願いします。

    • ベストアンサー
    • PHP
  • データ検索

    PHPからMYSQLのデータを検索するごくごく簡単なプログラムを作ってみようと思いました。 どうやらデーターベースにアクセスしていないような・・・・・??? 初心者です。申し訳ありませんがよろしくお願い致します。 <? $db = mysql_connect(); mysql_select_db('suzu'); //前画面からのパラメータ $ab = $_POST["Memb"]; //一致データ検索 $sql = " select * from Toshokan \n " . " where to_menb = '$ab' " ; $res = mysql_db_query($db,$sql); $arycol = mysql_fetch_array($res,MYSQL_ASSOC); print ("$ab"); print ("###"); print ($res["to_menb"]); print ("***"); print ("$FMemb"); print ("###"); print ($arycol['to_post1']); if ( $res == $FALSE ) { die("新規登録"); } else { die("更新"); } mysql_free_result ($res); mysql_close($db); ?> 結果 上記の print ($res["to_menb"]); print ($arycol['to_post1']); は出力されずにダミー状態です。 データーベースにアクセスされていないと考えたのですが、、、、、 どなたかご教授いただければ幸いです。

    • ベストアンサー
    • PHP
  • Flash→PHP→MySQLへの値の受け渡しについて

    現在、Flashのフォームで受け取った値をPHP経由でMySQLへデータを格納するシステムを作成しています。 現在、詰まっている点とは、Flashで送信したデータがMySQLまで到達できないというところです。 少し分析してみたところ、PHPを単独でブラウザにて開くと "フィールドが取得できません。" と出力されていました。 これは、 ----- <?php $setsuzoku = mysql_connect("localhost", "*****", "*****"); if (! $setsuzoku) { die ("データベースに接続できません"); } if (! mysql_select_db ("test")) { die ("データベースが取得できません"); } mysql_query("INSERT INTO rank VALUES('".$HTTP_GET_VARS['nickname']."', ".$HTTP_GET_VARS['score']); if (!$fd) { die ("フィールドが取得できません。"); } // 処理が終わったことを知らせる print('OK'); ----- というプログラムで動かしていまして、『mysql_select_db ("test")』まで動作しているのではないかと思われます。 ですので、もしかしたらFlash以前にPHPとSQLの連携がうまくいっていないような気がするのですが…どうでしょうか? Flashからの情報を送信するシステムである以上、PHPで表示すると必ずこのような形になるのでしょうか? ちなみにMySQLには、必要なDatabaseとテーブルを作成しました。 問題の切り分けは一応してみましたが、間違っているかもしれません。何かご教授頂ければ幸いです。 よろしくお願いいたします。

    • ベストアンサー
    • Flash

専門家に質問してみよう