【PHP】下らねぇ質問はここに書き込みやがれpart18
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2006/03/15(水) 19:18:21ID:yiOrS10Nここなら本スレで回答のないお前の下らない質問に回答があるかも知れません。
まず読め【PHP マニュアル】
http://www.php.net/manual/ja/
本スレ【PHP】質問スレッドpart33【php】
http://pc8.2ch.net/test/read.cgi/php/1140027592/
前スレ【PHP】下らねぇ質問はここに書き込みやがれpart17
http://pc8.2ch.net/test/read.cgi/php/1140786348/
過去スレは>>2-3あたり
0074nobodyさん
2006/03/17(金) 12:43:01ID:???0075nobodyさん
2006/03/17(金) 12:50:20ID:???PHPしか扱えなくて、プログラムできます、なんて言ったら大恥。
C言語やJavaをお勧めする。入門書1冊やるだけでいいから。
007669
2006/03/17(金) 13:24:51ID:???レスどうもです。まったくの無知なのでマニュアルを見ても、
マニュアルにちょこっと載ってるサンプルらしきものをみてもよくわからないので
htmlのときのように他人のサンプルを触りながらのほうが理解できるかな、と思いまして。
やはりマニュアルの熟読から始めたほうがいいのでしょうか。
あとphpからプログラムをはじめるのはダメなんでしょうか。
phpはかんたんだと聞いたので。
かんたんというか、ある程度適当に作っても動くって意味なんでしょうか。
だからちゃんとした文法が身につきにくい・・・とか?
phpしか使えなくて恥をかく、とかは別に気にしません。
0077nobodyさん
2006/03/17(金) 13:26:38ID:???不思議マークアップってのは、見た目のみ最優先にして本来の仕様とは異なる目的で
使われているHTMLの書き方のこと。対義語はstrict。CSSが無かった時代の悪癖。
「悪い見本」[過去の遺物]って点でKENTやレッツPHPもそれに近いものであると言えるかもしれないな。
でもぐぐっても800件そこそこしか出てこないマイナーな単語なので、そういう単語で
物事を表現してる時点で>>69はすでに同レベルの人間に成り下がってるとオモ。
で>>69質問の、PHPで参考にできるサイトは唯一、本家マニュアルサイトのみです。
書籍だとマンモス本って言われている「PHP4 徹底攻略」とそのシリーズくらい。
それ以外ではまともに参考にできるものは大変少ないです。
大抵、ちゃんと全体を網羅できていない上に内容が間違ってる。
PHPは初心者を狙ったいいかげんな本やサイトが大量に氾濫してる上に、
ものすごく早いペースで機能拡張・仕様変更が行われているので、
これをちゃんとフォローできてるのは公式的なものしか無いと思っていいでしょう。
0078nobodyさん
2006/03/17(金) 13:42:54ID:???PHPは過保護なママタイプ
大抵の機能はファンクションとして揃ってるから、
レゴブロック感覚でもとりあえず動くものが作れる。
それが良い事なのか悪い事なのかはケースバイケースなので一概には言い切れないけど、
まずはプログラミングの世界に触れてみる第一歩としては間違っていないと思う。
大事なのは2歩目以降。
0079nobodyさん
2006/03/17(金) 13:43:08ID:???サイトは基本的に書きたい事しか書かれてないし、必要な事が書かれてるとは限らない。
明らかに図示した方が理解しやすくても、面倒だからという理由で省いてるサイトは多い。
サンプルベースの方が理解しやすければ、
1) 超入門的な本を読んでまず全体像を掴む。詳細は覚えなくてもいい。
2) チュートリアルとか用例付きの実践的な本を読んで手を付けながら覚えていく。
分からない所は、ぐぐったり、1の本を見て復習しながら進む。
という学習がいいかも。
プログラムの習得の目標をどこに置くかだと思う。一生phpでよければphpで始めて問題ない。
日本語しか話さないなら、日本語だけ知ってればいいのと同じ。
他の言語も覚えたければ、英語とかフランス語習った方が理解が進むように、いろいろ学んでいけばいい。
ちゃんとした文法を身につけたければ、堅苦しい言語を選べばいいよ。
とはいえ、最近の言語は省略形を使えるようにして利便性を上げてる傾向が有るので、どれも汚く書ける(=その代わり速度は速い)から有る程度癖がつくのはしょうがないと思う。
あんまりどっぷり嵌らないうちにいろいろな言語を弄って自分の好みの言語や記述スタイルを確立していけばいいと思う。
Cとかだとあまりにも個人差が有りすぎて、保守性悪いので、書式統一にINDENT(1)を義務づけるとかやるよ。
phpの書式整形手段はエロイ人に任せる。
0080nobodyさん
2006/03/17(金) 13:44:51ID:???PHPは簡単だけど、目的から行くと「他の言語で基本を知ってる人が
Web目的で楽をするための言語」だと俺は思ってるので、
同種の文法を持ってるCやJavaの基礎を先にやった方がいい。
PHPの便利なところは「ものすごく大量のWeb専用機能を内蔵してる」とこなので、
PHPの解説サイトや解説本はそこを重点的に説明してて基礎解説は全然しないし。
そういった便利関数を調べるのに追われて基礎を学ぶ暇が無くなるのはナンセンス。
で、その便利関数は頻繁に増えていってるので、これを全て網羅できるのは
公式サイトのオンラインマニュアルだけ。その辺のリファレンス本では無理。
結論として、他言語で基礎を知ってから、公式サイトをリファレンスにして
PHPを使い込む、って順番でやるのが最も効率的で間違いが少ない。
008169
2006/03/17(金) 14:16:47ID:???たくさんのレスありがとうございます。
最初にCやJAVAで文法の基礎を学んでからPHPの利便性を享受するか、
敷居の低いPHPから入って他のプログラム言語へと幅を広げるか、
ということでしょうか。
CとかJAVAって難しそうなので、
上の場合は忍耐力、下の場合は向上心がいるっぽいですね。
どうもありがとうございました。
いろいろと触れてみたいと思います。
0083nobodyさん
2006/03/17(金) 15:23:09ID:???授業だったらそうも行かないかもねー。
0084nobodyさん
2006/03/17(金) 15:26:47ID:???BASICやらせるよりタチわりぃ
0086nobodyさん
2006/03/17(金) 15:52:15ID:???レベル的にはPHPしかやったことないのとどっこいなくらいに微妙な連中なんだが、
それでもPHPしかやってないやつよりは綺麗なコードが書けるのがちょっと多い感じ。
なんでああ、PHPしかやってないやつってコードめちゃくちゃなのが多いんだろう?
HTMLにコード埋め込みorコードの中でHTMLをecho、が最初にあるせいなのか?
0087nobodyさん
2006/03/17(金) 16:57:00ID:???ブラウザの「名前を付けて保存」ではなく、submitボタンなどを押して
そのphpページをダウンロードするような。
0088nobodyさん
2006/03/17(金) 16:59:33ID:???できるよ。PHPには出力制御関数ってのがあって、ブラウザに表示する内容を
丸ごと変数に格納したりできる。それ使えば丸ごとファイルに保存→DLも楽々。
0090nobodyさん
2006/03/17(金) 20:00:57ID:???俺には何がしたいのかが分からない。
もしやりたい事がこれならマニュアルの「言語リファレンス」と「機能」だけでも全部読んでくれ。
ttp://php.s3.to/man/language.variables.variable.html
0091nobodyさん
2006/03/17(金) 20:38:54ID:???最初から名前そのものを引数として渡すんならともかく、それは無理でしょ。
あれば「変わった使い方」ができそうだけど、変わった使い方すぎて
どこで何が起きてるか不明な状態になる=グローバル変数病のもっとタチの悪いものになる
だけなので、意義は感じないな。
0093nobodyさん
2006/03/17(金) 21:09:57ID:???// 何かの処理
}
0094nobodyさん
2006/03/17(金) 21:11:10ID:???009589
2006/03/17(金) 21:12:46ID:???http://kaiunix.cs.shinshu-u.ac.jp/Lesson/ProgLangT/2005/VariousProgramStructure.html
とかでいいのかな結合度って
関数の話で変数とのつながりがいまいち分かりませんでした。
思ったけど配列なら内容を検索してkeyを返すって出来るね
0096nobodyさん
2006/03/17(金) 22:26:44ID:qt9OXvzzとした場合、ループ中に毎回ファイル読み込んでるわけではないですよね?
毎回読んでたらループしませんもんね?
いや、一応確認したかったので。
0099nobodyさん
2006/03/17(金) 22:41:23ID:???0100nobodyさん
2006/03/17(金) 22:42:49ID:???0104nobodyさん
2006/03/17(金) 22:57:47ID:WHiStkGKphpで書いたフォームで、入力された内容に
全部まとめてhtmlspecialcharsとかmb_convert_kanaを
かけたいんですけど、どうやったらいいですか?
いままでは
$hoge = mb_convert_kana($hoge, "KV", "SJIS");
$hoge2 = mb_convert_kana($hoge2, "KV", "SJIS");
$hoge3 = mb_convert_kana($hoge3, "KV", "SJIS");
と、項目の数だけ同じ行を増やしていました。
0105nobodyさん
2006/03/17(金) 22:58:56ID:???動作への不安が頭をよぎる。
foreach (file($hoge) as $line) { 〜 }
毎回は読み込まないよなぁ?…って
0106nobodyさん
2006/03/17(金) 22:59:41ID:???ホントに全部にかけちゃっていいなら
$_REQUEST = array_map("htmlspecialchars", $_REQUEST);
とかそんな感じ
0107nobodyさん
2006/03/17(金) 23:01:33ID:???いやそれはどうかと。別に全然綺麗じゃないし。
綺麗云々じゃなく素直に「中身が想像できないから見て分かる確実な書き方しかできません」って言いなされ。
0109nobodyさん
2006/03/18(土) 00:05:44ID:???0110nobodyさん
2006/03/18(土) 00:16:14ID:???マニュアルに「php.iniの場所は環境変数PHPRCにディレクトリパスを書くことで
指定できる」と書いてあるのに、IISのISAPIだとWindowsディレクトリ下しか
見てくれません。PHPRCによる場所指定はコマンドライン起動などでしか
使えないんでしょうか…。
0112nobodyさん
2006/03/18(土) 01:27:17ID:PidsL1FkID<>なまえ<>内容<>アクセス数
ID<>なまえ<>内容<>アクセス数
・・・
・・
・
のようなログファイルをすべて読み込んでアクセス数順にソートして
再度ログファイルに書き込むようなスクリプトを書いているのですが、
似たようなプログラムだとかってありますでしょうか?
ランキングスクリプトを作りたいと考えてます
どなたか書ける方いらっしゃいませんでしょうか・・・・
挫折してしまいました・・・・
0113nobodyさん
2006/03/18(土) 01:32:46ID:???スレ違い。
依頼スレじゃない。
これだけじゃ分からん。
phpを読み込んだ時にアクセス数が増えるのか、
それとも元からあるファイルを見やすいように順番を入れ替えるのかにもよる。
前者なら、更新部分だけ順番を入れ替えれる(もしくは0.5とか姑息な数字にしてソートする)などが考えられる。
後者なら、総当り方式で順番をつけてくのが吉。
0114104
2006/03/18(土) 01:36:12ID:Lr7F21tPレスありがとうございます。
厳密に言うと、全部じゃなくて殆どの項目といった感じです。
任意の項目にまとめてかける方法はありますか?
いままで僕が書いていたように項目の数だけ行を増やすのは
あまりいいやり方ではないですよね?
0115nobodyさん
2006/03/18(土) 01:41:36ID:???あんまり何でも手際の良いスタイルを目指さなくてもいい時もある。
増やしたい部分だけやるのがいいと、俺は思うよ。
もっと良いコード書く人いるから。
その人がそういうの書いてくれると嬉しいよな。
0117nobodyさん
2006/03/18(土) 02:11:07ID:???>>114
$input_name = array(
"name1",
"name2",
"name3",
"name4",
"name5",
);
foreach($input_name as $k) {
$_REQUEST[$k] = htmlspecialchars($_REQUEST[$k]);
}
俺ならこんな感じ。
ある程度パターン化された一覧表みたいなPOSTを受け付けるときは
こんな風に一括処理をかけちゃうかな。
で、これは変換対象を列挙する方式だけど、これがめちゃめちゃ多くて
逆に除外側を列挙した方がずっとシンプルになる場合は
$ext_name = array(
"ext1",
"ext2",
"ext3",
);
foreach(array_keys($_REQUEST) as $k) {
if(in_array($k, $ext_name)) continue;
$_REQUEST[$k] = htmlspecialchars($_REQUEST[$k]);
}
みたいな手もあると思う。
0118nobodyさん
2006/03/18(土) 02:19:15ID:???0119nobodyさん
2006/03/18(土) 02:21:40ID:tuV8tpcr0120nobodyさん
2006/03/18(土) 02:24:50ID:???こういうワーク的な変数を大量生産するのはむしろ汚く見えるなー。
ワーク変数って名称に意味を持たせにくいから適当な名前になりがちだし、
それでうっかり被って変数破壊したり、変数名打ち間違ってバグったりって
凡ミスするやつを現場で何人も見たことがある。
しかも、そういうワーク変数を増やしたがるやつって大抵はエレガントなロジックを書けないんだよね。
やたら回りくどい手法を使いたがって、ますます凡ミスの可能性を増やしてんの。
で、挙句の決め台詞が「PHPは変数初期化ミスをちゃんと警告できないのがダメだよね」ときたもんだ。
おまえがヘタレなだけだっつ〜の!
0123nobodyさん
2006/03/18(土) 03:45:23ID:???まとめたリストってどっかにないかな??
掲示板とかでそういうのが投稿されたら
ブロックするようにしたいんだけど。
0124nobodyさん
2006/03/18(土) 03:55:03ID:???0127nobodyさん
2006/03/18(土) 06:34:25ID:???foreach (file($fname) as $line) { }
こう書くときはエラー処理しなくていい場合な。
綺麗とか汚いの問題じゃないぞ。
0128nobodyさん
2006/03/18(土) 06:57:48ID:???output_bufferingってどっちに設定すればいいでしょうか?
0129nobodyさん
2006/03/18(土) 07:20:53ID:???0130nobodyさん
2006/03/18(土) 08:00:00ID:???0131128
2006/03/18(土) 08:06:16ID:???EUC-JP ユーザ用の php.ini の設定
SJIS ユーザ用の php.iniの 設定
ってあってEUCはOffにSJISはOnにって書いてあってきになった・・
デフォのOffでいいのかなぁ・・
0133nobodyさん
2006/03/18(土) 11:49:16ID:p8xxneVQそれにDHTMLでアクセスする
ってあたりの事が書いてるスレかサイトって無い?
0134nobodyさん
2006/03/18(土) 11:57:35ID:???0135nobodyさん
2006/03/18(土) 11:59:57ID:???$inputstr = "uwaaaaa!";
から
uwaaaaa!
という出力を得たいとする。
============================
function aaa($str){
//実際はもっとめんどくさいごにょごにょがここに
echo $str;
}
function bbb($str){
//実際はもっとめんどくさいごにょごにょがここに
return $str;
}
============================
その場合
aaa($inputstr);
とするのと
echo bbb($inputstr);
または
$output = bbb($inputstr);
echo $output;
とするのどっちがいいんでしょう?
0136nobodyさん
2006/03/18(土) 12:05:33ID:???・表示するためのデータを作成する部分
・用意したデータを表示する部分
ってな感じに分割していると後々変更する時に楽なので、
$output = bbb($inputstr) がいいんジャマイカ?
0137nobodyさん
2006/03/18(土) 12:09:06ID:???値をごにょごにょするだけの関数なら、見やすさに応じて真ん中か下。たとえば、substr。
0139nobodyさん
2006/03/18(土) 12:29:47ID:???なるほど。
関数名の付け方とかで区別すればいいことに今気がついた。
呼ぶだけでechoするのは
print_nantara()とかecho_nantara()
ごにょごにょして返すのは、return_nantara()とか。
いままでそういう名前の付け方してなかった
>>118
ちなみに漏れもよくやります。上書き以降で元の値が必要ないとか、整形が必要なら、その都度ごにょごにょしないで、上書きしちゃえばいいと思ってます。
そんなに悪い事なのかな?
0140nobodyさん
2006/03/18(土) 13:05:41ID:???全部ごにょごにょしたものだけを返すようにしてる。
大抵、関数とメインロジックって別ファイルで別場所の事が多いから、
両方弄って、アップ(なりコミットなり)する手間を考えてしまう。
関数の中身を弄らないといけないなら仕方ないんだけど、
単純にそのechoを消したい場合とかで、なおかつ関数内のごにょごにょをしたい場合なんかは、
関数内でechoされると困る。
というわけで、関数名はほとんどget_*()が多いな。
0141nobodyさん
2006/03/18(土) 13:10:31ID:???0143nobodyさん
2006/03/18(土) 13:37:20ID:???foreachが終わったら変数をunsetするといいよ。
だが>120が言ってるように、
適当な変数名を使って余計分かりづらくなる事は否めない。
0144nobodyさん
2006/03/18(土) 13:51:47ID:v34qlBqH現在、エラー表示を作ろうとしているのですが、エラーには宣言のような事をしなければいけないのでしょうか?
たとえば、$nameに名前が入っていなければ、登録処理をせずに「名前が入力されていません」と表示させるにはどのような方法がいいのでしょうか。
現在、
if ($name = "") {
echo "名前が入力されていません。";
}
とやっているのですが、それでは$nameに名前が入力されていません。が代入されてしまうだけなのですが…。
良い方法があれば教えてください。
0145nobodyさん
2006/03/18(土) 13:58:25ID:???if($nameに名前が入ってないことを調べるための条件式){
エラー表示の内容を全て出力
}else{
登録処理及び登録完了の内容を全て出力
}
0148144
2006/03/18(土) 14:07:52ID:???0149nobodyさん
2006/03/18(土) 14:41:37ID:???非常にでかいファイルだと、file()でいっぺんに呼び出すこと自体がまずくないか?
変数に格納しなくても内部的には巨大なワークメモリを確保するだろう…
0150nobodyさん
2006/03/18(土) 14:45:45ID:???Dだと>>96みたいなのはどうやって書くんだろうな。
やっぱ一度変数いれんのかな?
もちろん言語が違えばスマートな書き方も違うけど。
0151nobodyさん
2006/03/18(土) 14:49:23ID:???0152nobodyさん
2006/03/18(土) 18:19:03ID:???CREATE DB test;
USE test;
CREATE TABLE testtable (num int(10));
のような複数行の命令を一度に実行したいのですが、どうしてもエラー
になってしまいます。
複数行の命令を一度に実行することは、できるでしょうか。
0153152
2006/03/18(土) 18:21:05ID:???2行目
誤)CREATE DB test;
正)CREATE DATABASE test;
0154nobodyさん
2006/03/18(土) 18:22:01ID:???create table test(
title varchar(255) not null,
comment text not null,
index(title))
";
mysql_query( $query);
で普通にできる
0155152
2006/03/18(土) 18:26:40ID:???早速のご回答、ありがとうございます。
せっかく答えていただいて申し訳ないのですが、私がやりたいのは
複数の「;」を持つ命令を一度のmysql_query();で実行することなん
です。
質問が不適切でした。すみません。
0157152
2006/03/18(土) 23:24:52ID:???すみません。バカでした。
mysql_error()関数でエラーメッセージを取得できるので、
PHPのエラーではなくMySQLのエラーのようです。
$t = mysql_connect('localhost', 'root', 'root');
mysql_query('CREATE DATABASE test; USE test', $t);
print mysql_error();
You have an error in your SQL syntax near '; USE test' at line 1
0159nobodyさん
2006/03/19(日) 00:31:41ID:???INSERT命令とUPDATE命令で確認したんだけど、
どうやら最後のセミコロン以降のみ有効になるっぽいな。
SQL文を配列に突っ込んでfor文とかでぶん回せば良いんじゃないの?
0160nobodyさん
2006/03/19(日) 03:35:41ID:???頑張ろうぜええええええええええええええええええええええええええええ
0161nobodyさん
2006/03/19(日) 09:20:28ID:???仕様上無理では仕方ありませんね。あきらめて複数のmysql_query()で
実行することにしました。
ご回答、ありがとうございました。
>>159
アドバイスをもとにして、外部ファイルに記録した複数のSQL文を実行
する関数をつくってみました。
http://www2.nct9.ne.jp/dorayaki/mysql_queries.txt
mysql_query()の返り値が不要なときはこれを使うことにします。
ご回答ありがとうございました。
0162nobodyさん
2006/03/19(日) 10:21:19ID:???0163nobodyさん
2006/03/19(日) 10:36:12ID:???0164161
2006/03/19(日) 10:54:22ID:???mysql_select_db()を使ってもよかったのですが、ひとつのファイルに
まとめて記述したほうが説明がしやすかったので、そうしました。
0167nobodyさん
2006/03/19(日) 12:10:47ID:iOnFUS0Lこのスクリプトはどういう仕組みなのでしょうか。
クエリ情報を取得する方法はわかるのですが、これをimagejpeg()に応用するには
どうすればいいでしょうか?
0168nobodyさん
2006/03/19(日) 12:44:13ID:???これなんでforeachじゃなくて
array_maximum_key()で回数とって回してるんですか?
教えてエロいひと(><)
0169nobodyさん
2006/03/19(日) 13:15:57ID:???まずはお前さんが、リンクしたスクリプトのソースを提示するか
挙動から推察した仕様を提示。
つか"2ちゃんねる・ブログ板の「デザイン(構造も)がかっこいいblog」スレ"
のまとめサイトらしいから、そっちで作者に尋ねるのが先では?
0170nobodyさん
2006/03/19(日) 13:58:26ID:???何を間違えているのでしょうか
0173nobodyさん
2006/03/19(日) 14:13:55ID:???「〜という出力を期待したのだが、〜という結果に終わった。」
さらに言うと、何故そうなったのかという自分なりの考察が欲しい所だ。
てか、原因を考えてみて色々試行錯誤している筈だから、
その辺の話が出てこない筈は無いんだが。
■ このスレッドは過去ログ倉庫に格納されています