PHPとCSVでレシピサイトを作る方法

このQ&Aのポイント
  • PHPとCSVを使用してレシピサイトを作る方法を紹介します。MySQLの知識がない場合でもCSVを使用して構築することができます。
  • CSVファイルを使用してレシピ情報を管理し、HTMLと組み合わせてサイトを作成します。
  • さらに、CSVファイルを使用して食材情報も管理し、詳細ページで表示させる方法も紹介します。
回答を見る
  • ベストアンサー

PHPとCSVでレシピサイトを作る

こんにちは☆ PHPとCSVでレシピサイトを作ってます。 MYSQLでの構築は知識が足らないのでCSVを用いています。 まず HTMLで下記のように書いて | 略 <a href=\"deatail.php?recipe=1\">作り方</a> カレーライス|30分|★★★★ <a href=\"deatail.php?recipe=2\">作り方</a> シチュー|10分|★★☆☆ deatail.phpで $code = $_GET[\'recipe\']; $code =htmlspecialchars($code); $fp = fopen(\"recipe.csv\", \"r\"); while ($data = fgetcsv($fp, 10000)) { if ($data[0]==$code) { print <<<HTML <table> <tr> <td>$data[1]</td> <td>$data[2]</td> | 略 </tr> recipe.csvはこんな感じです ID,名前,材料,一言 1,カレーライス,玉ねぎ/にんじん/セロリ/にんにく/鶏肉,初心者でも作りやすいよ 2,シチュー food.csv ID,名前,画像, 1,玉ねぎ,<img src=\"tamanegi.gif\"/> 2,にんじん<img src=\"ninjin.gif\"/> 3,セロリ<img src=\"serori.gif\"/> 4,にんにく<img src=\"ninniku.gif\"/> 5,鶏肉<img src=\"toriniku.gif\"/> さらに玉ねぎやにんじんetcの詳細をdeatail.phpに表示させたいんですが、どのようにすればいいのか・・・ 頭が混乱してます(>_<) 一応考えてみたんですが recipe.csvの材料の所に 1,カレーライス,<a href=\"food_deatail.php?food_id=1\">玉ねぎ</a>/<a href=\"food_deatail.php?food_id=2\">にんじん</a>/セロリ/にんにく/鶏肉,初心者でも作りやすいよ <a href=\"food_deatail.php?food_id=1\">玉ねぎ</a>と書いて food_deatail.phpで $code = $_GET[\'food_id\']; $code =htmlspecialchars($code); $fp = fopen(\"food.csv\", \"r\"); while ($data = fgetcsv($fp, 10000)) { if ($data[0]==$code) { print <<<HTML <table> <tr> <td>$data[1]</td> <td>$data[2]</td> こうするしか無いのでしょうか? 何か複雑で頭がコンフューズしております 是非ご教授よろしく願います。

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

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

  • ベストアンサー
  • tany180sx
  • ベストアンサー率63% (239/379)
回答No.1

材料に自動的にリンクを貼れればいいんでしょうか・・? -- ini/foods.php ( csvは面倒くさいので <?php return array(   // name => array(key, 一言),   '玉ねぎ' => array('tamanegi', 'hoge'),   'にんじん' => array('ninjin', 'hoge'),   'セロリ' => array('serori', 'hoge'),   'にんにく' => array('ninniku', 'hoge'),   '鶏肉' => array('toriniku', 'hoge'), ); -- datail.php ( deatail? $foods = include 'ini/foods.php'; (略) $data[2] = '玉ねぎ/にんじん/セロリ/にんにく/鶏肉/調味料';//dummy $text = ''; foreach (explode('/', $data[2]) as $name){   if (isset($foods[$name])) { // 定義にあればリンクを貼る     $url = 'food.php?name=' . urlencode($name);     $text .= '<a href="' . $url . '">' . $name . '</a>/';   } else {     $text .= $name . '/';   } } $text = rtrim($text, '/');//リンクを貼った材料リスト文字 -- food.php ( 材料詳細ページ <?php $foods = include 'ini/foods.php'; $name = empty($_GET['name']) ? '' : $_GET['name']; if (!isset($foods[$name])) {  exit; } $food = $foods[$name]; $image = 'images/' . $food[0] . '.gif';//画像は規則性を持たせる $message = $food[1]; print $name . '<br />'; print '<img src="' . $image . '" /><br />'; print $message . '<br />';

関連するQ&A

  • レシピサイト

    いつもお世話になってます。 今回お聞きしたいことは cooking.phpにはCOOKINGテーブルのデータが表示されるんですが、 玉ねぎを 詳細ページに飛ばしたいのです。 food_detail.php?id=1(foodテーブル表示) データ入力にはPHPMYADMINを使用してます。 まずcookingテーブルの構造は idはauto_incrementを使用してます |id|img |name     |ingredient| ingredient2|ingredient3| ....etc   1   ../image/curry.jpg カレーライス     玉ねぎ      カレー粉     鶏肉    2   ../image/curry2.jpg 夏野菜ドライカレー 玉ねぎ      カレー粉     鶏肉    3  ../image/curry3.jpg きのこカレー 玉ねぎ カレー粉 マッシュルーム 次にfoodテーブルの構造は |id|img |name  | detail |   1   ../image/0001.jpg   玉ねぎ  たまねぎには・・・・・ 2   ../image/0002.jpg  カレー粉   カレー粉には・・・・・ 3  ../image/0003.jpg    鶏肉 鶏肉には・・・・・・ とこんな感じになってます 私が考えたのは cookingテーブルの ingredient に  <a href="http://example.com/food_detail?id=1>玉ねぎ</a>と入力したらいいのかなと?思ったんですけど・・・ もっとシンプルなやり方はないんでしょうか? 説明が下手で申し訳ないです。 ご教授よろしくお願い致します

    • ベストアンサー
    • MySQL
  • PHPとCSVで簡易データベースなるものを作りたいのです

    私はプログラミングなどに関しては全くの素人なのですが、 今回こちらのサイト様(http://affiliate.aki-f.com/prog/cat/cat9.html)を参考にして簡易データベースなるものを作ろうと思っています。 ですがやはり付け焼刃の知識ではどうにも先が見えなく困っています。 今回が初投稿なのですが何卒宜しくお願いいたします。 以下に各ソースと質問を書かせていただきます。 ------------------------CSVの中身------------------------ 商品カテゴリー,商品タイトル,値段,発売年,簡単な説明,おすすめ度 商品カテゴリー,商品タイトル,値段,発売年,簡単な説明,おすすめ度 商品カテゴリー,商品タイトル,値段,発売年,簡単な説明,おすすめ度 ~同じ用に数十件ほど~ 商品カテゴリー,商品タイトル,値段,発売年,簡単な説明,おすすめ度 ------------------------------------------------------------- 同じカテゴリー、発売年、おすすめ度などで絞込み表示するような形を想定しています。 ------------------------------INDEX.PHP------------------------ <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html lang="ja"> <head><meta http-equiv="Content-Type" content="text/html; charset=EUC-JP"></head> <body> <table> <tbody> <?php $Data=file('list.csv'); for($i=1;$i<sizeof($Data);$i++){ $line=explode(",",$Data[$i]) ?> <tr> <td><a href="test.php?id=<?=$line[0]?>"><?=$line[0]?></a></td> <td><a href="test.php?id=<?=$line[1]?>"><?=$line[1]?></a></td> <td><a href="test.php?id=<?=$line[2]?>"><?=$line[2]?></a></td> <td><a href="test.php?id=<?=$line[3]?>"><?=$line[3]?></a></td> <td><a href="test.php?id=<?=$line[4]?>"><?=$line[4]?></a></td> <td><a href="test.php?id=<?=$line[5]?>"><?=$line[5]?></a></td> </tr> <?php } ?> </tbody></table></body></html> ---------------------------------------------------------------- index.phpでは全商品のリストが表示されます。 ---------------------------test.php----------------------------- <?php $id=$_GET['id'] ?> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html lang="ja"> <head><meta http-equiv="Content-Type" content="text/html; charset=EUC-JP"></head> <body> <table> <tbody> <?php $Data=file('list.csv'); for($i=0;$i<sizeof($Data);$i++){ $line=explode(",",$Data[$i]); if($line[/*質問1*/]==$id){ ?> <tr> <td><a href="test.php?id=<?=$line[0]?>"><?=$line[0]?></a></td> <td><a href="test.php?id=<?=$line[1]?>"><?=$line[1]?></a></td> <td><a href="test.php?id=<?=$line[2]?>"><?=$line[2]?></a></td> <td><a href="test.php?id=<?=$line[3]?>"><?=$line[3]?></a></td> <td><a href="test.php?id=<?=$line[4]?>"><?=$line[4]?></a></td> <td><a href="test.php?id=<?=$line[5]?>"><?=$line[5]?></a></td> </tr> <?php } } ?> </tbody></table></body></html> --------------------------------------------------------------- index.phpで選択された項目で絞り込んで表示するページです。 質問1 上記の、if($line[~]==$id)の、~の部分に例えば0と入っているなら商品カテゴリーを選択した時に同じカテゴリーで絞り込み表示するわけなのですが、これだけでは当然他の項目を選択しても何も表示されません。なので、~の部分に全ての$lineを巡回させるような命令を書ければ全項目での絞り込みに対応できるんじゃないかなと、素人ながらに思っているのですがどうでしょうか?またその方法、もしくは他の解決策をご教授願えますでしょうかm(_ _)m あと、index.phpとtest.phpを1つにまとめてしまえることはできるでしょうか?私としてはできるならそうしたいのです。が、うまくできませんでした。 どこか変なことを口走っているかも知れませんがご容赦ください。 宜しくお願いします。

    • 締切済み
    • PHP
  • phpで読み込んだcsvが文字化けします

    PHPでCSVよ読み込んで名簿を作っています。 出力まではうまくいったのですが、なぜか一字だけ文字化けしてしまいます。(「務」→「冶」になってしまいます) 普段あまりプログラムはしないので、原因がわからず困りはてております。よろしくお願いいたします。 PHP部分の記述は以下になります。 ――――――――――――――――――――――――――――――――――― <?php $fname = "csv/meibo.csv"; $file = fopen($fname, "r"); $nowrap = "nowrap=\"nowrap\""; $tcent = "class=\"center\""; $tbg = "class=\"even\""; while (list($name, $post, $add, $add2, $tel, $http, $url, $mail) = fgetcsv($file, 1000, ",")){ $name = strtr($name, "﨑", "崎"); $add2 = strtr($add2, "﨑", "崎"); $tline ++; if($tline % 2 == 0){ echo "<tr $tbg>\n"; }else{ echo "<tr>\n"; } echo "<td $nowrap>$name</td>\n"; echo "<td $tcent>$post</td>\n"; echo "<td>$add<br />$add2</td>\n"; echo "<td $tcent>$tel</td>\n"; if($http == "http://"){ echo "<td $tcent><a href=\"$http$url\" target=\"_blank\"><img src=\"img/common/img_hp.gif\" alt=\"HPへ\" width=\"16\" height=\"16\" /></a></td>\n"; } else { echo "<td $tcent>&nbsp;</td>\n"; } echo "<td>$mail</td>\n"; echo "</tr>\n"; } fclose($file); ?> ――――――――――――――――――――――――――――――――――― PHP4を利用。 .phpのcharsetはShift_JISで、同じくShift_JISで保存しています。 CSVファイルはエクセルで作りShift_JISで書き出しています。

    • ベストアンサー
    • PHP
  • <td> 内のテーブルを上寄せにするには?

    すみません教えていただけますか? 初心者です。 このまま表示するとTABLE A の直ぐ下のテーブルが中央に来てしまいます。 上寄せにしたいのですが、どのようにすればよいでしょうか? よろしくお願いします。 <table width="960" border="1"> <tr> <td width="160"> <!-- TABLE A --> <table width="160" border="1"> <tr> <td> <a href="" ><img src="subMenu.gif" /></a> </td> </tr> <tr> <td> <a href="" ><img src="subMenu.gif" /></a> </td> </tr> <tr> <td> <a href="" ><img src="subMenu.gif" /></a> </td> </tr> <tr> <td> <a href="" ><img src="subMenu.gif" /></a> </td> </tr> <tr> <td> <a href="" ><img src="subMenu.gif" /></a> </td> </tr> </table> </td> <td width="800" height="1200" border="1"> &nbsp; </td> </tr> </table>

    • ベストアンサー
    • HTML
  • スタイルシートに関しての質問です。margin0 padding0と指定し居るのに、変なスペースが入ってしまいます。。。

    スタイルシートで、 *{ padding:0; margin:0; } img{ padding:0; margin:0; } と指定しているのですが、なぜか画像でへんなスペースが入ってしまいます。どうしてでしょうか? ソースは下記の通りです。 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <head> <META http-equiv=Content-Type content="text/html; charset=Shift_JIS"> <META content="新築マンション,賃貸,敷金ゼロ,礼金ゼロ,ペット可,内覧可能,水商売可,風俗可,東京,都内,マンション,アパート,一戸建, name=keywords> <title>株式会社</title> <link href="css/mainstyle.css" rel="stylesheet" type="text/css"> </head> <body> <div id="wapper"> <div id="head"><img src="img/forward_rogo.gif" width="250" height="56" border="0" ></div> <div id="sidememu"> <table width="150" border="0" cellpadding="0" cellspacing="0" > <tr> <td><a href="#"><img src="img/menu1.gif" width="150" height="40" border="0"></a></td> </tr> <tr> <td><a href="#"><img src="img/menu13_h.gif" width="150" height="40" border="0"></a></td> </tr> <tr> <td><a href="#"><img src="img/menu5_h.gif" width="150" height="40" border="0"></a></td> </tr> <tr> <td><a href="#"><img src="img/menu4.gif" width="150" height="40" border="0"></a></td> </tr> <tr> <td><a href="#"><img src="img/menu11_h.gif" width="150" height="40" border="0"></a></td> </tr> <tr> <td><a href="#"><img src="img/menu10_h.gif" width="150" height="40" border="0"></a></td> <tr> <td><a href="#"><img src="img/menu3.gif" width="150" height="40" border="0"></a></td> <tr> <td><a href="#"><img src="img/menu9_h.gif" width="150" height="40" border="0"></a></td> <tr> <td><a href="#"><img src="img/menu6_h.gif" width="150" height="40" border="0"></a></td> <tr> <td><a href="#"><img src="img/menu8_h.gif" width="150" height="40" border="0"></a></td> </tr> </table> </div> <div id="main"> <div id="flash-a"> <img src="img/dammy.gif" width="650" height="150" border="0"> </div> <div id="main-1"> <img src="img/top_1.gif" width="650" height="40" border="0"> </div> </div> </div> </body> </html> cssは、 /* CSS Document */ *{ padding:0; margin:0; } img{ padding:0; margin:0; } body{ margin-left:auto; margin-right:auto; text-align:center; } #wapper{ width:820; } #head{ margin-top:20px; text-align:left; border-bottom:2px #000099 solid; } #sidememu{ margin-top:20px; background-color:#F00; float:left; } #main{ margin-left:10px; margin-top:20px; float:right; } です。すみません。教えてください!

  • PHPでCSVファイルを部分的に読込む方法

    CSVファイルに入力した項目を、PHPで部分的に読込むことは可能でしょうか? 私が作成しているWebサイトには、次のようにテーブル機能を使って、商品名と金額を記載しているページがあります。 <table class="table1" width="100%" cellspacing="0" cellpadding="0" border="0"> <tr> <td>メニュー1<img src="http://1-1.gif"><br>和食<br>てんぷら<br><span class="red">500円</span></td>  <td>メニュー2<img src="http://1-2.gif"><br>洋食<br>ステーキ<br><span class="red">500円</span></td>  <td>メニュー3<img src="http://1-3.gif"><br>中華<br>ラーメン<br><span class="red">500円</span></td> </tr> </table> このテーブルには、「メニュー1」、「和食」、「てんぷら」、「500円」が入力されておりますが、この部分を次のようなCSVファイルから読込むことは可能でしょうか? メニュー1,和食,てんぷら,500円 メニュー2,洋食,ステーキ,500円 メニュー3,中華,ラーメン,500円

    • ベストアンサー
    • PHP
  • javascriptで画像の移動

    お世話になります。 画像をクリックすると、クリックした画像のaltの内容をinput type="text"に表示する。 左に移動ボタン押下でクリックされた画像を1つ左に移動、 右に移動ボタン押下で1つ右に移動する。 1.移動ボタン押下で移動させるにはどうすればよいでしょうか? ※HTMLはtableタグでなくてもよいと思っております。 2.クリックした画像が分かるようにしたいのですが 何かいい方法などありますでしょうか? <html> <head> <script> var clickId =""; function down(id){ clickId = id; document.getElementById("comment").value = document.getElementById(id).alt ; } function move(d){ } </script> </head> <body> <table> <tr> <td id="p1"><a href="#" onClick="down('1');"><img id="1" alt="alt1" src="1.gif" /></a></td> <td id="p2"><a href="#" onClick="down('2');"><img id="2" alt="alt2" src="2.gif" /></a></td> <td id="p3"><a href="#" onClick="down('3');"><img id="3" alt="alt3" src="3.gif" /></a></td> </tr> <tr> <td align="left"><a href="#" onClick="move('1');"><img alt="左に移動" src="L.gif" /></a></td> <td align="right"><a href="#" onClick="move('0');"><img alt="右に移動" src="R.gif" /></a></td> </tr> </table> <input type="text" id="comment" /> </body> </html>

  • CSVデータを使ったページングとソート

    phpをやり始めて3ヶ月くらいですが、高度な事がまだまだわかりません。どなたかお知恵を拝借願えないでしょうか? fgetcsvを使って一覧表示をしidからそのデータの詳細をsyousai.phpへ送って表示するようにしています。 この一覧表示にページングとソート機能をつけたいのですが、どうやったらよいかわかりません。 <? $fname = "list.csv"; $file = fopen($fname, "r"); while (list( $data0, $data1, $data2, $data3, $data4) = fgetcsv($file, 1000, ",")) { ?> <table> <tr> <td> <form action="syousai.php" method="get" name="code"> <a href="syousai.php?id=<? echo $data0;?>" name="id">詳細</a> </form> </td> <td>番号:<? echo $data0;?></td> <td>名前:<? echo $data1;?></td> </tr> </table> <? } ?> <? fclose($file); ?> と、言うようなソースです。 こんなやり方でいいのかも不明ですがこの中にページングとソートの機能を追加したいと思っています。

    • ベストアンサー
    • PHP
  • width、heightを取得したい

    dbからデータを読み込み、データの量によってテーブルのサイズが変わります。 img.gifのwidth、heightを何らかで取得し$aと$bに渡すことは可能でしょうか。 ┌――――┬――――┐ │img.gif │inc.php │ └――――┴――――┘ <table> <tr> <td> <img src=./img.gif width=$a height=$b> </td> <td> <? include ('./inc.php'); ?> </td> </tr> </table> img.gifは四角の画像です。

    • ベストアンサー
    • PHP
  • IEとFirefoxでリンクの「hover」の状態が異なります。

    IEとFirefoxでリンクの「hover」の状態が異なります。 メニューに画像を使っているのですが、IEとFirefoxでは「hover」時のbackground-colorのかかり方が異なります。 IEだと画像全体にかかるのですが、Firefoxでは画像の下の方だけにしか色がつきません。 画像をテキストに変更すると、テキスト全体にきちんとかかります。 画像に問題があるのでしょうか? どうすれば解決するのか教えてください。 以下にメニューのソースを載せておきます。 (HTML) <table width="100%" height="40" cellspacing="0"> <tr> <td width="100" ><a href="page1.html"><img src="menu1.gif" border="0" alt=""></a></td> <td width="100" ><a href="page2.html"><img src="menu2.gif" border="0" alt=""></a></td> <td width="100" ><a href="page3.html"><img src="menu3.gif" border="0" alt=""></a></td> <td width="100" ><a href="page4.html"><img src="menu4.gif" border="0" alt=""></a></td> <td width="100" ><a href="page5.html"><img src="menu5.gif" border="0" alt=""></a></td> <td width="100" ><a href="page6.html"><img src="menu6.gif" border="0" alt=""></a></td> <td width="100" ><a href="page7.html"><img src="menu7.gif" border="0" alt=""></a></td> </tr> </table> (CSS) a:hover { background-color: #000000;} どうぞよろしくお願いします。

    • ベストアンサー
    • HTML

専門家に質問してみよう