• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:飲食店のメニュー表を作成中。MySQLの内容を出力する時に画像が×表示になります。<img src="">の使い方を教えて下さい。)

飲食店のメニュー表作成中 MySQLの内容を出力する時に画像が×表示になる

このQ&Aのポイント
  • MySQLのテーブルにおいて、メニューの写真が存在しない場合にどのような処理を行うかについて質問。
  • 飲食店のメニュー表を作成する際に、PHPとMySQLを使用しているが、メニューの写真がない場合は×が表示される問題が発生している。
  • imgdirカラムには常に「/web/img/」が登録されるが、upfilenameが存在しない場合は×が表示される。この場合にはどのような処理をすれば良いか尋ねている。

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

  • ベストアンサー
  • phoenix343
  • ベストアンサー率15% (296/1946)
回答No.1

データベース定義を変えたくないなら、レコード登録時に画像がない印としてupfilenameに' 'を埋めといて、phpのコードで' 'だったら<img src>を出力しないようにするとか。 データベース定義を変えてもいいならupfilenameのNOT NULLを外して、 is_null関数で判断するとか。

g_girl
質問者

お礼

phoenix343様、 回答をありがとうございます。 「phpのコードで' 'だったら<img src>を出力しないようにする」 というアドバイスで解決できました。 写真が無い場合に、×が表示されなくなった時は、とても嬉しかったです。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • 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
  • MySQLに保存した画像を表示したい

    <環境> PHP:4.3.8 MySQL:4.0.16 はじめまして、PHPを始めて駆け出しの者です。 MySQLに保存した画像を表示したいのですが なかなかうまくいきません。 なにかきっかけとなればと思い、書き込みをします。 どうぞご教授ください。 MySQLに画像を保存する事もやっとの事で出来たのですが、 ちゃんと保存されているか確認するため画像を表示してみよう と試みたのですが、またそこで壁にぶち当たってしまいました。 ネットの各所で検索し調べ、カタチまでは出来たのですが 肝心の画像が「×(バツ印)」になっていて表示出来ません。 +++img_upload.php+++ <?php if ($_POST["submit"]!=""){ if ($_POST["file_name"]=="none"){ print("ファイル名が入力されていません。<BR>\n"); exit; } $file_name = $_POST["file_name"]; if ($_FILES["upfile"]["tmp_name"]=="none"){ print("ファイルのアップロードができませんでした。<BR>\n"); exit; } $fp = fopen($_FILES["upfile"]["tmp_name"], "rb"); if(!$fp){ print("アップロードしたファイルを開けませんでした"); exit; } $imgdat = fread($fp, filesize($_FILES["upfile"]["tmp_name"])); fclose($fp); print("ファイルサイズ:{$_FILES["upfile"]["size"]}<BR>\n"); $len = strlen($imgdat); print("データ長 = $len<BR>"); $imgdat = addslashes($imgdat); $con = mysql_connect("***.***.***.***", "*****", "*****"); if (!$con){ print("MySQLへの接続に失敗しました"); exit; } if (!mysql_select_db("*****")){ print("データベースへの接続に失敗しました"); exit; } $encoded_file = base64_encode($imgdat); $sql = "INSERT INTO image (img_data) values ('$encoded_file')"; $result = mysql_query($sql); if (!$result){ print("SQLの実行に失敗しました<BR>"); print(mysql_errno().": ".mysql_error()."<BR>"); exit; } mysql_close($con); } ?> +++img_display.php+++ <HTML> <HEAD> <META http-equiv="Content-Type" content="text/html; charset=EUC-JP"> <TITLE>データベースへの画像の表示</TITLE> </HEAD> <BODY> <P>ファイルの表示</P> <FORM method="POST" enctype="multipart/form-data" action="img_display.php"> <INPUT type="hidden" name="MAX_FILE_SIZE" value="1048576"> 画像のファイルIDを入力してください<BR> <INPUT type="text" name="log_id"><BR> <INPUT type="submit" name="submit" value="送信"> <INPUT type="reset" name="reset" value="リセット"> </FORM> <?php if ($_POST["submit"]!=""){ $log_id = $_POST['log_id']; echo "<img src=\"get_image.php?log_id=" . $log_id . "\">"; } ?> </BODY> </HTML> +++get_image.php+++ <?php if ($_GET["log_id"]!=""){ $log_id = $_GET['log_id']; $con = mysql_connect("***.***.***.***", "*****", "*****"); if (!$con){ print("MySQLへの接続に失敗しました"); exit; } if (!mysql_select_db("******")){ print("データベースへの接続に失敗しました"); exit; } $sql = "SELECT img_data FROM image WHERE log_id='".$log_id."'"; $result = mysql_query($sql); if (!$result){ print("SQLの実行に失敗しました<BR>"); print(mysql_errno().": ".mysql_error()."<BR>"); exit; } $row = mysql_fetch_array($result); mysql_close($con); $decoded_file = base64_decode($row[1]); mb_http_output("pass"); header("Content-type: image/jpeg"); header("Content-Disposition: inline; filename=image.jpg"); echo $row[0]; } ?> DBのほうのテーブルには、「log_id」と「img_data」があります。 すみませんが、よろしくお願いします。

    • ベストアンサー
    • PHP
  • mysqlに保存した画像の表示がうまくいかない

    phpとmysqlで検索システムを作っています。 今回、mysqlにテキストデータと一緒に画像も保存し検索結果を表示する時に画像も一緒に表示されるようにしたいと考えています。 ひとまずテキストデータは問題なく保存、検索、表示ともに正常に動作していますが、画像がどうしてもうまく表示されません。 DB内を確認してみると、保存はきちんとされているようなのですが。 わかる方がいらっしゃいましたら、アドバイスをいただけないでしょうか? 以下にコードの内容を記載します。テキストデータは正常に動作するので、画像の表示に関する部分だけ記載させて頂きます。 ※検索結果の該当フィールドのidをキーとして渡して、該当するidの画像(DB内のimage1)を表示する。 よろしくお願いします。 【mysqlテーブル】 create table entries ( id int not null auto_increment primary key, name varchar(255), address varchar(255), image1 MEDIUMBLOB NOT NULL, image2 MEDIUMBLOB NOT NULL, ) ENGINE=InnoDB DEFAULT CHARSET=utf8; 【result.php】 //画像表示箇所 <?php echo '<img src="get_image.php?id=' . $row['id'] . '">' ?> 【get_image.php】 <?php $id = $_GET['id']; header('Content-Type: image/jpg'); echo $row['image1']; ?>

    • ベストアンサー
    • PHP
  • php + mysql でフォーム作成時のエラー

    データベースから取り出したデータをラジオボタンで選択し、それをデータベース(別のテーブル)に追加させる機能を作りたいです。 非常に初歩的なことだとは思うのですがご教授ください。 MySQL 4.0.27 PHP 5.2.11 <FORM ACTION="cone3.php" METHOD="post"> <?php $srv = ""; // サーバー名 $id = ""; // ユーザーID $passwd = "; // パスワード $dbn = ""; // データベース名 $sql = "SELECT code, lname, lecturer, kind, gradetype FROM Lecture"; // SQL文 // データベースに接続する $db = mysql_connect($srv,$id,$passwd); mysql_select_db($dbn,$db); $rs = mysql_query($sql,$db); //--- テーブルのレイアウト --- 開始 -----------------------> print("<TABLE><TR>"); print("<TR><th> </th><th>講義名</th><th>教員</th><th>科目区分</th><th>配当学年</th></tr>"); while($row = mysql_fetch_array($rs)) { print '<tr><td><input type="radio" name="regist" value="$row['code']"></td>'; print '<td>' . $row['lname'] . '</td>'; print '<td>' . $row['lecturer'] . '</td>'; print '<td>' . $row['kind'] . '</td>'; print '<td>' . $row['gradetype'] . '</td>'; print '</tr>'; print ("</TR>"); } print("</TABLE>"); print_r($_POST); echo "<br />\n"; mysql_free_result($rs); mysql_close($db); //--- 終了 ---> ?> <input type="submit" name="submit" value="送信"> </form> 以上のようなソースでラジオボタンで配列の$row[code]の値を送りたいんですがうまくいきません。 よろしくお願いします。

    • ベストアンサー
    • PHP
  • PHP+MYSQLにおける、画像の表示について。

    いつも参考にさせていただいております。 ありがとうございます。 さて、表題の件ですが、現在、画像掲示板を作成中です。 テーブルの作成が終わり、アップロードするPHPまでは完了。 画像がバイナリで保存されるところまでは作成が完了しました。 次に、呼び出しのPHPを作成しようと現在作成中ですが、ここで躓づきました。 テーブル Field | Type | Null | Key | Default | Extra | +-----------+------------+------+-----+-------------------+----------------+ | id | int(11) | NO | PRI | NULL | auto_increment | | commentid | int(3) | YES | | NULL | | | comment | mediumtext | YES | | NULL | | | picture1 | mediumblob | YES | | NULL | | このテーブルの中に、レコードが5つあり、それぞれカラムpicture1に画像データを持たせてあります。 このテーブルに対して、 <?PHP $s=mysql_connect("localhost","root","password") or die("登録フォーム接続に失敗しました。"); mysql_select_db("smartphone"); $result = mysql_query("SELECT * FROM commentmaster"); while($row = mysql_fetch_array($result)){ header("Content-type: image/jpeg"); print($row[3]); } exit(); ?> <html> <head> <title>コメント一覧</title> </head> </html> 以上のPHPファイルで画像の呼び出しをしようとしたのですが、 1枚目の画像は表示されるものの、2枚目以降の画像が表示されません。 ちなみに、 header("Content-type: image/jpeg"); print($row[3]); の部分を、 #header("Content-type: image/jpeg");←コメントアウトした。 print($row[0]);←picture1ではなく、IDを取得に変更 このように変更すると、カラム0のIDが5つ表示されます。 過去のコメントを拝見したのですが、機能的に無理なものなのか、書き方が悪いだけなのか。 また、別の方法があるのかの判断が付きませんでしたので、質問をさせていただきました。 お手数をおかけしますが、よろしくお願いいたします。

    • ベストアンサー
    • PHP
  • phpでmysqlで作成したdbを表示したい。

    現在phpのプログラムの学習を行っています。、 phpmyadminで作成したデータベースを読み込もうとしているのですが、うまくいきません。 参考書やサイトも参考にしたのですが、警告が出ています。 よくわからなくなってきましたので、教えていただきたいです。 ------------------------------------------------------------------------------- ・実行結果 Resource id #31Resource id #40 接続ID: 選択の成否: 結果ID: 行数: Warning: mysql_fetch_assoc() expects parameter 1 to be resource, boolean given in C:\xampp\htdocs\job\job.php on line 45 ------------------------------------------------------------------------------- ・ソース <?php /*$con = mysql_connect('localhost','root','root') or die("接続できません"); print "接続に成功しました。"; mysql_close($con);*/ $url = "localhost"; $user = "root"; $pass = "***"; $db = "***"; // 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); echo "$link"; echo "$sdb"; echo "$result"; echo "$rows"; echo "<br>"; echo "接続ID:<?= $link ?><br />"; echo "選択の成否:<?= $sdb ?><br />"; echo "結果ID:<?= $result ?><br />"; echo "行数:<?= $rows ?><br />"; $recordSet = mysql_query('SELECT * FROM my_items'); while($data = mysql_fetch_assoc($recordSet)){ /*このあたりが45行目 */ echo $data['item_name']; /* ここの値を変える*/ echo '<br>'; } // MySQLへの接続を閉じる mysql_close($link) or die("MySQL切断に失敗しました。");

    • ベストアンサー
    • 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でのデータ表示画面⇒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
  • 間違ってますか?

    お世話になってます。 下記のような記述を書いています。 $key = $_POST["inpnum"]; $shopno = $_POST["number"]; $dbHandle = mysql_connect("localhost"); if ($dbHandle == False) { print ("can not connect db\n"); exit; } $db = "test"; $sql = "select * from tab1 where note= '$shopno'"; $rs = mysql_db_query($db,$sql); $fields = mysql_num_fields($rs); $rows = mysql_num_rows($rs); if ($rows > 0) {~ このままでは、上手く行くのですが、 $sql = "select * from '$key'where note= '$shopno'"; とテーブル名を変数に変えると、エラーが出ます。 基本的な事のような気がしますが、何度やっても上手く行かないので、お力添え宜しくお願いします。

    • 締切済み
    • PHP
  • 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
このQ&Aのポイント
  • NewSoft CD Labelerで印刷しようとするとBrother製のプリンターが見つかりません。対処方法を教えてください。
  • Windows10の環境でNewSoft CD Labelerを使用している時、印刷しようとするとBrother製のプリンターが見つからず、エラーが発生します。対処方法を教えてください。
  • NewSoft CD Labelerで印刷しようとした時に、Brother製のプリンターが見つからず、印刷ができません。Windows10の環境での対処方法を教えてください。
回答を見る

専門家に質問してみよう