【PHP】下らねぇ質問はID出して書き込みやがれ 117
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2012/03/22(木) 01:10:44.38ID:???過去スレ、関連スレ、FAQなどは>>2-10辺り
次スレは>>980が立てる。10分以内に立たない場合、宣言してから立てたい人が立てること。
◆前スレ
【PHP】下らねぇ質問はID出して書き込みやがれ 116
http://kohada.2ch.net/test/read.cgi/php/1330224598/
◆質問用テンプレ
【OS名】CentOS
【PHPのバージョン】5.3
【連携ソフトウェア】MySQL ImageMagick
【質問内容】
◆質問する時の注意
・ スレを上げて自分のIDを表示させること。(メール欄に何も記述しない。専ブラのsageチェックを外す)
・ 己の行った操作、変更などを詳しく明記すること。
・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。
・ 質問者として、態度をわきまえること。
・ 事前に関連リンクの公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。
(PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。)
◆質問後の注意
・2回目以降は最初に質問した際のレス番号を入れて、偽者防止に必ずIDを表示させること。
・解決しなくても回答をもらった場合はお礼を言うこと。
(荒らし、煽りは除く。煽られたときも、無闇に反論せずスルーすること。)
◆回答者への注意
・誰にレスしているのか分からないと困るので、>>(アンカー)をつけて回答すること。
【その他諸注意】
・SQL・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ
0002nobodyさん
2012/03/22(木) 01:11:02.18ID:???【PHP】下らねぇ質問はID出して書き込みやがれ 115
http://kohada.2ch.net/test/read.cgi/php/1327005803/
【PHP】下らねぇ質問はID出して書き込みやがれ 114
http://kohada.2ch.net/test/read.cgi/php/1325437405/
【PHP】下らねぇ質問はID出して書き込みやがれ 113
http://kohada.2ch.net/test/read.cgi/php/1322564127/
【PHP】下らねぇ質問はID出して書き込みやがれ 112
http://hibari.2ch.net/test/read.cgi/php/1320005469/
【PHP】下らねぇ質問はID出して書き込みやがれ 111
http://hibari.2ch.net/test/read.cgi/php/1317232566/
【PHP】下らねぇ質問はID出して書き込みやがれ 110
http://hibari.2ch.net/test/read.cgi/php/1314692611/
【PHP】下らねぇ質問はID出して書き込みやがれ 109
http://hibari.2ch.net/test/read.cgi/php/1311803617/
【PHP】下らねぇ質問はID出して書き込みやがれ 108
http://hibari.2ch.net/test/read.cgi/php/1309599473/
【PHP】下らねぇ質問はID出して書き込みやがれ 107
http://hibari.2ch.net/test/read.cgi/php/1307228162/
【PHP】下らねぇ質問はID出して書き込みやがれ 106
http://hibari.2ch.net/test/read.cgi/php/1304064660/
【PHP】下らねぇ質問はID出して書き込みやがれ 105
http://hibari.2ch.net/test/read.cgi/php/1300302034/
0003nobodyさん
2012/03/22(木) 01:11:17.39ID:???■本家マニュアル http://www.php.net/manual/ja/
■日本PHPユーザ会 http://www.php.gr.jp/
■PEARマニュアル http://pear.php.net/manual/ja/
■メーリングリスト http://ns1.php.gr.jp/mailman/listinfo/
■ZFマニュアル http://framework.zend.com/manual/ja/
■Smartyマニュアル http://www.smarty.net/manual/ja/
(以下英語)
■Zend本家 http://www.zend.com/
■Zend Framework http://framework.zend.com/
■php | architect http://www.phparch.com/
■Smarty http://www.smarty.net
■Smartyマニュアル http://smarty.php.net/manual/en/
■PECL本家(英語) http://pecl.php.net/
0004nobodyさん
2012/03/22(木) 01:11:29.90ID:???1.文字コードは何を使えばいいの?
→1.UTF-8 2.EUC-JP のどちらか。迷うようなやつはShift_JISは使っちゃダメ。
2. このスレに書き込むときに自分のサイト名を晒したくない
→ http://example.com/が例文などのために予約されている。hogehoge.comは使っちゃダメ。
3. ブラウザに何も表示されないんだけど・・・
→ Apacheの設定を見直せ。ファイルの拡張子は何にしてて、その拡張子でPHPを呼ぶようになっているか?
4. 記号の意味がわからないけどググりようがない
→ 「@」 エラー表示を抑制、「->」 オブジェクトのメンバにアクセス、「::」 静的なメソッド呼び出し、
「==」は暗黙の型変換をしてゆるい比較、「===」は型情報も含めた厳密な比較
5. echo "$arr['hoge']['fuga']"; と書いたらエラーになった
→ {おっぱい括弧}でくくって"{$arr['hoge']['fuga']}"にする
6. 一定時間ごとに自動的に何かしたいんだけど
→ cronかタスクスケジューラを使え。
7.extractって危険なの?
→変数上書き&初期化忘れなどで危険。楽だからという理由だけで安易に使わない。
8. include/requireに「〜.php?a=b&c=d」のようなパラメータをつけたい
→ URL呼び出しなら可能だけど、普通のファイル呼び出しではできません
9.include/requireでURLを指定しても何も起きない
→ .phpの拡張子のファイルをURLで呼び出すと、1度PHPプログラムとして実行された結果になる。
10. そもそもインストールの時点でうまくいかない
→ 確認すべきはPHPのconfigureの引数、php.iniの内容と置き場所、
Webサーバの設定(Apacheならhttpd.conf)、起動&再起動あたり
11. SQLの質問はどこで?
→ データベース板に誘導されるのが嫌ならPHPにうまく関連させて質問する
0005nobodyさん
2012/03/22(木) 01:11:40.70ID:???→ ctype_〜()が手軽。複雑なパターンはpreg_〜()あたりで正規表現を使う。
13. $a1, $a2, $a3 ... のような変数名をうまく扱いたい
→ 可変変数で実現できるけど、むしろ配列を使って$a[1], $a[2], $a[3]等とするのがベター
14. echoとprintってどう違うの?
→ よく議論される話題であるが基本的に両者とも同じ。 以下ちょっとした議論。
http://www.faqts.com/knowledge_base/view.phtml/aid/1/fid/40
15. クッキーの情報をユーザから隠したい
→ セッション使え。ただしクッキーとセッションは仕組みが違うから同じように扱うな
16. strip_tags()で削除しないタグを複数指定したい
→ strip_tags($html, '<a><p><font>'); // htmlspecialchars()も検討すべし
17. CSVやTSVのファイルをスマートに扱いたい
→ まずはfgetcsv()。ただし日本語を含むと正常に動作しない場合があるので注意だ。
18. 値渡しと参照渡し(「&」を使う)のパフォーマンスの違い
→ C言語じゃないので、パフォーマンス目的で使いわけたらダメ。参照渡しにすると逆に遅くなったりする
参照渡しは引数に戻り値を設定したり引数を関数内で変更するなど、正しい目的に使うこと
19. ファイル入出力関数(fopen等)でリモートファイル(http://〜とか)を扱う際の限界
→ fsockopen()でソケット通信 or PEARのHTTP系 or CURLで解決
必要ならHTTPをはじめとする各種プロトコル(どんなデータを送受信するか)はRFCなどで調べる
20. PHPからPOSTリクエストしたい
→19.を参照
21. 画像処理一般 or GDの限界
→ ImageMagick(PECLのやつ or シェルから実行)
22. 画像・音・動画はファイルで保存?DBに保存?
→ 好きにしてください
23. オブジェクト指向
→ 実装が中途半端なので使用しないこと。
本格的なオブジェクト指向言語に比較してパフォーマンスが劣ります。
24.パフォーマンスが悪いと感じられるとき
→ キャッシュを使用してください。
それでもだめならサーバーCPUのオーバークロックをお試しください。
0006nobodyさん
2012/03/22(木) 12:01:32.84ID:???0008nobodyさん
2012/03/22(木) 12:32:44.08ID:???0009nobodyさん
2012/03/22(木) 12:37:10.43ID:???CakePHPみたいなフレームワークも中途半端なOOだしな。
0010nobodyさん
2012/03/22(木) 16:38:47.26ID:???次も同じことになるんだろう。俺が出てくよ。
0011nobodyさん
2012/03/22(木) 17:33:03.99ID:???0012nobodyさん
2012/03/22(木) 17:43:47.74ID:???長い春休みの終わりだね
0014nobodyさん
2012/03/22(木) 22:00:14.83ID:???0015nobodyさん
2012/03/22(木) 22:36:09.09ID:???0016nobodyさん
2012/03/23(金) 02:14:01.87ID:iXg707kOmain.php
<?php
include("./sub.php");
$t="NG";
sub\check();
sub.php
<?php
namespace sub;
$t="OK";
function check(){
global $t;
print $t;//←ここでOKと出したい
}
この状態でmainを実行させた時NGが表示されてしまいます
OKと表示させるにはどうしたらよいのでしょうか
001719
2012/03/23(金) 07:20:16.77ID:iXg707kOだから、subでOKとした後にNGで上書きしてるのかなとも思ったのですが
(とは言え衝突を回避するのが名前空間の機能な訳で、グローバル変数は適用されないなんて書いてませんでしたが…)
main.php
<?php
include("./sub.php");
// $t="NG";//←ここを削除
sub\check();
sub.php
<?php
namespace sub;
$t="OK";
function check(){
global $t;
print $t;//←ここでOKと出したい
}
$t="NG";を消して、sub名前空間でグローバル変数$tを定義したのですが
やはりcheck();でsub名前空間のグローバル変数$tを取る事が出来ません。
nullになってしまいます。
sub名前空間のグローバル変数を、sub名前空間の関数から取るにはどうしたらよいのでしょうか。
001816
2012/03/23(金) 07:20:40.34ID:iXg707kOmain.php
include("./sub1.php");
include("./sub2.php");
$API1=sub1\get();
$API2=sub2\get();
sub1.php
namespace sub1;
$APIKey=getKey();
function getKey(){
....
}
function get(){
global $APIKey;
$APIKey.="ごにょごにょ";
return $APIKey;
}
sub2.php
namespace sub2;
$APIKey=getKey();
function getKey(){
//sub1のgetKeyとは全く違う処理
}
function get(){
global $APIKey;
$APIKey.="何々";//sub1のgetとは全く違う処理
return $APIKey;
}
と言う風に書いているので、sub名前空間のグローバル変数にアクセスしたいです
0019nobodyさん
2012/03/23(金) 11:10:58.87ID:???functionのglobalは、functionが定義されたときに入るわけじゃなくて
そのfunctionが呼ばれたときに入るっす。
だから、$t='NG';のあとに呼んだら当然、NGになるわけっす。
includeするファイルの中で$t=としておいても、その後、functionを呼ぶ前に$t=したら、そっちが入るってわけっす。
頑張って整理しなおしてちょ。
0020nobodyさん
2012/03/23(金) 11:30:48.69ID:jFveHLppニードルより手前を返す
002121
2012/03/23(金) 11:34:23.42ID:???php5.0だといろいろなことが出来なくてつらいね
0022nobodyさん
2012/03/23(金) 11:38:28.01ID:???0023nobodyさん
2012/03/23(金) 11:47:50.04ID:???> (とは言え衝突を回避するのが名前空間の機能な訳で、グローバル変数は適用されないなんて書いてませんでしたが…)
勝手に解釈しない
http://www.php.net/manual/ja/language.namespaces.definition.php
> PHP のコードならなんでも名前空間に含めることができますが、
> 実際に名前空間の影響を受けるのはクラスとインターフェイス、関数、そして定数の 4 種類だけです。
0024nobodyさん
2012/03/23(金) 12:07:05.97ID:zUr5jMT5を参考に、テーブル内の平均を求めたいのですが
$sql = ""; ←1
$sql = "SELECT AVG(point) FROM dt_table";
$res = mysql_query($sql, $connectDB); ←2
$Avg_point = @mysql_fetch_assoc($res); ←3
print $Avg_point['AVG(point)'];
この3つは具体的に何をしてるのでしょうか?
特に3の@が理解できなくて
0025nobodyさん
2012/03/23(金) 12:38:02.71ID:???2 sql接続
3 取り出したデータを配列に格納
@ データが配列じゃない時出るエラーを表示しないようにしてる
0027nobodyさん
2012/03/23(金) 15:25:04.46ID:???3 取り出したデータ SELECT〜でSQLから帰ってくる値
@ SELECT文の結果は普通は表 sqlエラーは表じゃない 表じゃないのが帰ってくると配列に入れられない
すまないiphoneなんだ くわしく説明できなくてすまない
0028nobodyさん
2012/03/23(金) 15:31:17.87ID:???0029nobodyさん
2012/03/23(金) 16:38:56.91ID:???1や@あたりを聞いてくるに2は、$connectDBの意味わからないとか
そういうオチじゃないのか。
003016
2012/03/23(金) 19:16:41.63ID:iXg707kO申し訳ありません、読み取れていませんでした。
main.php
<?php
include("./sub.php");
sub\check();
sub.php
<?php
namespace sub;
$t="OK";
function check(){
global $t;
print $t;//←ここでOKと出したい
}
//----
グローバル変数は名前空間の影響を受けないのは分かりましたが
$t="NG";を消し、$t="OK";のみ書いたとしても、check()で$tが取得できないのは何故でしょうか
print $tはnullになってしまいます。
0032nobodyさん
2012/03/24(土) 01:12:55.15ID:???0033nobodyさん
2012/03/24(土) 02:46:58.29ID:???0034nobodyさん
2012/03/24(土) 19:32:43.78ID:???0035nobodyさん
2012/03/24(土) 19:34:39.57ID:???勘違いだった
0036nobodyさん
2012/03/25(日) 12:14:33.01ID:???$b = "nguy cef trhv vsred";
最後から数えて、
一番最初に半角スペースが出る位置から最後まで
文字列を取得する方法を教えてください
$aならaerf
$bならvsred
003736
2012/03/25(日) 12:14:50.10ID:QMJF3zqJ$b = "nguy cef trhv vsred";
最後から数えて、
一番最初に半角スペースが出る位置から最後まで
文字列を取得する方法を教えてください
$aならaerf
$bならvsred
0038nobodyさん
2012/03/25(日) 12:17:59.42ID:QMJF3zqJ0039nobodyさん
2012/03/25(日) 12:30:46.27ID:???http://www.php.net/manual/ja/function.strrchr.php
0040nobodyさん
2012/03/25(日) 18:39:55.84ID:Xs8rCD1jincludeした時に、includeした部分だけ文字化けしたりして、困っています・・。
004240
2012/03/25(日) 19:08:41.50ID:Xs8rCD1jそんなものがあるのですか?
0043nobodyさん
2012/03/25(日) 19:23:51.85ID:???004440
2012/03/25(日) 19:40:57.72ID:Xs8rCD1jなるほど・・・・・・・
0045nobodyさん
2012/03/25(日) 19:51:45.11ID:XZS3up0b0046nobodyさん
2012/03/25(日) 19:58:34.44ID:???http://jp.php.net/abstract
0047nobodyさん
2012/03/25(日) 22:06:24.52ID:gnfrYa0q自分が考えたのは以下のような感じです。
$user = new User($_SESSION['user_id']);
class User
{
protected $name;
protected $role;
protected $age;
public function __construct($id) {
$this->name = $this->getName($id);
$this->role = $this->getRole($id);
$this->age = $this->getAge($id);
}
// メソッドは省略
}
このやり方でおかしくないでしょうか?
だめなところがあれば教えて頂きたいです。
0048nobodyさん
2012/03/25(日) 22:08:42.48ID:???if ($user->name == 'master') みたいに使います。
0049nobodyさん
2012/03/25(日) 22:09:30.75ID:???0050nobodyさん
2012/03/25(日) 22:22:33.78ID:???0051nobodyさん
2012/03/25(日) 22:22:56.79ID:???0052nobodyさん
2012/03/25(日) 22:31:12.23ID:???005347
2012/03/25(日) 22:36:44.33ID:gnfrYa0q$user = new User($_SESSION['user_id']);
class User
{
public $name;
public $role;
public $age;
function __construct($id) {
$this->name = $this->getName($id);
$this->role = $this->getRole($id);
$this->age = $this->getAge($id);
}
// メソッドは省略。全部DBから引っ張ってきます。
}
他にも突っ込みどころがあればどんどんお願いします
0054nobodyさん
2012/03/25(日) 22:39:07.83ID:???005547
2012/03/25(日) 22:54:21.92ID:gnfrYa0q$user = new User($_SESSION['user_id']);
$user_age = $user->getAge();
if ($user_age < 20) exit('煙草は二十歳になってから。');
みたいな書き方になりますよね。
publicにしてコンストラクタで全部突っ込んでおけば
$user = new User($_SESSION['user_id']);
if ($user->age < 20) exit('煙草は二十歳になってから。');
という感じで一手間省けていいかと思ったのですがまずいですか?
0056nobodyさん
2012/03/25(日) 23:17:21.65ID:???005847
2012/03/25(日) 23:34:24.80ID:gnfrYa0q0060nobodyさん
2012/03/25(日) 23:41:41.63ID:???質問者さんはかわいそうだけど。
0063nobodyさん
2012/03/26(月) 06:27:50.67ID:???0064nobodyさん
2012/03/26(月) 10:05:56.18ID:HmiPRK1e【PHPのバージョン】5.3
【連携ソフトウェア】MySQL
【質問内容】
ここで質問していい内容かどうかちょっと迷ったのですが、
POSTでデータを送信して画面を移動した後に、
再読込みなんかをすると「データを再送信しますか?」といった表示がされます。
ブラウザ側でPOSTのデータが保持されているような状態なんじゃないかと思いますが
再読込みしてもそういった表示が出ないようにすることは可能でしょうか?
0065nobodyさん
2012/03/26(月) 10:10:23.26ID:???0066nobodyさん
2012/03/26(月) 10:24:02.70ID:scUKAG1Lまた、それぞれの長点、欠点はなんですか
0067nobodyさん
2012/03/26(月) 10:54:08.22ID:???フレームワークを使ってCMS構築したりもするだろうし
0070nobodyさん
2012/03/26(月) 11:17:21.49ID:scUKAG1Lサーバー → 土地
PHP → 資材
ライブラリ → 小工具
フレームワーク → 大工具
CMS → 注文住宅
WEBサイト → 建売住宅
プログラマー → 土方
0071sage
2012/03/26(月) 12:16:47.49ID:???○プログラマー → 大工
0072nobodyさん
2012/03/26(月) 16:08:22.19ID:scUKAG1L<input name="up_submit" type="submit" value="アップロード"/>
ってしてやると、画象情報をaction 先に送れるじゃないですか。
<input name="image01" type="file" size="30"/>
<input name="image02" type="file" size="30"/>
<input name="image03" type="file" size="30"/>
<input name="image04" type="file" size="30"/>
<input name="up_submit" type="submit" value="アップロード"/>
と、複数あった場合、次のページで
アップロードするデータがあった × 繰り返し
をしたいんですが、何か うまい方法ないですか?
0073nobodyさん
2012/03/26(月) 16:36:58.16ID:???count($_POST['image'])
0074nobodyさん
2012/03/26(月) 16:37:15.96ID:???count($_POST['image'])
0075nobodyさん
2012/03/26(月) 17:49:35.83ID:scUKAG1Lありがとうございます。
0076nobodyさん
2012/03/26(月) 18:13:36.19ID:scUKAG1L画象関連のことをやってるのですが、
データベース読み込む
↓
レコード回す
↓
$row[レコードのid].jpg で表示する
↓
画象が無い時は、noimg.jpg 表示する
↓
データベース閉じる
なことやってるんですが、
画象があるかどうかってやっぱ
if(file_exists($base_path.$file_name.".jpg")){
画象ある時
}else{
画像ない時
}
という処理になるしかないですか?
画象が1種類ならまだしも、画象01 画象20とか20枚くらいになってくると
file_existes だらけになるなー と。
0077nobodyさん
2012/03/26(月) 18:22:51.34ID:IgGnmM6E{$arr[$key[$i]]}
はエラーになり
{assign var="k" value=$key[$i]}
{$arr[$k]}
こうしないと動かない
0078nobodyさん
2012/03/26(月) 18:54:29.17ID:???ループしてるんだからループの中で判定すればよかろ。
あと、
> 画像ない時
ちょっぴり感動した。
>>77
http://www.smarty.net/docsv2/ja/language.syntax.quotes.tpl
0079nobodyさん
2012/03/26(月) 18:57:16.56ID:???そもそもDBにレコードいれる際に、
ファイルがあるかどうかのフラグを入れるなりすればいいじゃん。
一意にIDから紐付けだけでやろうとすると、DBから引き出した後にどうしても判別は必要になる。
DB挿入時点でそのあたりちゃんとやってあげれば、SELECT文側でifかけて、いきなりidによるファイル名か、noimgを指定するかも出来るよ。
0080nobodyさん
2012/03/26(月) 19:13:51.94ID:???■ このスレッドは過去ログ倉庫に格納されています