http://cartown.jp/
のような?carid=hogeでCSVのデータを読込み表示させたいと思っております。
方法はhttp://blog.loaferz.com/?eid=255653のサイトを参考にしてみたのですが
なぜかCSVのデータが表示されません。
phpは始めたばかりで自信がないのですがdata.csvの内容は
以下のようになっております。
A B C D E F
---------------------------------------------------------------
1 | 1 車種名1 価格1 走行距離1 年式1 車検1
2 | 2 車種名2 価格2 走行距離2 年式2 車検2
・・・以下同様
サイトの説明を見ると
>商品1のリンクをクリックしたときは、商品1のデータがテンプレートに渡され、上の場合だと$data[1]の商品名がprintされます。
とあるのですがお恥ずかしながらどこがおかしいのかが全くわからずです。
是非アドバイスなどお願い致します。
No.6ベストアンサー
- 回答日時:
$image_file_path = "car/car$data[0]/op"; の$data[0]が、10で、
$ataiが10で、$iが1のときは
> $file = sprintf("%s/%010d%03d.gif", $image_file_path, $atai, $i );
の結果の、$fileは
"car/car10/op/0000000010001.gif"
となります。
しかし、$data[0]は、1なのに、$ataiは、10になっているのに、$data[0]は1にずれていれば、当然狂ってきますし、
car9のためのフォルダーにcar10の画像を入れているとか
だと、それもおかしくなります。
ですので、デバックの手順としては、この$fileの中身がどうなっているか
echo "\$file = $file <BR>";
などど、てみて、変数にきちんとセットされているかを確かめます。
そして、そのファイルが実際に存在しているか
ブラウザのURL欄に直接、記述してみて表示されるかを確認したり、
ftpソフトなどで、ファイルの存在や、サイズやパーミッションを
確認してみます。
表示されないというだけで、闇雲にプログラムだけを疑って
テストするのではなく、多角的に解析するようにしなければ
解決への糸口が見つかりませんので。
最後までご丁寧に教えて頂きまして本当にありがとうございます。
テストを繰り返した結果おかげ様で思うような仕様にする事が
できました。
まだ始めたばかりではありますがこれからも勉強し頑張って
いきたいと思います!
No.5
- 回答日時:
・文字列は" "か ' ' で括ります。
・絶対パスは / で始まります。
・このの表示の仕様のためインデントのためのブランクを全角で記述していますが、全角ブランクは削除してご自分でインデントされてください
それから・・・これは、お気を悪くされないで頂きたいのですが、
PHPを始めたばかりということで、仕方がないところもあるのかもしれませんが、
PHP以前に、プログラムそのものの、かなり基本的なところが理解されていないように見受けられます。
ご自分で解決する努力をしないまま、このような掲示板のやりとりだけで、そのシステムを全て開発することは不可能ですし、
結果として、このような開発体制は、あなたやシステムの利用者にとって不幸なことになります。
ですので、ここに上げたソースは、あくまでもアルゴリズムのアイデア程度として受け止めて
そのままコピーしないで、どういうアルゴリズムなのか命令の1つづつを
確認し、納得しながら
ご自分のシステムの仕様にあわせて、コーディングしなおされるのが
よいかと思います。
そうやって、試行錯誤することで、皆さん自分の力にされておられますから。
この回答への補足
お返事ありがとうございます。遅くなってしまい申し訳ございません。
あれから自分なりに調べてテストを繰り返した結果なんとか
動作させることまでたどり着きました!
>それから・・・これは、お気を悪くされないで頂きたいのですが、・・・
始めたばかりで知識もなく高すぎるハードルでした。仰る通りで
返すお言葉もありません。
最後にどうしてもわからないことがあるのですが・・・
?carid=1であれば画像の名前を0000000001001.gif
?carid=2であれば画像の名前を0000000002001.gif
・・・
?carid=9であれば画像の名前を0000000009001.gif
の連番で画像は表示されるのですが?carid=10~は画像が
表示されません。
画像の名前を
0000000010001.gif
とし表示されなかったので0を足したり消したりしてみたのですが
10以上の画像は全く表示されません。
※オプション画像のフォルダはroot/car/carここにcarid/op
ソースは以下の通りです。
$max = 100;
$image_file_path = "car/car$data[0]/op";
$doc_root_path = "/home/httpd/vhosts/hoge.com/httpdocs/op";
for ( $i = 1 ; $i < $max ; $i++ ) {
$file = sprintf("%s/%010d%03d.gif", $image_file_path, $atai, $i );
if ( file_exists("$doc_root_path/$file") ) {
print "<img src=\"$file\" width=\"17\" height=\"17\" alt=\"\" /> ";
} else {
break;
}
}
No.4
- 回答日時:
> CSVに<img src...>と表示したい画像のパスをべた書きすれば
> 表示されるとは思うのですがオプションが多い時などは結構な
> 手間に感じてしまいます。
> 効率のいい方法としてどのような方法があるのでしょうか?
規則性があるなら、変化するところだけCSVに書いて、固定部分はphpで決め打ちにするとか、
CSVには画像ファイル名を書かずに、用意する画像ファイル名に規則性をもたせて(たとえばベースとなる番号+シリアル番号)そのファイルが存在すれば表示するようにするとか。
後者だと
$max = 100;
$image_file_path = 画像ファイルをおくフォルダー名;
$doc_root_path = サーバー上のDocumentRootとなる絶対パス;
for ( $i = 1 ; $i < $max ; $i++ ) {
$file = sprintf("%s/%010d%03d.jpg", $image_file_path, $atai, $i );
if ( file_exists("$doc_root_path/$file") ) {
echo "<img src=\"$file\" border=\"0\">";
} else {
break;
}
}
という感じかな。
この場合、1番用の画像ファイルとして、
0000000001001.jpg
0000000001002.jpg
0000000001003.jpg
を該当するフォルダーに入れておけばそれが表示されます。
(gifやpngもあるなら、それなりにアルゴリズムの修正は必要ですが)
この回答への補足
お返事ありがとうございます。
画像をおくフォルダ名を./img/sold/とし
絶対パスをhome/httpd/vhosts/hoge.com/httpdocsとし
以下のように試してみたのですが
$max = 100;
$image_file_path = ./img/sold/;
$doc_root_path = home/httpd/vhosts/hoge.com/httpdocs;
for ( $i = 1 ; $i < $max ; $i++ ) {
$file = sprintf("%s/%010d%03d.jpg", $image_file_path, $atai, $i );
if ( file_exists("$doc_root_path/$file") ) {
echo "<img src=\"$file\" border=\"0\">";
} else {
break;
}
}
Parse error: syntax error, unexpected '@'
とエラーがでてしまいます。
$file = sprintf("%s/%010d%03d.jpg", $image_file_path, $atai,
ここにエラーがあるとなっているのですが%でしょうか?
No.3
- 回答日時:
No.1です。
No.2の方も書かれていますが、CSVファイルを
テキストエディターで開いてみて
きちんとカンマ区切りの構造になっているかを確認してみて下さい。
それと、
http://blog.loaferz.com/?eid=255653
のPHPにはコーディングミス(というか説明用に記述したときの修正漏れ)があるようです。
result.php?product=1
でリンクしているのに、$atai でそれを参照してます。
$atai = $_GET['product'];
の一行を
をresult.php の <?php の直後にいれてみて下さい。
この回答への補足
お返事ありがとうございます。
おかげ様で何とか表示できるようになりました!
ひとつアドバイスを頂きたいのですが・・・
車の詳細情報のページに行くと下部にオプションの画像が
表示されます。(もちろん車によって違います。)
CSVに<img src...>と表示したい画像のパスをべた書きすれば
表示されるとは思うのですがオプションが多い時などは結構な
手間に感じてしまいます。
効率のいい方法としてどのような方法があるのでしょうか?
また、これはサイトの仕様なのですが値段の表示は
<td>$data{1}</td>となり<td>100万円</td>となるのですが
車が売れた場合は
<td class="soldout"><img src...></td>と価格が表示されている
画像に変更になります。
ここの切り替えがスマートにできると素晴らしいのですが
このようなことは可能でしょうか?
No.2
- 回答日時:
情報不足ですね。
プログラムソースはhttp://blog.loaferz.com/?eid=255653から変更してますか?
変更してるようでしたら、ソースも公開してください。
CSVファイルも
> A B C D E F
>---------------------------------------------------------------
>1 | 1 車種名1 価格1 走行距離1 年式1 車検1
>2 | 2 車種名2 価格2 走行距離2 年式2 車検2
のような構造より、実際の内容を貼り付けてください。
No.1
- 回答日時:
読み込もうとしているCSVファイルと言われているファイルが、
実際にはCSVフォーマットになってないので、fgetcsv() では正常に読み込めないからでしょう。
準備するデータファイルのフォーマットを変更するか
fgetcsv()を使わずに、このフォーマットのままでも読めるように、プログラムするかのどちらかになるでしょう。
この回答への補足
お返事ありがとうございます。
.xlsで一度保存したものを
http://www.vector.co.jp/soft/win95/business/se40 …
のフリーソフトで.csvに変換しているので大丈夫かとは
思うのですが・・・
また、ソースの変更は一切しておりません。
サンプルなどがあればダウンロードし研究してみたいと思い
探してみたのですがなかなか見つからずで質問させて頂きました。
宜しくお願い致します。
参考サイトに基づきcsvのデータは以下の通りです。
| A | B | C |
---------------------------------
1 | 1 商品1 product1.jpg
2 | 2 商品2 product2.jpg
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- PHP htmlで複数の個数入力欄を表示させるには 1 2022/09/20 03:11
- Visual Basic(VBA) vbaマクロについて 次のようなマクロを組みたいです。 自分は初心者なので全くわかりません。 詳しく 8 2023/05/18 18:38
- その他(プログラミング・Web制作) データ解析ソフトRでのファイル入力read.csvがエラーになります 7 2022/03/27 22:11
- HTML・CSS HTMLソースの質問 3 2022/07/28 13:29
- Visual Basic(VBA) vbaマクロについて シート1のA列にある商品コードが シート2のB列にある商品コードに該当する場合 2 2023/05/17 13:41
- スポーツサイクル 初心者クロスバイク購入でどのメーカーの商品がいいか悩み中 年齢50代 身長170 股下72 体重75 6 2023/08/27 21:05
- Visual Basic(VBA) vbaマクロについて 【1.csv】をもとに【商品.csv】に有るものを【有り.csv】として名前を 1 2023/05/18 07:58
- Excel(エクセル) PowerQueryに詳しい方教えてください(Office365) 1 2022/07/24 21:11
- Visual Basic(VBA) VBAコードで質問があります 2 2022/10/20 15:27
- Visual Basic(VBA) VBAで質問があります 1 2022/10/19 10:32
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
FirefoxでFormのfileでファイル...
-
PHPでテキストファイルかどうか...
-
shift-jisでfgetcsv
-
2つの画像ファイルが異なるファ...
-
phpメールフォームから送信・登...
-
onedrive にexcelファイルをア...
-
VBSの「MsgBox」について
-
こちらはただの直列処理ですか?
-
複数ファイルを連続でダウンロード
-
パースエラーとは?
-
リンク先を隠す方法はないでし...
-
拡張子php画像をjpg画像等に変...
-
図に示す階層構造で,現在のデ...
-
C# Excelファイルへの画像挿入。
-
PHPとCSVで簡易データベースな...
-
Subversionで、ファイルをリネ...
-
ワードプレス、Contact Form 7...
-
include先でのinclude元の変数...
-
PHPのif文でその処理を途中で抜...
-
PHPでネットワークドライブのop...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
値の取り出し方について教えて...
-
2つの画像ファイルが異なるファ...
-
PHPでFilename cannot be empty...
-
ファイル名は、数字の「0」(...
-
stat failed
-
ファイルの行数取得
-
TSVファイルをCSV形式に変換したい
-
日本語のファイルが開けない
-
XMLのロードに失敗する
-
別のサーバにあるファイルの存...
-
PHP+MySQL でのcsvファイルイン...
-
日本語のデータが文字化けをし...
-
日本語が文字化けしないよう読...
-
PHPでの別のサーバーのテキスト...
-
phpメールフォームから送信・登...
-
PHP、ファイルロックの失敗で消...
-
PHP5のsimplexml_load_fileで取...
-
PHPでAPI 出力はCSVを取得する...
-
PHPでテキストファイルかどうか...
-
PHPで特定の文字列のみ抽出し、...
おすすめ情報