【PHP】下らねぇ質問はここに書き込みやがれ 30
レス数が900を超えています。1000を超えると表示できなくなるよ。
0001nobodyさん
2006/10/05(木) 01:38:25ID:y1WWhz/pまず読め→【PHP マニュアル】http://www.php.net/manual/ja/
PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。
過去スレ、関連スレ、FAQなどは>>2-10辺り
◆質問する場合の注意
1. 自分のIDを表示させること。(メール欄に何も記述しないでください)
2. サーバーのOS、WebサーバーとPHPの種類やバージョン等を明記すること。
3. 己の行った操作、変更などを詳しく明記すること。
4. エラーメッセージはそのまま表記すること。「エラーが出ます」では絶対分かりません。
5. 質問者としても態度をわきまえること。
6. 事前に公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。
◆質問後の注意
・質問者は必ずIDを表示させてください。(メール欄に何も記述しないでください。)
・2回目以降は最初に質問した際のレス番号を名前欄に入れてください。
(逆に回答者は質問者に対して>>(アンカー)をつけて答えてください。)
・解決しなくても回答をもらった場合はお礼を言う。
(荒らし、煽りは除く。逆に煽られたときも、無闇に反論せずスルーすべし)
【その他諸注意】
・正規表現・PEAR・テンプレート(Smarty等)・フレームワークはそれぞれの該当スレへ
・SQLについての質問はデータベース板(PCカテゴリ)の各スレで
・オブジェクト指向については良スレがないから本を買え。理解できないならムリに使うな。
・速さについては自分でベンチをとってここに書け(違う環境の人も調べてくれるかも)
0804nobodyさん
2006/10/21(土) 23:50:16ID:???いやだから、それだと単にPOSTデータを飛ばすだけで、
ユーザのブラウザ画面はPOST先のページに移動しない、
って>>763は書いてるわけじゃない。
0805nobodyさん
2006/10/22(日) 01:09:59ID:???http://news.goo.ne.jp/news/rss/topics/geino/index.rdf
foreach ($gooRss as $item) {
var_dump($item->title());
}
これで拾えません。
$gooRss->title();
channel は拾えるんですが、ナゼでしょうか。
0806nobodyさん
2006/10/22(日) 01:18:11ID:???>>763はPHPの何たるかを分かっていない。JavaScript使えでFAだな
そもそもPOSTされたデータを持たせて他サイトに飛ばす必要があるって・・どんな場合だ?
0807nobodyさん
2006/10/22(日) 01:57:05ID:???0808nobodyさん
2006/10/22(日) 02:34:55ID:???0809nobodyさん
2006/10/22(日) 04:27:49ID:b7CANJCxmysqlデータベースにフィールド名が「name」で「一郎」、「二郎」、「三郎」、「四郎」、「五郎」、「六郎」の6レコードがあります。
それをPHPで読み込んで
<table>
<tr><td>一郎</td><td>二郎</td><td>三郎</td></tr>
<tr><td>四郎</td><td>五郎</td><td>六郎</td></tr>
</table>
とするのが目的です。
で質問の内容なんですが〜whileで繰り返し処理をする時、
<table>
<tr>
<?php do { ?>
<td><?php echo $row_record['name']; ?></td>
<?php } while ($row_record = mysql_fetch_assoc($record)); ?>
</tr>
</table>
とすると、
<tr><td>一郎</td><td>二郎</td><td>三郎</td><td>四郎</td><td>五郎</td><td>六郎</td></tr>
と横に一列になってしまい、また
<table>
<?php do { ?>
<tr>
<td><?php echo $row_record['name']; ?></td>
</tr>
<?php } while ($row_record = mysql_fetch_assoc($record)); ?>
</table>
とすると
<tr><td>一郎</td></tr>
〜
<tr><td>六郎</td></tr>
のように縦に一列になってしまいます。
目的のような結果になるよう表示させるには、どのような繰り返し処理を記述すればよいのでしょうか?
0810nobodyさん
2006/10/22(日) 04:30:23ID:???0811nobodyさん
2006/10/22(日) 05:16:39ID:???余りの数で折り返すのが良いと思います。
例の場合なら3列なのでレコード数を3で割って余りが0のときに</tr><tr>を入れる。
あとは例外処理だけ
0812809
2006/10/22(日) 07:25:20ID:b7CANJCx>>811
お答えいただき、ありがとうございます。
申し訳ないのですが、具体的にどのように記述すれば良いのでしょうか?
今まで調べていたのですが、どうにも分からなかったので再度質問です。
度々お手数をお掛けしますが、よろしくお願いします。
なお本日は限界な為、もう寝ます・・・。
お返事は起きてから致します。
0814nobodyさん
2006/10/22(日) 08:22:28ID:???ニートに金渡してやらせればニート問題も解決しねぇ?w
0815nobodyさん
2006/10/22(日) 08:27:36ID:???810か811でFAだけど、本当にわかってなさそうなので教えてみる。
<tr>
<?php
for ($i = 1; $row_record = mysql_fetch_assoc($record); $i ++) {
?>
<td><?php echo htmlspecialchars($row_record['name'])?></td>
<?php
if ($i % 3 == 0) {
?>
</tr>
0816815
2006/10/22(日) 08:28:49ID:???<tr>
<?php
}
}
?>
</tr>
0817nobodyさん
2006/10/22(日) 09:43:07ID:???そりゃ難しい話でもなんでもないぞ。
PHPがどうこうという話ですらない。
それ宿題でやってるの?
仕事としてやってるの?
前者なら、考えるのが仕事なんだから悩めばいいし、
学校で友達や先生にわかるまで聞きなー
後者なら、転職したほうがいいよ。会社辞めなー
0818nobodyさん
2006/10/22(日) 09:51:11ID:???つーか何のためにそんなことするんだ?
一列だろうと二列だろうと、レンダリング結果は一緒だろうが。
んで、>>817の言うように、それくらい自分で考えられないなら
氏んだほうがいいと思う。
0819nobodyさん
2006/10/22(日) 10:26:26ID:???1行と2行は大違いだろ。
0820nobodyさん
2006/10/22(日) 11:40:58ID:???こうしようぜ。
<tr>
<?php for ($i = 1; $row_record = mysql_fetch_assoc($record); $i ++) : ?>
<td><?php echo htmlspecialchars($row_record['name']); ?></td>
<?php if ($i % 3 == 0) : ?>
</tr>
<tr>
<?php endif; ?>
<?php endfor; ?>
</tr>
0821nobodyさん
2006/10/22(日) 12:09:44ID:BSjdszSlおすすめのPHP本を教えてくれ!
ハローワールドしかできない!
0823nobodyさん
2006/10/22(日) 12:21:48ID:BSjdszSlレッツって何?
0825824
2006/10/22(日) 12:25:40ID:???レス間違えたorz
0826nobodyさん
2006/10/22(日) 13:10:15ID:???0827nobodyさん
2006/10/22(日) 13:37:35ID:???なんか<?php 〜〜〜 ?>
が凄く多い気がするんですけど。皆さんも必要部?だけphpの記述をする感じですか?
私の場合、例のような感じですと<tr>なども全て出力させるのて
おおきく<?php で囲ってしまうのですがどうなのでしょうか?
0828nobodyさん
2006/10/22(日) 13:43:25ID:???0831nobodyさん
2006/10/22(日) 14:14:59ID:???そとにあるのが「ロジックではないもの」
ていうロジックなのかな?
0832nobodyさん
2006/10/22(日) 14:19:47ID:???0833nobodyさん
2006/10/22(日) 14:21:38ID:???0834nobodyさん
2006/10/22(日) 14:22:10ID:???埋め込み方式では書かないな・・・
0835nobodyさん
2006/10/22(日) 14:23:43ID:???0836nobodyさん
2006/10/22(日) 14:51:36ID:???0838809
2006/10/22(日) 16:22:39ID:b7CANJCxまた、>>815、>>820のお二方は
具体的に記述していただいて大変感謝です!
ただ、このやりかただと、
<tr><td>二郎</td><td>三郎</td><td>四郎</td></tr>
<tr><td>五郎</td><td>六郎</td></tr>
というように、最初のレコードである「一郎」が表示結果に出ません。
(ソート順は名前でやってあります。)
試しに別フィールド「年齢」でソートしてやっても、
やはり最初のレコードは表示されません。
>>815、>>820の両氏のコードで試しましたが、同じでした。
これは私の環境がおかしいのでしょうか??
もしこれがデータベースの問題なら、
これ以上はスレ違いなので調べても分からなかったら他を当たってみます。
しかし、今回のような動的テーブル作成法って変わった事なんでしょうか?
WEBアプリの場合だと、当たり前なんだと思ってました・・・。
0839nobodyさん
2006/10/22(日) 16:29:54ID:???0842nobodyさん
2006/10/22(日) 17:08:16ID:???他人の書いた物はどうせ見難いし
0843nobodyさん
2006/10/22(日) 17:12:53ID:???デバッグできないので教えてください、じゃ話にならんだろ
0844809
2006/10/22(日) 17:45:09ID:b7CANJCx>>839氏の仰るとおり、表示以前に処理しておりました。
ご迷惑をお掛けして申し訳ありませんでした。
また、>>815、>>820氏にはせっかく書いて下さったのに
失礼な発言をしてしまいました。
お詫びいたします。
これでやっと希望通りの結果を得ることが出来ました。
そのことには深く感謝です!
しかし私が言うのも何ですが、プログラミングって面白いですよね。
これからも少しずつ精進していこうと思います。
最後にもう一度、ありがとうございました!
0846nobodyさん
2006/10/22(日) 20:26:50ID:QZl/ECEV↓のようなものをつくりたいのですが、これはどの程度のレベルなのでしょうか?
だいたい何ヶ月くらいで作れるようになりますか?
http://www.satoya-boshu.net/keisai/c.htm
0847nobodyさん
2006/10/22(日) 20:36:21ID:???その里親募集は、レベルとしては中級ってとこじゃないですか。
いろんな人みてますけど、ほんとに人それぞれですよ。
大雑把に言って、2ヶ月、3ヶ月ってとこじゃないですか。
勘のいい人は、まったくの、まっさらの状態から勉強して
1ヶ月でさくっと作ったりしますよ、それぐらいだと。
コツとしては、一度に複雑なものを作らないことです。
必要最小限の機能のものを作って、それに肉付けしていく。
なんか、今日・昨日、DBからひっぱってきたデータを二列に表示したい、とかいう
話がありましたけど、ああいうのも、最初は一列で表示させる、
次に、DBとは関係なく、配列データの二列表示の研究、最後に両者を組み合われる、とか、
「分割して統治せよ」のコツを、うまくつかめるひとは、みにつくのもはやいです。
0848847
2006/10/22(日) 20:40:40ID:???1〜3ヶ月ですか
年内を目標にがんばっていこうと思います
アドバイスもありがとうございます
まだそこまでの域に達していないのでピンときませんが、
忘れないように肝に銘じておきます
0849nobodyさん
2006/10/22(日) 21:15:22ID:???佐賀県庁・佐賀県警・談合・痴漢・情報漏洩などの内容だ。
銀行が潰れるとしたデマが回り騒ぎが起きたこともある。
このような書き込みは慎むべきだ。
被害防止のため常駐するスレに啓蒙してくれ。
0850nobodyさん
2006/10/22(日) 21:16:06ID:???0851nobodyさん
2006/10/22(日) 21:22:47ID:???0852nobodyさん
2006/10/22(日) 21:27:19ID:???0853from greypawn
2006/10/22(日) 21:56:21ID:???プログラム未経験なら分かりやすいPHP入門書を1冊買うといいですよ。
あと大事なのは、オンライン公式マニュアルの導入のところをちゃんと読んでおくことと
使えそうな関数のチェックは怠らないことですかね。
847氏も書いてますが、単純な形から徐々に拡大していくというのに賛成です。
今日のテーブルの件だって複雑に考えなくても
for文を使って1から6までの数字を
1 2
3 4
5 6
と表示するにはどうすればいいかと考えることと同じなわけで。
里親募集は要するに掲示板作るのと同じですね。
データの保存にDB使うのかファイル使うのか分からないけどDBと仮定すると、
登録時は
@HTMLからフォーム送信⇒APHPで受け取ってSQL文生成+クエリ実行⇒BDBに保存
表示時は
CSQL文を実行してDBからデータを取得⇒DデータとHTMLタグを組み合わせてHTMLページを出力
みたいな感じ。
あと細かい処理やら写真のアップなどは追々付け足していけばいいわけで。
何か詰まったらまたここで聞いてくださいね。
0854847じゃなくて846でした
2006/10/22(日) 23:19:31ID:???アドバイスありがとうございます
右も左もわからない状態なので助かりました
0855nobodyさん
2006/10/23(月) 01:36:51ID:2dkTMRuKまた、初心者な質問をさせていただきます。
返信機能付きの掲示板を作成しているところです。
現在、無限ループが発生していて、困って居ます。
演算子などの辺りのマニュアルも一応読みましたが、原因が分かりません。
どなたか教授をお願いします。
ソース:
http://www5.pf-x.net/~php/s/q.phps
あと、質問者として最低の行為だと思うのですが、今日から2日間、小旅行に行ってきますのでお答えを見る事ができません(泣
0856nobodyさん
2006/10/23(月) 01:55:02ID:???0857nobodyさん
2006/10/23(月) 02:08:44ID:2dkTMRuK書いておくのを忘れてしまいました。
Fatal error: Maximum execution time of 60 seconds exceeded in C:\Program Files\xampp\htdocs\test\res\res\bbs.php on line 136
0858nobodyさん
2006/10/23(月) 02:13:06ID:2dkTMRuK帰ってきてからでは少し都合が悪いのです。すみません。
Warning: file(1 .dat) [function.file]: failed to open stream: Invalid argument in C:\Program Files\xampp\htdocs\test\res\res\bbs.php on line 136
もあるようです。1と.datの間に半角スペースが・・・。
0859nobodyさん
2006/10/23(月) 02:26:31ID:???> $roop_lines = file(ENTRY_NUM_FILE);//現在、「1」が代入されます(最新の親記事番号)
> $num_of_time = (end($roop_lines));//最後の要素(最大数)を取り出します
file()で取得される配列は各行に改行コードがついたままになっている。
それを
> for($i = $num_of_time;$i >= 1;$i--){//最大の要素分ループします。(たぶんこの辺りがおかしい)
> $file = ($i.'.dat');
とやってしまっては、$i(改行).dat という意味不明のファイル名になってしまう。
136行目でMaximum execution time of 60 seconds exceededとfailed to open streamが出てるってことは
> $entry = file($file);
これが136行目なんだろうと思うが、不正なファイル名を渡されて読み込みを行っているために
file()関数が止まってしまってる状態。これは永久ループじゃなく1件目でいきなりこけてると思われ。
0860nobodyさん
2006/10/23(月) 02:41:05ID:2dkTMRuKこんなに駄レスをしてしまい、申し訳ありません。
0861nobodyさん
2006/10/23(月) 02:42:10ID:2dkTMRuKrtrim()でその改行コードを取り除いたら解決しました。
回答していただき、ありがとうございます。
0862nobodyさん
2006/10/23(月) 05:24:06ID:???0864nobodyさん
2006/10/23(月) 15:40:27ID:???0865nobodyさん
2006/10/23(月) 15:57:37ID:???0866nobodyさん
2006/10/23(月) 20:11:42ID:3vDBvRjM俺はlib/php以下にclassってディレクトリ作って置いちゃってたんだけど。。
0867nobodyさん
2006/10/23(月) 20:50:27ID:???0868nobodyさん
2006/10/23(月) 20:58:52ID:???0871866
2006/10/23(月) 22:22:33ID:3vDBvRjMなるほど。/home/user/class/みたいな感じですかね?
共通クラスみたいのは特に作ってないですか?
0872名無しさん@お腹いっぱい。
2006/10/23(月) 22:42:07ID:1uLUI3dC例えば、tenki.txtに"明日 天気にな ぁれ。"のような文章が入っていた
とします。それを全角スペースを置換し、「明日天気になぁれ。」にしたい
のですが、どのようにすれば良いでしょうか。
一応、このようにしてみたのですが・・
$file=fopen("tenki.txt","r+");
$str =fread($fp,filesize("tenki.txt"));
$str2=str_replace(" ","",$str);
fseek($file,0);
fwrite($file,$str2);
fclose($file);
結果はエラーはでないが、効果もないという感じでして。。。
どのようにすれば良いのか、ご教授いただけないでしょうか?
0875名無しさん@お腹いっぱい。
2006/10/23(月) 22:53:42ID:1uLUI3dCこちらに書く際に間違えてしまいました。
改めて、よろしくお願いします。
0876nobodyさん
2006/10/23(月) 22:59:40ID:lxved+5w思うようにうまくいきません。
どなたかご教授お願いいたします。
php4.4.4です。
$text = "2ちゃんねる";
html($text);
function html()
{
echo $text;
}
0877nobodyさん
2006/10/23(月) 23:00:18ID:???> $str2=str_replace(" ","",$str);
半角スペースしか置換してないように見えるんですが。
0880876
2006/10/23(月) 23:07:28ID:???迅速なアドバイスありがとうございます。
両方とも正しく動きました。
『function html()』と『html()』の両方に引数をわたさないとだめだったんですね。
$GLOBALS['text']はとても使いやすいですね。
お互い要所によって使い分けてみたいと思います。
ありがとうございました。
0881名無しさん@お腹いっぱい。
2006/10/23(月) 23:07:47ID:1uLUI3dC" "で効果がなかったので、" "としてしまいました。
どちらにしても置換がされないので、どうしたものかと。。。
0882nobodyさん
2006/10/23(月) 23:14:30ID:???良く考えたらそれはおかしいよ
文字数が減るからfseek0にしたら後ろにゴミが残るでしょ
だから勘違いしてると思う
0883nobodyさん
2006/10/23(月) 23:19:43ID:???0884名無しさん@お腹いっぱい。
2006/10/23(月) 23:20:42ID:1uLUI3dCfseekを使わないでやるというパターンも試してみたんですけど、どうも
うまくいかないのです。
よろしければ、答えの一例をお示しいただけないでしょうか?
0886nobodyさん
2006/10/23(月) 23:32:58ID:???> 『function html()』と『html()』の両方に引数をわたさないとだめだったんですね。
違う。
function html($text) は「引数を受け取れるようにする」という「指定」。
これで初めて引数を使えるようになるものであって、これは引数を渡しているわけじゃない。
渡される引数と、関数側の指定は別のものなので、
$data1 = "1ちゃんねる";
$data2 = "2ちゃんねる";
html($data1);
html($data2);
function html($text)
{
echo $text;
}
のように異なる変数名を使えるし、そこに利点がある。
(関数はそれ以外の部分がどうなっているかを意識せずに作りこむことができる)
> $GLOBALS['text']はとても使いやすいですね。
> お互い要所によって使い分けてみたいと思います。
グローバル変数を使う方式はこういう自由度が無いため、使い分けが重要。
0889nobodyさん
2006/10/23(月) 23:36:26ID:???今は置換されてないんだからゴミも出ないよ。文字数変わってないんだもの。
ちなみにtenki.txtの更新日付は実行後に変化してますか?>>872
0892nobodyさん
2006/10/23(月) 23:44:06ID:???0893nobodyさん
2006/10/23(月) 23:46:41ID:zNg8YSYz感じにすればよいのでしょうか?
0894名無しさん@お腹いっぱい。
2006/10/23(月) 23:46:46ID:1uLUI3dC>888
確かに。言い直すと、全角または半角指定でもうまくいきませんでした。
>889
実行後の更新日時は変化していました。
それと、改めて実行したところ、スペースは置換されました。
しかし、"明日天気になぁれ。れ。"
となってしまいました。
きれいに置換する方法はないものでしょうか?
0895nobodyさん
2006/10/23(月) 23:53:33ID:???結局置換できなかった理由はなんなのよw
ゴミの方は>>882が書いてるけど、上書き時のゴミでしょ。
1度元のファイルを消さないと、同じ桁位置に上書きするわけだから
字数が短くなれば当たり前だが後ろに上書きされなかった内容が残る。
ファイルを作り直すか、中身消去関数を実行しましょう。
0896nobodyさん
2006/10/23(月) 23:55:34ID:???$fp = fopen("CSVファイル", "r");
for($i = 0, $i < 17; $i ++) fgets($fp);
$line = fgets($fp);
echo $line;
0897nobodyさん
2006/10/24(火) 00:16:44ID:???とりあえず、動いてるものを動いてないと勘違いしてた時点で
しばらくは質問を控えて自分で悩んだ方がいいと思うよ。
実際の状態が分からない状態で質問されても正直困る。
0898名無しさん@お腹いっぱい。
2006/10/24(火) 00:21:07ID:amM1UeJp0899nobodyさん
2006/10/24(火) 00:26:04ID:???0900nobodyさん
2006/10/24(火) 00:35:04ID:Ylboj5c4ありがとうございます。確かに18行目のデータ全て抽出することができました。
さて、これからがぼくにとっての難問なんです・・・
たとえば、2つのCSVファイルがあるのですが(佐賀県.CSVと汚職.CSV)、やりたいことは
汚職.CSVの中の「Sさん」という人物プロフィール紹介のページで、「Sさん」に当てはまる(登録されている)
汚職カテゴリーを佐賀県.CSVの中からすべて抽出し、<li>・・・・・</li>の形で表示したいのですが、
なかなかうまくいきません。
どうかお知恵をおかしください。どんな感じにすればよいのでしょうか?
0901nobodyさん
2006/10/24(火) 00:58:03ID:???A単純化して考えてみる
BDB使う
レス数が900を超えています。1000を超えると表示できなくなるよ。