MySQLに登録したデータをPHPで出力したい

このQ&Aのポイント
  • MySQLを使用して登録したデータをPHPで出力する方法について解説します。
  • 具体的には、飲食店のメニュー表を作成するための方法を紹介します。
  • また、MySQLのテーブルの設計やPHPでのデータ表示方法も詳しく説明します。
回答を見る
  • ベストアンサー

MySQLに登録したデータをPHPで出力したい。

PHP+MySQLで飲食店のメニュー表を作成しています。 -------------------------------------------------- MySQLのテーブル -------------------------------------------------- CREATE TABLE item ( id int(11) NOT NULL auto_increment, menu varchar(50) NOT NULL, comment text NOT NULL, upfilename TEXT NOT NULL, imgdir TEXT NOT NULL, PRIMARY KEY (id) ); id = オートナンバー menu = メニュー名 comment = メニューのコメント upfilename = アップロードするイメージファイル名(jpg) imgdir = アップしたイメージファイルのディレクトリ -------------------------------------------------- 下記の「menu.php」を実行すると 「Parse error: syntax error, unexpected T_VARIABLE」 と表示されます。 print "<img src="$item['imgdir'] . $item['upfilename']">" . "<BR>"; の部分がおかしいことは分かるのですが、調べても解決できなかったので投稿しました。 「アップしたイメージファイルのディレクトリ」と「イメージファイル名」を連結して「imgタグ」で表示させようと考えました。 「メニュー名」「コメント」「写真の名前」「写真」を表示させたいです。 よろしくお願い致します。 -------------------------------------------------- menu.php -------------------------------------------------- <html xmlns=" http://www.w3.org/1999/xhtml" xml:lang="ja" lang="ja"> <head> <meta http-equiv="Content-Type" content="text/html; charset=shift_jis" /> <title>メニュー</title> </head> <body> <?php $dbHandle = mysql_connect("mysql**.lolipop.jp","LA**","g**") or die("can not connect db\n"); $db = "LA**"; $sql = "SELECT id, menu, comment, upfilename, imgdir FROM item ORDER BY id DESC"; $rs = mysql_db_query($db,$sql); while ($item = mysql_fetch_array($rs)){ print $item['id'] . "<BR>"; print $item['menu'] . "<BR>"; print $item['comment'] . "<BR>"; print $item['upfilename'] . "<BR>"; print $item['imgdir'] . $item['upfilename'] . "<BR>"; print "<img src="$item['imgdir'] . $item['upfilename']">" . "<BR>"; print "<hr>"; } mysql_free_result($rs); mysql_close($dbHandle); ?> </body> </html>

  • PHP
  • 回答数1
  • ありがとう数2

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

  • ベストアンサー
  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.1

>print "<img src="$item['imgdir'] . $item['upfilename']">" . "<BR>"; >の部分がおかしい ピリオドがぬけて文字列の接続ができてませんね print "<img src=".$item['imgdir'] . $item['upfilename'].">" . "<BR>";

g_girl
質問者

お礼

yambejp様、 アドバイスをありがとうございました。 解決できました。半日かけて調べていました。 とても嬉しいです。

関連するQ&A

  • 飲食店のメニュー表を作成中。MySQLの内容を出力する時に画像が×表示になります。<img src="">の使い方を教えて下さい。

    PHP+MySQLで飲食店のメニュー表を作成しています。 -------------------------------------------------- MySQLのテーブル -------------------------------------------------- CREATE TABLE item ( id int(11) NOT NULL auto_increment, menu varchar(50) NOT NULL, comment text NOT NULL, upfilename TEXT NOT NULL, imgdir TEXT NOT NULL, PRIMARY KEY (id) ); id = オートナンバー menu = メニュー名 comment = メニューのコメント upfilename = アップロードするイメージファイル名 imgdir = アップしたイメージファイルのディレクトリ -------------------------------------------------- 質問 -------------------------------------------------- 「imgdir」には、常に「/web/img/」がMySQLに登録されるようにしています。 「menu.php」で出力する時に、「upfilename」にデータが存在しない場合は、×が表示されます。 メニューの写真がない場合もあります。 こういう場合は、どのような処理を行えばよいのでしょうか? よろしくお願い致します。 -------------------------------------------------- menu.php -------------------------------------------------- <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=shift_jis" /> </head> <body> <?php $dbHandle = mysql_connect("mysql**.lolipop.jp","LA**","g**") or die("can not connect db\n"); $db = "LA**"; $sql = "SELECT id, menu, comment, upfilename, imgdir FROM item ORDER BY id DESC"; $rs = mysql_db_query($db,$sql); while ($item = mysql_fetch_array($rs)){ print $item['id'] . "<BR>"; print $item['menu'] . "<BR>"; print $item['comment'] . "<BR>"; print "<img src=".$item['imgdir'] . $item['upfilename'].">" . "<BR>"; print "<hr>"; } mysql_free_result($rs); mysql_close($dbHandle); ?> </body> </html>

    • ベストアンサー
    • PHP
  • PHP+mysql データ重複登録

    ◆PHPバージョン 5.3.3 ◆mysqlバージョン 4.1.22 ◆テーブル情報 `no` int(11) NOT NULL auto_increment, `name` text NOT NULL, `mail` text NOT NULL, `memo` text NOT NULL, `updating` timestamp NOT NULL default CURRENT_TIMESTAMP, PRIMARY KEY (`no`) ENGINE=MyISAM DEFAULT CHARSET=utf8 ◆SQL (1)insert into test(name, mail, memo) values ('abc','abc@test.com','abc') (2)insert test set name='abc', mail='abc@test.com', memo='abc' ◆処理概要 $conn = mysql_connect(ホスト、ユーザ、パスワード); mysql_query("set names utf8"); $rs = mysql_select_db(DB名, $conn); $result = mysql_query(SQL, $conn); ◆登録情報 (1, 'abc', 'abc@test.com', 'abc', '2011-09-02 16:28:57'), (2, '', '', '', '2011-09-02 16:28:57'), 【問題】 上記SQL(1)、(2)どちらでDBに登録しても、登録情報のように同時に空データも同時に登録されてしまう 全く原因の検討がつかないので、何か手がかりがありましたらご教授頂けたらと思います。 どうぞよろしくお願いします。

    • ベストアンサー
    • MySQL
  • PHPでのデータ表示画面⇒CSV出力について

    先日より質問に対しコメントありがとうございます。 教えていただいた内容と自分でやった結果3つのSQLでデータを出力し出力順を揃えた方法で表ができました。 これをCSV形式で出力したいのですがこのまま出力できるのでしょうか?それとも別途方法をとる必要があるのでしょうか。 自分の中で今ひとつまとまらないので改めて質問させていただきます。 ソースへの指摘併せコメントよろしくお願いします。 ※現ソース <HTML> <BODY> <?PHP //DB接続部省略 $sql="SELECT I.ITEM_ID,I.ITEM_NAME FROM ITEMS AS I,LIST AS L・・・(略)"; $sql2="SELECT A.SHOP_ID,A.SHOP_NAME,A.ITEM_NAME, IF(L.ITEM_ID=A.ITEM_ID,'○','') FROM・・・(略)"; $sql3="SELECT S.SHOP_ID,S.SHOP_NAME FROM SHOP AS S ・・・(略)"; $rs=mysql_query($sql,$db); $rs2=mysql_query($sql2,$db); $rs3=mysql_query($sql3,$db); $line=mysql_num_rows($rs); $line2=mysql_num_rows($rs2); $line3=mysql_num_rows($rs3); print("<TABLE border=1>"); print("<TR>"); print("<TD>店舗名</TD>"); for($i=0;$i<$line;$i++) { $row=mysql_fetch_row($rs); print("<TD>".$row[1]."</TD>"); } print("</TR>"); print("<TR>"); for($i=0;$i<$line3;$i++) { $row3=mysql_fetch_row($rs3); print("<TD>".$row3[2]."</TD>"); for($j=0;$j<$line;$j++) { $row2=mysql_fetch_row($rs2); if($row2[3] == "") { print("<TD width=25> </TD>"); } else { print("<TD width=25>".$row2[3]."</TD>"); } } print("</TR>"); } print("</TABLE>"); mysql_free_result($rs); mysql_free_result($rs2); mysql_free_result($rs3); mysql_close($db); ?> </BODY> </HTNL>

    • ベストアンサー
    • PHP
  • MySqlに登録したデータを更新すると文字化けする

    PHP5.2 MySql5.1.34 文字コードSJIS MySqlに登録したデータを更新すると文字化けします。 回答をよろしくお願い致します。 // MySQLのクライアントの文字コードをsjisに設定 mysql_query("SET NAMES 'sjis'") or die("can not SET NAMES sjis"); // データを取り出す $sql = "SELECT created_at, mes, url FROM message WHERE (id = ".$_POST["id"].");"; $res = mysql_query($sql, $conn) or die("データ抽出エラー"); $row = mysql_fetch_array($res, MYSQL_ASSOC); // 取り出したデータを表示する print "<form action=koushin.php method=post accept-charset=\"Shift_JIS\">"; print "日付:<input type=text size=30 name=created_at value=" . $row["created_at"] . "> "; print("<br>"); print("<br>"); print "メッセージ:<input type=text size=50 name=mes value=" . $row["mes"] . "> "; print("<br>"); print("<br>"); print "URL:<input type=text size=80 name=url value=" . $row["url"] . "> "; print "<input type=hidden name=id value=" .$_POST["id"]. ">"; print("<br>"); print("<br>"); print "<input type=submit value=更新>"; print("<br>"); print("<br>"); print "</form>"; koushin.php <?php $sv = "サーバ"; $dbname = "データベース"; $user = "ユーザー"; $pass = "パスワード"; $conn = mysql_connect($sv, $user, $pass) or die("接続エラー"); mysql_select_db($dbname) or die("接続エラー"); $id = $_POST["id"]; $created_at = $_POST["created_at"]; $mes = $_POST["mes"]; $url = $_POST["url"]; $sql = "UPDATE message SET updated_at = now() , created_at = '{$created_at}' , mes = '{$mes}' , url = '{$url}' WHERE id = $id"; $res = mysql_query($sql, $conn) or die("更新エラー"); mysql_close($conn); ?>

    • ベストアンサー
    • MySQL
  • phpでmysqlに接続してデータを登録

    入力フォームをhtmlに作って それをidとpassを入力して それをmysqlに登録したいのですが うまくできません <html> <head> <meta http-equiv="Content-Type"content="text/html;charset="utf-8"/> <title>登録</title> </head> <body> <form action="touroku.php"method="post"> 登録id :<br /> <input type="text"name="id"size="10"value="" /><br /> パス:<br /> <input type="text"name="pass"size="10"value="" /><br /> <br /> <input type="submit"value="登録する" /> </form> </body> </html> という感じに 入力フォームは作ったのですが それからそれをmysqlにどうやって登録をするのかわかりません 詳しく解説されてわかりやすいサイトなどを教えてください もしくは教えてください

  • 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
  • PHP+MySQL 内部結合(INNER_JOIN)がうまく行きません。

    以下の文で「client_master」テーブルと「jobmaster0717」テーブルを内部結合させようとしているのですが、うまく行きません。どこがおかしいのでしょうか? <?php  // データベースサーバへの接続・データベースの選択  $db = mysql_connect('localhost','test','password');  $db_name = 'test';  mysql_select_db($db_name,$db);  // 処理対象テーブル  $tbl_name1 = "client_master";  $tbl_name2 = "jobmaster0717";    // 内部結合(INNER JOIN句)  $str_sql1 = "SELECT * FROM {$tbl_name1}"       . " INNER JOIN {$tbl_name2}"       . " ON {$tbl_name1}.company_ID"       . "  = {$tbl_name2}.client_ID;";  $rs1 = mysql_query($str_sql1,$db);  print "\"{$str_sql1}\"<br>\n";  // 結果セットの表示  show_rs($rs1,$db);  print "<br>\n";  // 結果セット(結果ID)の開放  mysql_free_result($rs1);    // データベースサーバの切断  mysql_close($db); ?>

  • php MySQL データ登録 方法

    以前もご質問させていただいたのですが、調べてもわからず困り果てています。 PHPとMySQLは初心者です。 PHPのバージョンはPHP 5.2.12 MySQLのバージョンは 5.1 サーバーはさくらインターネットを使用しています。 コードは下記のとおりになります。 form.php <html> <body> <form action="complete.php" method="POST"> <input type="text" name="id"> <input type="text" name="password"> <input type="text" name="first_name"> <input type="text" name="last_name"> <input type="text" name="first_kana"> <input type="text" name="last_kana"> <?php print '<select name="b_year">'."\n"; $start = date('Y') -40; $end = date('Y') -16; for ($i = $start; $i <= $end; $i++) { $selected = ""; $selected = ($_POST["b_year"] == sprintf('%04d',$i)) ? "selected":""; print '<option value="' . sprintf('%04d',$i) . '" '.$selected.'>' . sprintf("%04d",$i) . '</option>' . "\n"; } print '</select> 年' . "\n"; (文字数のためb_monthとb_dayを省略) ?> <input type="text" name="number"> <input type="text" name="height"> <input type="text" name="weight"> <input type="submit" name="regist" value="登録"> <input type="reset" name="reset" value="リセット"> </form> </body> </html> complete.php <?php ・ ・ $id = mysql_real_escape_string($_POST['id']); $password = mysql_real_escape_string($_POST['password']); $first_name = mysql_real_escape_string($_POST['first_name']); $last_name = mysql_real_escape_string($_POST['last_name']); $first_kana = mysql_real_escape_string($_POST['first_kana']); $last_kana = mysql_real_escape_string($_POST['last_kana']); $year = mysql_real_escape_string($_POST['b_year']); $month = mysql_real_escape_string($_POST['b_month']); $day = mysql_real_escape_string($_POST['b_day']); $number = mysql_real_escape_string($_POST['number']); $height = mysql_real_escape_string($_POST['height']); $weight = mysql_real_escape_string($_POST['weight']); ・ ・ $query_reg = sprintf("INSERT INTO `member` (`id`,`password`,`first_name`,`last_name`,`first_kana`,`last_kana`,`b_year`,`b_month`,`b_day`,`number`,`height`,`weight`) VALUES('$id',$password,'$first_name','$last_name','$first_kana','$last_kana',$year,$month,$day,,$number,$height,$weight"); $result_reg = mysql_query($query_reg, $link) or die(mysql_error()); if ($result_reg) { $msg = '登録しました。'; } else { $msg = '登録に失敗しました。'; } ・ ・ ・ ?> <html><body><?php print $msg; ?></body></html> とフォームを入力してデータベースに登録をするという流れです。 ご質問ですが、フォームに項目を入力して登録するとデータベースに登録がされます。 しかし、数字のみ($number、$height、$weight)の場所を未入力にするとエラーが出力されます。 エラーは 「You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near」です。 MySQLは下記のように設定しています。 id varchar(20) None password varchar(255) None first_name varchar(8) NULL last_name varchar(8) NULL first_kana varchar(8) NULL last_kana varchar(8) NULL b_year int(4) NULL b_month int(2) NULL b_day int(2) NULL number varchar(2) NULL height varchar(3) NULL weight varchar(3) NULL 未入力でもエラーが表示されずデータベースに入力されたとこだけ登録されるようにするにはどうしたらよろしいのでしょうか? お分かりの方がいらっしゃいましたらご教授お願いいたします。

    • ベストアンサー
    • PHP
  • フォームからmySQL-DBにデータ登録したいです。

    FedoraCore6 + Apache2.2.4 + MySQL5.0.41 + PHP4.4.7 で学習しています。 TABLE aaa( id MEDIUMINT NOT NULL AUTO_INCREMENT, hiduke DATE, xyz INT, comment VARCHAR(30), PRIMARY KEY (id) );  という表を作り、 入力フォーム [TEST.html] <html><head><meta http-equiv="Content-Type" content="text/html; charset=EUC-JP"></head> <body><p>データ入力</p> <form action="datatest.php" method="POST"> <p>日付<input type="text" name="hiduke" size="12"></p> <p>データ<input type="text" name="xyz" size="6"></p> <p>コメント<input type="text" name="comment" size="40"></p> <input type="submit" value="登録"> <input type="reset" value="リセット"> </form></body></html> ------------------ 書込スクリプト [datatest.php] <html><body> <php extract($_POST); mysql_connect(localhost,bbbbbb,******); mysql_select_db(cccccc); $sql = "insert into aaa values(0 '$hiduke','$xyz','$comment')"; mysql_query($sql); ?> 下記の内容で登録しました<p> 日付:<? echo $hiduke; ?> <br> データ:<? echo $xyz; ?> <br> コメント:<? echo $comment; ?> <br> <p></body></html> でデータを登録しようとしましたが書き込みができません。何が悪いのでしょうか? 基本的なところが間違っていると思い、いろいろ調べましたが、私の現在の力では原因を見つけることができないでいまず。よろしくご指導下さい。 なお、コマンドラインから、insert into aaa values(0, 20071008,3840,'qqqqq'); なら書込みできます。

    • ベストアンサー
    • MySQL
  • テーブルにINSERTができません(MySQL)

    独学でPHP,MySQLを勉強中です。 とあるトレーディングカードの出品サイトを作成中ですがデータのINSERTがうまくいきません。 経験も浅いので何か大きく基本をはずしているような気がしています。どなたかご教授ください。 ●登録完了ページ <?php header("Content-Type:text/html;charset=Shift_jis"); error_reporting(4); session_start(); /*SESSIONで送られてきた情報を受け取る*/ $item_f=$_SESSION['item_f']; $myID=$_SESSION['myID']; $s_code=$_SESSION['s_code']; $TNO=""; $today = date("Y/m/d H:i"); /*DBに登録*/ $db = mysql_connect("localhost", "root", "root")or die ('DB Connection Error= '. mysql_error()); mysql_select_db("regist_test_db", $db)or die ('DB Connection Error= '.mysql_error()); $rs = mysql_query("SET character set SJIS", $db); mysql_query("insert into regist_test (time,myID,s_code,CID0) values ('$today','$myID','$s_code','$item_f[0][0]')" ,$db); mysql_query("commit"); session_destroy(); ?> <html> <head><title>トレードサイトほげほげ</title></head> <p>登録が完了しました。</p> <p>トレードが成立すると良いですね!</p> <a href="index.php">検索ページへ</a> </body> </html> ●テーブル作成 regist_test_db内 create table regist_test ( TNO int auto_increment primary key, time datetime not null, myID varchar(10) not null, s_code varchar(10) not null, CID0 varchar(5) not null, ); ●補足 $_SESSION['item_f']は二次元配列で、[0][0]から[4][6]までありますが、この場では割愛しています。 試しに、 echo "today=".$today."<br>"; echo "myID=".$myID."<br>"; echo "s_code=".$s_code."<br>"; echo "item_f[0][0]=".$item_f[0][0]."<br>"; echo "item_f[0][2]=".$item_f[0][2]."<br>";  :  : と表示させることはできるので、SESSIONでデータは渡っているようです。 この登録完了ページがひらいたあと、MySQL Command Line Clientで select * from regist_test; としてもEmpty setとでてしまいます。 すみませんがお分かりの方アドバイスお願いします。

    • ベストアンサー
    • PHP

専門家に質問してみよう