トップページ⇒php
1001コメント375KB

【PHP】くだらねぇ質問はここに書き込みやがれpart7

■ このスレッドは過去ログ倉庫に格納されています
00019662005/07/12(火) 01:47:09ID:qOoYFCn7
PHPに関するくだらない質問用すれです。
ここなら本スレで回答のないお前の下らない質問に回答があるかも知れません。
次スレは>>970あたりが建てて下さい

・過去スレ
【PHP】くだらねぇ質問はここに書き込みやがれ
http://pc5.2ch.net/test/read.cgi/php/1099322141/
【PHP】くだらねぇ質問はここに書き込みやがれpart2
http://pc5.2ch.net/test/read.cgi/php/1105218084/
【PHP】くだらねぇ質問はここに書き込みやがれpart3
http://pc5.2ch.net/test/read.cgi/php/1107780435/
【PHP】くだらねぇ質問はここに書き込みやがれpart4
http://pc8.2ch.net/test/read.cgi/php/1110697712/
【PHP】くだらねぇ質問はここに書き込みやがれpart5
http://pc8.2ch.net/test/read.cgi/php/1114787573/
【PHP】くだらねぇ質問はここに書き込みやがれpart6
http://pc8.2ch.net/test/read.cgi/php/1117945031/

立ってなかったんで>>970に近かった自分が勝手に立てちゃいました。
0554nobodyさん2005/07/27(水) 16:56:23ID:???
>>553
どのようにやるんでしょうか?
サーバの時計を変えてcopyとか…?
0555nobodyさん2005/07/27(水) 16:58:49ID:???
phpはスタイルシートを吐き出すことも出来るんですか?
0556nobodyさん2005/07/27(水) 17:01:30ID:???
>>555
ファイル名を.cssにして吐き出せば出来るだろ
0557nobodyさん2005/07/27(水) 17:14:20ID:???
>556
ビミョーな答えだね

>555
ヘッダでCSSのMIMEタイプを指定
0558nobodyさん2005/07/27(水) 17:21:40ID:???
pukiwikiのCSS見るといいかもね
0559nobodyさん2005/07/27(水) 17:31:27ID:???
>>551
なんと
05605592005/07/27(水) 17:34:03ID:???
ミスったorz

こんな便利な機能がApacheに付いていたとは!
早速試したところ、PHPが速かったりCが速かったりでした。
ありがとうございました。
0561nobodyさん2005/07/28(木) 01:28:15ID:???
階層化したカテゴリに含まれる情報を、選択したカテゴリだけ展開して表示するようなプログラムを書いています。
ひとまず、思った通りのものが書けたのですが必然的にループを入れ子で多用することになりました。
こういったパターンの物は書いたのが初めてなのですが、$iなんかのカウント用の変数をevalで、変数名に埋め込んでループしても上書きされない変数名の変数を生成したりしてるんですが、方法としてこれは変なのでしょうか?
問題としているのは以下の点です。
ループの入れ子(さらにその中でクエリを生成してDBに検索をかけてます)
ループ内で、カウント用の変数をevalでくっつけた変数を作ることを多用。

あいまいなまま、現在まで来てしまったのですが、whileとfor、どちらでも同じことが出来るのですが簡単にいってこの二つを使い分ける基準はなんでしょうか?
また、今回のケースはどちらをつかうのが適しているでしょうか?
0562nobodyさん2005/07/28(木) 01:39:42ID:???
>>561
SQLとリレーションDBを覚える方が適している
0563nobodyさん2005/07/28(木) 01:47:32ID:???
>>562
もちろん、自分なりに出来る範囲ですが正規化したDBを連携させてクエリを実行しております。
自分のかいたものの中では複雑な方なんで、このスクリプトをレンタル鯖に置いたら怒られないかなとか心配してるんです。
もちろん、ローカルの鯖では快適に動いてるんですが、なんせループを入れ子にしてそこで、クエリを生成して変数を作って、というプロセスが入れ子になってるんでこんなのあり?とか不安になってしまうんですよ。
0564nobodyさん2005/07/28(木) 02:51:26ID:/rx2yHMT
require_once()について質問ですが
この関数、Javaのimport宣言とは異なり、
PHPを呼び出したいとき、
現在のPHPファイルのディレクトリと該当する
PHPファイルのディレクトリとの位置関係を
気にしなければならない難点がありますね。

そこでディレクトリの位置関係を気にせずに
Javaのimport宣言のように
require()を使いたい各PHPファイルだけが
必要なPHPファイルときだけrequire()を呼び出すように
したいものです。

require.inc の中に必要なPHPファイルのrequire_onceを
全部書くというやりかたもありますが
それだとPHPファイルの数が増えれば増えるほど
見通しが悪くなりコードの解析が困難になります。

Javaのようにpackage(namespace)の概念がありディレクトリ名がパッケージ名
になるようなものがPHP5にもあればいいのですが
残念なことにnamespaceも不採用になったため思うようにいきません。
05655642005/07/28(木) 02:52:09ID:???
>564からの続き

私がやりたいことはこういうことです。
require_onceを各場所はrequire.incのようなファイルに一ヶ所に各のではなく
各phpファイルに必要なときのみ記述するように分散させたい。
例として、
  main.php がdir1/a.php, dir2/subdir1/b.phpを必要としている場合は
  そのrequire_onceをmain.phpの中に書く。

  dir1/a.phpがx.php, dir2/y.php, dir2/subdir1/b.phpを必要としている場合は
  require_onceの重複にかかわらずそのrequire_onceをmain.phpの中に書く。

環境の移行に即座に耐えられるようにするため絶対パスの変更を強いるような真似は
極力避けたいため、各require_onceのパスは相対パスにしたい。
main.phpがあるところを基準にディレクトリとしディレクトリ名は無しにしたい。


    以上を実現したいのですが可能でしょうか?


get_cwd()を使って
require_once get_cwd().'/dir1/a.php';
なんてことをやりましたがプログラムを実行するカレントディレクトリを変えると動かなかったのでやめました。
require_once getdir(get_realpath(__FILE__)).'/dir1/a.php';
も使ってみましたが、__FILE__を指す場所というのが、__FILE__を記述したファイルパスしか
指定できなかったため、この方法も断念せざるを得ませんでした。
0566nobodyさん2005/07/28(木) 03:17:47ID:???
普通にinclude_pathでも出来ると思うけど、それがいやならこんな感じかな。
config-hostspecific.inc
define("PACKAGE_DIR","/path/to/package");

main.php
require_once(PACKAGE_DIR."dir1/x.php");
require_once(PACKAGE_DIR."dir2/.....

javaだってCLASSPATHを設定するんだし、
全自動はトラブルのもとだとおもうよ。
0567nobodyさん2005/07/28(木) 03:19:00ID:???
>>565

include_pathを変更するという方法はどう?

-- config.php --
<?php
// config.phpが置かれているディレクトリのパスを取得
$lib_path = dirname(__FILE__);

// インクルードパスに設定するパスのリスト
$include_path_list = array(
$lib_path, // 追加するパス
ini_get('include_path'); // 既存のパス
);

// インクルードパスを変更
ini_set('include_path', implode(PATH_SEPARATOR, $include_path_list));
?>
---------------------

このconfig.phpをすべてのスクリプトの先頭で必ずrequire_onceするようにすれば、
config.phpの置かれているディレクトリから相対で指定できるようになる。

config.phpをrequireする部分はどうしても、___FILE___から相対パスを指定するか、
絶対パスを指定するなどになってしまうけど。
その変は仕方ないよね。
0568nobodyさん2005/07/28(木) 03:38:52ID:???
>>561
まず、テーブル設計(というかSQLか)に関して。
・階層の階数が固定なら outer joinで。(SQL92だから大抵のDBで使えるかと)
・固定じゃないなら、そのDBで再帰SQLを扱えるならそれを、扱えない場合でも拡張機能をうまく使えばできる場合もあり。
 (そのDBのメーリングリストで議論されていることが多い。再帰SQL、recursive sql、親子、ツリー などをキーワードに)
・テーブル設計に手を加える。いろいろ方法があるみたいだけど、例えば
 ttp://www.sitepoint.com/article/hierarchical-data-database あたりが参考になるかな?
・2chのDB板のモデリング関係のスレで幾つか見た気がする。
この辺りのお話で分からない事があればDB板へ。

で、上のような事は一切やらないとしてPHPの話に戻ると、オイラはevalを使うのは嫌いなので再帰関数を使う。
0569nobodyさん2005/07/28(木) 03:42:12ID:???
>>561
>ループを入れ子で多用
>カウント用の変数をevalで
このあたりで糞プログラムと断定。
普通はこんなことにはならないはず。
0570nobodyさん2005/07/28(木) 07:33:33ID:???
>>561
ループでクエリを発行するのはあまり良い方法ではありませんね
0571nobodyさん2005/07/28(木) 10:40:18ID:???
いまだに header() の使い方がよくわからない。
無くてもいいの?
0572軟式PHP2005/07/28(木) 10:44:33ID:???
>>571
使わないなら無くていいじゃん。
俺はかなり必要だけど。
0573nobodyさん2005/07/28(木) 10:44:55ID:???
>>571
よくわからない限りは無くていい。
05745712005/07/28(木) 10:56:26ID:???
>>572 , >>573
そんなもんかね。しばらくは触れないでおくことにする。
トンクス。
0575nobodyさん2005/07/28(木) 11:02:56ID:???
会員制のサイトを作ろうと思う。
認証方法はどういったものがありますか?
0576nobodyさん2005/07/28(木) 11:28:27ID:???
>>571
特に指定しなくてもphpの中の人が適当に付けてくれている。
それじゃあ対応できない時に使えばよい。
勉強したくなったら RFC 1945、RFC 2616あたりを読めばよいかと。(日本語訳は無いっぽいけどガンガレ)

>>575
質問が曖昧で本当は何を知りたいと思っているのかよく分からんが、
でっかい分類の仕方だと、1. 生パスワードと照合 2. パスワードに一方向性ハッシュを適応したものと照合 かな。
0577nobodyさん2005/07/28(木) 16:09:03ID:???
A〜Zをばかちょんな方法を使わないで表示させるのに
for ($c = 'A'; $c <= 'Z'; $c++) {
  print $c.' ';
}
とやったのですが
なぜか
A B C ・・・ X Y Z AA AB AC ・・・ YX YY YZ
と676回ループします。

条件式をから=を取って $c < 'Z' としたら
A〜Yまでの25回のループで終わるのですが
これはナゼでしょうか?
バグですか?

PHP 4.3.10
0578nobodyさん2005/07/28(木) 16:31:26ID:???
>>577
なんかおもしろいね。症状の説明はできないけど正しく動かすにはこう書く。
症状の説明はどなたかスパマンが現れるまで待たれよ。
for ($c = ord('A'); $c <= ord('Z'); $c++) {
 print chr($c).' ';
//printf('%c ', $c);    //こちらの記述でもOK
}
0579nobodyさん2005/07/28(木) 16:38:32ID:???
そうですか
Cと同じ感覚でやってみたのですが
こうゆう場合はordを使わなければダメなのですね。
ordの関数がどういうものか調べてやってみます。
勉強させていただきました。
0580nobodyさん2005/07/28(木) 16:44:17ID:???
ordってorzに見えるな。
('A')って(´Д`)に見えるな。
0581nobodyさん2005/07/28(木) 16:45:31ID:iGAmBrlm
('A')('Z')('A')('Z')
0582nobodyさん2005/07/28(木) 17:04:32ID:???
>>577
http://www.php.net/manual/ja/language.operators.increment.php
例 15-2.

これは知らなかった・・・orz
0583nobodyさん2005/07/28(木) 17:14:27ID:???
>>582
漏れも知らんかった。。。まぁ普段こんなコードは書かないだろうけど。
インクリメント演算子だけ特別扱いしているんだね。

$x='A';
$x++;
print $x;       //B を表示

$x='A';
$x=$x+1;
print $x;       //1 を表示
05845782005/07/28(木) 17:20:42ID:???
>>582
お〜、そうだったのか。ということは>>577のコードはこんな風に書けば動くのか。
for ($c = 'A'; $c != 'AA'; $c++) {
 print $c.' ';
}
こんな記述はやっぱりやだ。。。
0585軟式PHP2005/07/28(木) 18:14:24ID:???
なんだその書き方は…と思ったら動くのかよ。勉強不足だったorz...
0586nobodyさん2005/07/28(木) 18:21:21ID:???
orz増加中...
0587nobodyさん2005/07/28(木) 18:48:14ID:???
orzorzorz
0588nobodyさん2005/07/28(木) 19:49:35ID:???
これ以外と知らないんじゃないの?
orz
0589nobodyさん2005/07/28(木) 20:08:22ID:???
これは?→ _| ̄|◯
0590nobodyさん2005/07/28(木) 20:10:22ID:???
じゃ、これも→OTL
0591nobodyさん2005/07/28(木) 20:19:33ID:???
俺はこれ派
OTZ
0592nobodyさん2005/07/28(木) 20:25:50ID:???
せっかくの良スレが荒らされていく...orz
0593nobodyさん2005/07/28(木) 20:34:17ID:???
あーあ、ミスってソース消しちまったorz
0594nobodyさん2005/07/28(木) 20:45:50ID:???
懺悔会場はここですか?orz
0595nobodyさん2005/07/28(木) 21:53:16ID:iGAmBrlm
じゃあ質問しまーす!
ソース書く時に半角スペースあるじゃないですか、それってぶっちゃけ自分どこを空けるかわかんないんだけどやっぱ空けた方がいいの?てか空けないと不具合起きる?
0596nobodyさん2005/07/28(木) 22:18:08ID:???
流れをぶった切って質問です。

シフト表のような、横軸に時間を表示して各行に誰が何時から何時まで何の作業をするか、
というグラフを
MySQLに登録したデータを下にPHPで抽出して、
TABLEタグで単位時間(10分)あたり1つのセルを区切って
作業時間に当たる部分のセルを結合・作業内容を表示する、
といったグラフを表示するスクリプトを作ったのですが、
こういうTABLEタグを使ったグラフの表示というのはお作法的に如何なものなのでしょうか?
JpGraphなどは利用したことはないのですが、それらのライブラリを使う等で画像で表示するほうがよいのでしょうか?
「テーブル厨」と言われるかもしれないのは分かっているのですが・・・。
0597nobodyさん2005/07/28(木) 22:25:21ID:???
>>596
つ[Excel]
0598nobodyさん2005/07/28(木) 22:46:09ID:???
>>499-501
横からスマソ
それをさページ全体に適用する方法ってない?
0599nobodyさん2005/07/28(木) 22:52:02ID:???
>>598
/g
06005962005/07/28(木) 23:07:28ID:???
>>597
レスありがとうございます。
ローカルでExcelでグラフを作成してアップロードすればいい、ということでしょうか?
誰かが元データに追加・変更を加えるたびに自分でローカルで作業、というのは避けたいので
できれば常に最新のデータから自動生成するか、あるいは追加・変更時にグラフ・画像生成という形にしたいのですが。
よろしくお願いします。
0601nobodyさん2005/07/28(木) 23:25:02ID:???
>>599
それをどこにつければいいの?(´・ω・)
06025612005/07/28(木) 23:31:00ID:???
>>568
色々ヒントをありがとうございます。
しかし、自分には難しく無理そうですが少しずつ、自分でそれらを使えるように頑張りたいと思います。
ところでなんでevalがお嫌いなんでしょうか?
スクリプティングのノウハウがあまりない者にとってはちょっとややこしい事を実現するにはすごく便利と感じているのですが。

>>569
すいません、確かに自分でもそう感じています。
もっと良い方法があるはずだ、とは思うのですが、その方法をきいたところで自分ですぐに出来るようになるとはとても思えないのもまた事実です。

>>570
現実的にそんな感じのスクリプトはレンタル鯖で使うと怒られたりするでしょうか?
06035992005/07/28(木) 23:37:13ID:???
>>601
なぁ、適当に書いちまった手前すまんが、そのままのコードで出来ないか?
試してみたが、出来るお。
0604nobodyさん2005/07/28(木) 23:50:48ID:???
>>603
$str = 'この中にページの内容を全部ぶっこんで';

ページの一番下に↓を入れればいいってこと?
>echo preg_replace_callback('/\\[ASIN:(.*?)\\]/', 'add_google_tag', $str);
中略
>// . urlencode($m[1]) . '&hl=ja&lr=lang_ja">' . $m[0] . '</a>'; }

漏れの知識ヤバス・・・(;´・ω・)
06055992005/07/28(木) 23:56:15ID:???
>>604
取りあえずファイルに>>501のソースはっ付けて、
$strに使用するHTMLのソースを代入すればおけ。
0606nobodyさん2005/07/29(金) 00:02:36ID:???
>>605
分かったお(`・ω・´)
ありが�d
0607nobodyさん2005/07/29(金) 00:03:42ID:???
>>596
ブラウザによって見え方が違ってくるので調整が結構難しいけど、
htmlのテーブルで棒グラフを表現するパターンは比較的採用されることの多い手法。
ただ、その場合グラフの再利用性が悪いのでGDなどのグラフィックライブラリが
使える環境な、ちゃんと画像生成してやった方がいい。
JpGraph使ってもいいけど、棒グラフ程度なら自分で好きな風に組んだ方が楽。
(HotScriptとかいけば、棒グラフだけ描画するライブラリとか軽いのもある)
0608nobodyさん2005/07/29(金) 07:49:53ID:???
PHP 4 で質問であります。

$hoge = & new Hoge();
と
$hoge = new Hoge();

後者はメモリに Hoge オブジェクトが2つできるという解釈であっていますか?
0609nobodyさん2005/07/29(金) 08:38:39ID:???
Hoge オブジェクトが2つできるってのは考え方としてはあってる。
だけど本当にメモリ上にできるかまではわからん。
実はPHPも裏ではもっとスマートに動いているという話も聞いたことある(真偽のほどは定かではない)。
まーPHP4では基本的に&をつけといたらそれでおkだと思われ。

つーか本当のことを知ってるor実際に測定可能orソースコード読める香具師いたら教えて。
0610nobodyさん2005/07/29(金) 13:37:32ID:???
「基本的に&をつけ」の一言で安心しました。
つけていないソースがいくつかあったので自分の考え違いと思って質問した次第です。
どうもありがとうございました。

つけない場合は構文通り2倍メモリとるんですかね、、興味深いです。
0611nobodyさん2005/07/29(金) 14:04:20ID:13Ftmufi
if(is_uploaded_file($_FILES['upfile']['tmp_name'])){
copy($_FILES['upfile']['tmp_name'],$copy_name;
}

としたところアップロードしたファイルが日本語名のファイルだと0バイトのデータになってしまうのですがなぜでしょう?
一つ気になったのですが、php.iniでupload_tmp_dirに/tmp/phpと指定してるのですが、アップロードを行っても/tmpにも/tmp/phpにもファイルはできません。
半角英数字のファイルだと問題なくコピーできます。
0612nobodyさん2005/07/29(金) 14:19:05ID:???
>640
PHP4までは&をつけないとメソッドとかまで全てコピーしていたみたいよ。
0613nobodyさん2005/07/29(金) 14:52:09ID:???
>>611
print_r($_FILES) すりゃ、さらに詳しく状況がわかると思うがどうかね?
0614nobodyさん2005/07/29(金) 15:18:15ID:???
>611
ShiftJISだと問題が起こった気がする。
解決策も無かった気がする。
0615nobodyさん2005/07/29(金) 15:24:31ID:???
>>612

$hoge = new Hoge();
$moge = $hoge;
$mora = & $hoge;

で、いつ消えるかはさておき、生成される Hoge オブジェクトの個数は
3個ということでおkですかね?
0616nobodyさん2005/07/29(金) 16:04:56ID:???
>>615
class Hoge{
 var $data;
}
$hoge = new Hoge(); $hoge->data = 'hoge';
$moge = $hoge; $moge->data = 'moge';
$mora = & $hoge; $mora->data = 'mora';

printf('hoge : %s\n',$hoge->data);
printf('moge : %s\n',$moge->data);
printf('mora : %s\n',$mora->data);
0617nobodyさん2005/07/29(金) 16:25:55ID:???
いや流れ的に、焦点は
 $hoge = new Hoge();
で、物理メモリ上に2コオブジェクトができるか否かなんだとおもう。

しかし、 $mora ってなんだかしおしおになるな。orz
0618nobodyさん2005/07/29(金) 17:07:24ID:yP6BN9nb
MySQLスレよりこちらに誘導されてまいりました.

すみません,MySQLのデータをPHPで吐き出したいのですが,
データに$(ダラーマーク)が含まれる場合はどのようにしたらいいのでしょうか?

例:
Prizeフィールドに
$100,000
$125,000
とあった場合
PHPで
(SQL文)
$data = mysql_db_query("usrdb",$sql, $connect);
$row = mysql_fetch_array( $data );
$prizedt = $row["Prize"]
として変数を格納した後,
<td>$prizedt</td>とした場合,うまく吐き出せなく,\$prizedtでもうまくいきませんでした.

どうすればよろしいのでしょうか?
0619nobodyさん2005/07/29(金) 17:30:59ID:???
>>618
MySQLスレでecho "<td>$prizedt</td>";でOKとレスもらっているみたいだけど
ダメなん?
<td>$prizedt</td>をどういうコードで吐き出しているんだ?
0620nobodyさん2005/07/29(金) 17:39:02ID:???
var_dump($row)してみな。

要するにmysql_fetch_array()でどういう構造の
Arrayが返ってくるか理解汁。
06216202005/07/29(金) 17:43:39ID:???
いや「どういう構造のArrayが」じゃないな。「どういう値が」。
0622nobodyさん2005/07/29(金) 17:56:49ID:???
>>618
mysql_db_query()とは、えらくまた古風な関数だな。
どんな本参考にスクリプト書いてるの?

まあそれとは別に処理の途中でビシバシとエラーが
出てるような気がするんで、デバッグ中は
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
ini_set('error_reporting', E_ALL);
とでもしとこうな。
0623nobodyさん2005/07/29(金) 18:05:52ID:???
display_startup_errorsはスクリプト内で変えても無意味だな。
php.ini等でどぞ。
0624nobodyさん2005/07/29(金) 18:12:00ID:???
>>623
display_startup_errorsってPHP_INI_ALLなんだけど。。。
設定は反映されるけど実際には動作しないってこと?
06256182005/07/29(金) 18:52:48ID:???
自己解決しました。

実際に使うデータの変数の名前がいけなかったのが原因でした。
お騒がせしました。これから精進してまいります。
0626nobodyさん2005/07/29(金) 19:22:51ID:66TM2wnl
mb_send_mail()に渡す、メール本文の改行コードは、
CR+LFでないとダメでしょうか?
それともLFでも大丈夫でしょうか?
0627nobodyさん2005/07/29(金) 19:52:39ID:msnOOfVb
てゆーか、ダラって言うんだ。。
0628nobodyさん2005/07/29(金) 19:55:31ID:???
>>626
SMTPサーバー(qmail, sendmail, postfix etc)によっては
 LFでも送信してくれる「かも」しれない
 LFでないとエラーにする「かも」しれない
RFCで改行コードはCRLFと規定されているので横着せずに変換汁。
str_replace辺りで一発で変換できるでしょ。
0629nobodyさん2005/07/29(金) 20:00:38ID:66TM2wnl
>>628
mb_send_mail()で改行コードの自動変換はしてくれないんですかね?
0630nobodyさん2005/07/29(金) 21:03:57ID:???
フォームのダウンロードボタンを押すと
テキストエリアに挿入されているソースが
ファイルとしてダウンロード出来るプログラムを
作ろうと思っています。

ただ、これに利用される関数とかよくわかりませんので
参考サイトとかありましたら、教えていただけないでしょうか?
0631nobodyさん2005/07/29(金) 21:06:25ID:???
>>630
入力された文字列をダウンロードさせるってことか?
それとも、テキストエリアにデフォルト値として出力したものと同じものをダウンロードさせるってこと?

ダウンロードさせるならheader関数
06326302005/07/29(金) 21:12:00ID:???
前者です。ちなみにContent-Dispositionでしょか?
06335962005/07/29(金) 23:44:47ID:???
>>607
どうもありがとうございます。
とりあえずGDに手をつけてみようかと思います。

ところで、このような画像生成を使って最新の情報を表示させたい場合には、
毎回データ読み込み→画像生成を行うものなのでしょうか?
それともデータを更新する度に画像生成・保存して通常はそちらを表示させるものなのでしょうか?
サーバーにとっては保存しておいた画像を表示するほうが負荷は低いとは思うのですが、
毎回画像生成させてもそれほど負荷がかからない、というのであればそっちもいいかなと思っています。
どなたかアドバイスお願いします。
0634nobodyさん2005/07/30(土) 01:18:21ID:???
下記のようなソースを書いてテストしているのですが
別におかしくありませんよね?(書き方は別として。。)
なぜかサーバにアップされてもなかなか処理が実行されず
おそらく無限ループのようになっています・・。

<html>
<body>
<table border="1">
<?
$fruit=array("バナナ","りんご","みかん");
$a=0;
while($a<4){
print"<tr>";
print"<td>";
print"$fruit[$a]"."\n";
print"</td>";
print"</tr>";
$a++;
}
?>
</table>
</body>
</html>
0635nobodyさん2005/07/30(土) 01:50:54ID:???
>>634
素人考えだが、無限ループしてる場合なら無限に書き出されるのでは?
apacheのエラーログではどうなってるの?

> print"$fruit[$a]"."\n";

の部分を
print ("xxx");
とかにしたらどうなる?
てかprintの内容を("")でくくらないのはドウなの?OKなの?
0636nobodyさん2005/07/30(土) 01:52:45ID:???
>>634

<html>
<body>
<table border="1">
<tr><td>バナナ
</td></tr><tr><td>りんご
</td></tr><tr><td>みかん
</td></tr><tr><td>
</td></tr></table>
</body>
</html>

こういうソースを吐くな。
「<?」を「<?php」にしたら普通に動いた。
0637nobodyさん2005/07/30(土) 02:09:46ID:???
>>633
更新頻度と参照頻度によるね。
少ない方で生成、これ常識
0638nobodyさん2005/07/30(土) 02:30:19ID:???
>>633
そりゃ閲覧頻度とデータ更新頻度にも依るがな。
誰も閲覧しないのにデータだけ黙々と更新され続ける場合と
データは余り更新されないのに、激しく閲覧されるものとは扱いが違う。
グラフ生成の負荷なんて大したことない場合が多いから、
個人の普通のサイト程度の閲覧頻度なら、どっちでもいいと思うけど。
06396342005/07/30(土) 02:50:11ID:???
下記のようにすれば出来ました。皆さん、ありがとうございます。

<html>
<body>
<table border="1">
<?php
$fruit=array("バナナ","りんご","みかん");
$b= count($fruit);
$a=0;
while($a<$b){
print("<tr>"."\n");
print("<td>");
print("$fruit[$a]");
print("</td>"."\n");
print("</tr>"."\n");
$a++;
}
?>
</table>
</body>
</html>

<?を<?phpにしないといけませんでした。
通常はしなくても大丈夫だと思ったのですが。。
0640初心者�T2005/07/30(土) 03:04:13ID:1xotdcs0
よろしくお願いします。HTMLとPhpでフォームからファイル名(変数?)を
受け取って、その画像をページの任意の位置で表示させたい時、
こういう風でいいのでしょうか?
<?php
$file = $_POST['file'];
if (!$file) $file = "default.jpg";
if ($_POST['open'] && $file) {
print "<img src='./test/$file>\n";
}
?>
カレントの子のtestというディレクトリの内容のファイルを表示させたいです。
0641nobodyさん2005/07/30(土) 03:39:15ID:???
>>640
・$_POST['file']の内容を精査しないと危ない。
・!$fileや$fileじゃなくて!isset($file)またはその逆を使う。
(ファイル名が'0'の場合の挙動を比較すること)
0642nobodyさん2005/07/30(土) 03:41:49ID:???
isset($file)じゃなくて、isset($_POST['file'])だ。
0643nobodyさん2005/07/30(土) 03:45:17ID:???
>>635
> print()は実際には関数では(言語構造です)ありま せん。このため、引数を括弧で括る必要はありません。
ttp://www.php.net/manual/ja/function.print.php

>>639
<? を使えるかどうかは鯖の設定次第。普段から<?php を使うようにしておけば無難かな。
ttp://www.php.net/manual/ja/language.basic-syntax.php

>>640
・$_POST['file'] が送られてこない
・$_POST['file'] に ../../ファイル名 てな感じに対象ディレクトリ外のファイルが指定される
の2点に気をつければいいかな。
0644nobodyさん2005/07/30(土) 04:24:33ID:3Guwxl6q
http://www.mysql.com/login.php?dest=http%3A%2F%2Fwww.mysql.com%2F

このURLのlogin.phpはわかるけど、その後ろの?dest以降はどういう意味があるん?
0645nobodyさん2005/07/30(土) 05:04:44ID:???
>>644
dest -> destination : 目的地、行き先、宛先
つーことから推測すると、login処理後に表示するページを指定していると考えられる。
実際、他のページの該当部分を見てみると そのページのURLが入ってるべ?
0646nobodyさん2005/07/30(土) 06:50:12ID:???
画像表示に関して質問です。

フォーム→画像表示(アップロードはしない)
としたいので、表示のphpファイルで下記のようにしました。

$images=$_FILES['image']['name'];
print("<img src=\"$images\">");

しかし、ソースをみると「Array」となり、画像が表示されません。
普通にフォームから画像を選択して表示画面をprint"$image";
で表示しても画像のURLはローカルPC内のアドレスになります。
ファイル名だけ表示させたいのですが、どのようにすればいいのでしょうか?
0647nobodyさん2005/07/30(土) 07:09:47ID:???
>>646
$imagesがArrayになるのはよく分からんけど、それならそれで print_r($images)してみれば原因が推測できるんじゃないかな。
パス名を含む文字列からファイル名を取り出すにはbasename()を使う。
0648nobodyさん2005/07/30(土) 07:16:03ID:???
>>647
すみません、今確認したら普通に表示されました。
何が原因かは全く分かりませんが、とりあえずできました。
ありがとうございました。
0649nobodyさん2005/07/30(土) 07:32:57ID:???
>>644
645が言ってる事が正解だと思うけど、
認証が必要なコンテンツで認証前だった場合に、一旦ログインに飛ばして
処理させた後に、戻ってくる時のリファラ代わりにそういうパラメータを
設定することがある。
0650nobodyさん2005/07/30(土) 08:16:05ID:XEEbjr3V
explodeってムチャクチャ便利だなw

$array = explode(" ", $string);

これで$stringがスペース区切りで配列$arrayに格納されるんだよ、
ぽまいら知ってた?
0651nobodyさん2005/07/30(土) 08:22:10ID:???
その分だと、
$string = implode(" ",$array); で、
配列$arrayがスペース区切りで$stringに格納されるのも知らなそうだな。
0652nobodyさん2005/07/30(土) 08:23:52ID:???
>>172を読めよ初心者www
0653nobodyさん2005/07/30(土) 08:30:08ID:???
ついでに初心者はarray_flipとarray_combineについて
勉強しておけwww
■ このスレッドは過去ログ倉庫に格納されています