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

【PHP】下らねぇ質問はここに書き込みやがれ 54

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん2007/09/09(日) 12:42:57ID:64tYOx8R
まず読め→【PHP マニュアル】http://www.php.net/manual/ja/
PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。
過去スレ、関連スレ、FAQなどは>>2-10辺り

◆前スレ
【PHP】下らねぇ質問はここに書き込みやがれ 53
http://pc11.2ch.net/test/read.cgi/php/1188047468/

◆質問する時の注意
・ 自分のIDを表示させること。(メール欄に何も記述しないこと。空白も入力しちゃダメ)
・ サーバーのOS(Linux、Windows他)、WebサーバーとPHPの種類やバージョン等を明記すること。
・ 己の行った操作、変更などを詳しく明記すること。
・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。
・ 質問者として、態度をわきまえること。
・ 事前に公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。

◆質問後の注意
・偽者防止に必ずIDを表示させること。(メール欄に何も記述しない)
・2回目以降は最初に質問した際のレス番号を名前欄に入れること。
・解決しなくても回答をもらった場合はお礼を言うこと。
 (荒らし、煽りは除く。煽られたときも、無闇に反論せずスルーすること。)

◆回答者への注意
・誰にレスしているのか分からないと困るので、>>(アンカー)をつけて回答すること。

【その他諸注意】
・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ
・SQLについての質問はデータベース板(PCカテゴリ)の各スレで
0140nobodyさん2007/09/12(水) 12:45:54ID:rYUimiSO
PerlのPackage関数のように、別ファイルをrequireしたときに名前空間をつけてあげることは可能でしょうか。

ご教示いただけますと幸いです。
01411382007/09/12(水) 13:00:19ID:???
>>139さんありがとうございました、そもそも判定基準が違いましたね。
PHPマニュアルを読むクセをつけます。
0142nobodyさん2007/09/12(水) 13:34:21ID:???
>>140 classの事かな?
0143nobodyさん2007/09/12(水) 14:11:05ID:???
>>141
うむ、がんばってくれ
0144nobodyさん2007/09/12(水) 14:13:55ID:???
マニュアル読んでないのに何故issetとemptyを使おうと思ったのか不思議だ・・・
0145nobodyさん2007/09/12(水) 14:29:27ID:???
>>144
マニュアルを読んでないとは書いてないぞ
0146nobodyさん2007/09/12(水) 14:58:02ID:???
>>145
読んだらこんな質問は出ないはず
http://jp.php.net/ja/empty
の例に書いてあるし
0147nobodyさん2007/09/12(水) 15:15:54ID:???
>>145
>PHPマニュアルを読むクセをつけます。
ここから読んでると判断する君の文章解析能力が心配だ
0148nobodyさん2007/09/12(水) 15:20:46ID:???
>>147
君は読解力がついてないみたいでかわいそうだね。
>PHPマニュアルを読むクセをつけます。
というのはちゃんと読むことを指してると思うんだが
0149nobodyさん2007/09/12(水) 15:33:58ID:???
ここは日本語スレですか?
常識的に考えて「マニュアルを読む癖をつけます」っていう言葉からは
今までマニュアルを読んでいないとは断定できないが
今まで読んでいたとも断定できない
つまりどっちともとれる表現であるというのが結論
つまり>>145の言ってることも正しいし>>147の言ってることも正しい
0150nobodyさん2007/09/12(水) 15:40:01ID:???
さらっと字面を追っただけで「読んだ」なんて言わねーっつの
0151nobodyさん2007/09/12(水) 16:33:10ID:???
くだらない質問に、くだらない突っ込みを入れた事に、くだらない突っ込みを入れるスレになってるなw
0152nobodyさん2007/09/12(水) 17:04:11ID:xkG1TV3g
ありがとうございます。あともうひとつ質問させてください。

if ($_SERVER['REQUEST_METHOD'] === POST) {
}
if ($_SERVER['REQUEST_METHOD'] === "POST") {
}

POSTが送信されたか判断するとき、↑のどちらで書けばいいのでしょうか?
どちらの文も同じ動作でしたが文法的にどちらが推奨でしょうか。
0153nobodyさん2007/09/12(水) 17:07:03ID:???
if ($_POST[''])
0154nobodyさん2007/09/12(水) 17:13:28ID:bal64F9r
if ($_POST)
0155nobodyさん2007/09/12(水) 17:14:36ID:???
>>152
文字列をクォートしないのは論外。
送信されるパラメータで
if(isset($_POST['hoge']))
とするのもあり。
0156nobodyさん2007/09/12(水) 17:22:06ID:???
>>152
上のはこっそりとNotice errorが出ている
どうして上のをNoticeにしたのかわからないな
fatal エラーでいいじゃん
0157nobodyさん2007/09/12(水) 17:32:25ID:???
定数を勝手に文字列にしてくれる親切な仕様
0158nobodyさん2007/09/12(水) 18:01:48ID:???
>>152
上のは自動補正が働いてるだけで実際はミス。
0159nobodyさん2007/09/12(水) 18:28:10ID:???
>>142
func.phpというのをよんだとき、Perlのように頭に
package f; 書けば呼び出し元ソース内で f::kansuu();
といったように使えるようにしたいのです。

恐れ入りますがご教示いただけますと幸いです。
0160nobodyさん2007/09/12(水) 18:35:02ID:???
新しく取り組む言語でも自分の慣れた書き方で楽に済ましたいなんて甘い考えでプログラムやるな
0161nobodyさん2007/09/12(水) 19:09:30ID:hkjgamim
>>159
クラス定義の中でfunc.phpを読み込めばいいと思います。
0162nobodyさん2007/09/12(水) 19:12:46ID:5Xj/wG4U
empty関数について質問なのですが、引数で指定された変数の値を検査します。
変数に何もセットされていない場合には「false」を値が空だった場合には「true」を返します。

との事ですが(empty($_POST["test"])とした時、受け取った値が"123"ならば123ですよね
falseとtureの場合の違いが分からないのですが、どのような場合なのでしょうか?
0163nobodyさん2007/09/12(水) 19:19:49ID:???
>>162
http://jp.php.net/empty
0164nobodyさん2007/09/12(水) 19:19:55ID:i+nu8B4+
$bool = trueだったら$bool = falseにして
$bool = falseだったら$bool = tureに
一行でする方法ありますでしょうか?
0165nobodyさん2007/09/12(水) 19:29:37ID:???
!$bool
0166nobodyさん2007/09/12(水) 19:29:42ID:???
>>164
$bool = !$bool;
0167nobodyさん2007/09/12(水) 19:31:29ID:5Xj/wG4U
>>163
何となく理解する事が出来ました。サイトまで教えて頂き有難うございます。
0168nobodyさん2007/09/12(水) 19:31:47ID:???
>>165-166
そういう使い方ができるのですね
ありがとうございます
0169nobodyさん2007/09/12(水) 19:51:55ID:???
>>161
class hoge {
include("func.php");
}

俺もこれで良いと思ったんだが、何気に出来ないんだな。
0170nobodyさん2007/09/12(水) 20:07:55ID:hkjgamim
>>161で 「クラス定義の中でfunc.phpを読み込めばいいと思います。」 と申したあとに、
そんなことはできないかもしれないと思って試したら、 案の定できませんでした。
おそらくクラス定義の中ではメンバ宣言とメソッド宣言以外は不正なのでありましょう。
大変失礼しました。
0171nobodyさん2007/09/12(水) 21:20:44ID:???
じゃコンストラクタ使えばいいじゃん
0172nobodyさん2007/09/12(水) 22:01:50ID:???
クラスの使い方がおかしいだろ・・・
0173nobodyさん2007/09/12(水) 22:16:11ID:5Xj/wG4U
PHPを実行した後構文等が間違っていたら何行目が間違ってますみたいな表示を
させる事は出来るのでしょうか?
インターネットオプションの詳細設定からスクリプトエラーごとに通知にチェックを
入れたのですが何をしてもページが表示できません。で止まってしまうのですが
0174nobodyさん2007/09/12(水) 22:23:22ID:???
トン吉チン平カン太!
0175nobodyさん2007/09/12(水) 22:24:57ID:???
>>164
$bool ? false : true;
があるじゃーのん?
0176nobodyさん2007/09/12(水) 23:14:21ID:TcT1t6MR
PHP4で使えるORMなあれってどれがいいの?
ActiveRecord?とか言うヤツ?
PHP5への移行を視野に含めた上でお勧め教えてけろ
0177nobodyさん2007/09/12(水) 23:37:46ID:???
<?php
session_start();
if(isset($_SESSION["login"])) {
?>
<HTML>
<HEAD>
<TITLE>a</TITLE>
</HEAD>
<BODY>
<form action = "secretlogin.php" method = "post"> //secret.phpかも
ようこそ <?=$_SESSION["login"]?>様!
<h2>掲示板に書き込む</h2>
<a href = ./sread_list.php>一覧ページ</a>ここをクリック<br> //./無しかも
<a href = ./logout.php>ログアウト</a>ここをクリック<br>

<hr>
<table>
<tr><td align = right>タイトル</td><td><input type = "text" name = "title"></td></tr>
<tr><td align = right>投稿者</td><td><input type = "text" name = "name"></td></tr>
<tr><td align = right>記事</td><td><text area rows=5 cols=30 name="article"></td></tr>
<tr><td><colspan = 2 align = "center">

<hr>
<input type = "submit" value = "送信"><input type = "reset" value = "取消"></td></tr>
</table>
</form>
</body>
</html>

何故か実行出来ないのですがどの辺りに問題ありますか?
0178nobodyさん2007/09/12(水) 23:40:56ID:???
日本語で(ry
0179nobodyさん2007/09/12(水) 23:57:01ID:???
>>177
問題箇所の特定くらい自分でしろ
0180nobodyさん2007/09/13(木) 01:41:33ID:jFkqotf1
動的ページの場合
それぞれのページへsession_start();は書かないといけないのでしようか?
read.php を読み込んでそこへ各ページ用ファイルを読み込んでるページなんですが。
ページを移動すると、セッションが切れてしまいます。
0181nobodyさん2007/09/13(木) 02:06:32ID:???
>>180
自己レス
list($GET_PAGE3,$_SESSION['navi_on'])=explode("-",$GET_PAGE03);
としていたので$_SESSION['navi_on']に何も入るはずがないページに行くと
セッションが空になっていたようです。
失礼しました
0182nobodyさん2007/09/13(木) 08:28:27ID:???
perlでは臨時で変数を使いたいときに、
{
my $tmp = $foo;
}
ってブロック内で処理してたんですけど、
PHPではこういうときはどうやるんですか?
0183nobodyさん2007/09/13(木) 09:12:18ID:???
>>182

まず>>1を読みたまえ
01841822007/09/13(木) 09:25:06ID:???
自己解決しました
01851822007/09/13(木) 10:16:24ID:NzuBOnrd
>>184
消えてくれませんか?
ここはレベルがほんとひくいですね。げんなりしました。
01861822007/09/13(木) 10:24:30ID:n543y+IO
>>185
185は私ではありません。
わざと人のことを騙って楽しむなんて気持ち悪い人たちですね。
信じられません。
もう質問はいいです。
01871822007/09/13(木) 10:25:54ID:NzuBOnrd
>>186
もう騙りはいいんで
01881822007/09/13(木) 10:29:18ID:GzCzMpSl
もう騙りはいいんで
0189nobodyさん2007/09/13(木) 10:32:09ID:???
今回のケースは>>1に書いてあることを守れなかった>>182がいけない
0190nobodyさん2007/09/13(木) 11:12:21ID:???
>>182
ここはこんなところだ
もう2度と来るんじゃないぞ
01916262007/09/13(木) 11:41:49ID:???
6つの変数が同じかどうか比較するためにはどう書いたら一番効率がいいでしょうか?
教えてくださいえらい人
0192nobodyさん2007/09/13(木) 11:46:05ID:???
なんつうか、専ブラじゃデフォでsage設定だったりして、
単純にID出し忘れるやつもいるんだから、
ID出してまで本人ぶるのはやめようぜ。
本当に>>185 or >>186が本人だったらただの痛い人だが。
0193nobodyさん2007/09/13(木) 11:47:57ID:TsTr8KNx
〓●〓●〓●〓●〓●〓●〓●〓●〓●〓●〓●〓●〓●〓●〓●〓●〓●〓●〓●〓●〓●〓●〓●〓●〓●〓●〓●〓●〓●〓●
TOSHIBAのCX925LL(ウィンドウズXP搭載)に市販のウィルス対策ソフトのウィルスキラーゼロ(E-フロンティア社)をインス
トール後、アップロードしようとしているのですが、相性が悪いらしくアップロードできません。

付属されていない市販のセキュリティーソフトをインストール、アップロードするために、元々インストールしてあったソフトウェア
「ファイナルストッパー」、「マカフィー・パーソナルファイアウォールプラス」をアンインストールした後、市販のセキュリティー
ソフトが相性が悪かった為か、うまくインストールアップロードできなかった場合、再度「ファイナルストッパー」「マカフィーパー
ソナルファイアウォールプラス」をインストールすることはできますか?
また、どうすればできますか?

どなたか教えてください。お願いいたします。
0194nobodyさん2007/09/13(木) 12:02:28ID:???
>>192
だすわすれたらだせばいい
0195nobodyさん2007/09/13(木) 12:27:52ID:???
>>191
if (($a * $b * $c * $d * $e * $f) / 6 == $a)
0196nobodyさん2007/09/13(木) 12:29:21ID:???
なんで整数って決まってんだよw
0197nobodyさん2007/09/13(木) 12:40:27ID:???
>>191
ageってww
そこまでしてID出したくないのかww
0198nobodyさん2007/09/13(木) 12:53:59ID:???
>>191
効率ってコードサイズ?実行速度?
0199nobodyさん2007/09/13(木) 13:06:58ID:???
>>195
平均出すなら * じゃなくて + だろ
平均出してもしょうがないけど
0200nobodyさん2007/09/13(木) 13:15:30ID:???
>>199
相乗平均も知らない低脳ハッケーン
0201nobodyさん2007/09/13(木) 13:28:50ID:???
>>201
相乗平均知らない低脳ハッケーン
0202nobodyさん2007/09/13(木) 13:29:29ID:???
6で割ってるのが見えないの?
0203nobodyさん2007/09/13(木) 13:31:02ID:???
>>200
6が見えてない馬鹿ハッケーン
0204nobodyさん2007/09/13(木) 13:33:55ID:???
+して/って1の方が早くない?
0205nobodyさん2007/09/13(木) 13:34:49ID:???
>>191
if ($a == $b && $a == $c && $a == $d && $a == $e && $a == $f) {
echo "同じ";
}
0206nobodyさん2007/09/13(木) 13:45:16ID:???
201 :nobodyさん:2007/09/13(木) 13:28:50 ID:???
>>201
相乗平均知らない低脳ハッケーン
0207nobodyさん2007/09/13(木) 13:50:32ID:???
191 :626:2007/09/13(木) 11:41:49 ID:???
6つの変数が同じかどうか比較するためにはどう書いたら一番効率がいいでしょうか?
教えてくださいえらい人

195 :nobodyさん:2007/09/13(木) 12:27:52 ID:???
>>191
if (($a * $b * $c * $d * $e * $f) / 6 == $a)





すべての変数が3という同じ値だとします。

(3 * 3 * 3 * 3 * 3 * 3) / 6 == 3

計算すると729 / 6 == 3


バカだな。ワロタwww
0208nobodyさん2007/09/13(木) 13:53:09ID:???
×と+の間違いだとしても、

(2 + 4 + 3 + 3 + 3 + 3) / 6 == 3

で全部同じじゃなくてもtrueになる。
0209nobodyさん2007/09/13(木) 14:04:27ID:???
perlで書くところのヒアドキュメント
$obj->msg(<<EOT);
ここにメッセージ
EOT

なんですが、phpで書いてもうまくいきません。
$obj->msg(<<< EOT)
ここにメッセージ
EOT;

正しい書き方教えてください。
0210nobodyさん2007/09/13(木) 14:51:35ID:???
寝る間もないくらい仕事がコンスタントにくるweb制作者というのは
それだけで、いいweb制作者ということです。(低レートに甘んじてりゃ
それなりに仕事くると思っている人がいますが、現実はそうじゃない)

当然レートは高いのです。
年収1000万なんて軽いですよ。
0211nobodyさん2007/09/13(木) 15:51:15ID:???
うん。技術力とは関係ないけどね。
0212nobodyさん2007/09/13(木) 16:42:03ID:e5IQPewW
PHP5のPDOで、HTTP_Session的に、
sessionをデータベースに格納してくれるライブラリってありませんか?
0213nobodyさん2007/09/13(木) 16:44:06ID:???
>>212
いまいち意味がわからないけどシリアライズでもしたら?
0214nobodyさん2007/09/13(木) 18:38:27ID:???
>>209
マニュアル
0215nobodyさん2007/09/13(木) 19:14:09ID:p1bkeaSR
携帯用掲示板を作っているのですが、
セッションを使わずに
入力→確認→投稿
のようなものを作りたいのですが
何か良い方法はないでしょうか?
hiddenも考えたのですが、ページの容量(入力したテキスト)が2倍になってしまいます。
0216nobodyさん2007/09/13(木) 19:34:09ID:???
3画面構成のファイルを作りたいのですが、1ファイルのみで3画面を構成する事は出来ますか?
習った事を考えると3ファイル作らないと行けないのですが、出来ますか?
0217nobodyさん2007/09/13(木) 19:37:40ID:???
>>215
自分でトークン発行すれば〜
>>216
出来るよ
02182162007/09/13(木) 19:38:43ID:???
>>217
有難うございました。
0219nobodyさん2007/09/13(木) 19:45:40ID:p1bkeaSR
>>217
トークンとは何でしょうか?
02202162007/09/13(木) 19:47:53ID:HG9TD0jf
>>217
どのようにしたらいいでしょうか?POSTで別ファイルにデータを送り取得する方法以外で
ヒントでも教えて頂けると嬉しいのですが。
02212162007/09/13(木) 20:09:07ID:HG9TD0jf
PHP内で条件分岐をさせれば良かったのですね。すいませんでした
0222nobodyさん2007/09/13(木) 20:38:16ID:???
>>219
徹君の愛称
0223nobodyさん2007/09/13(木) 20:57:25ID:???
PHPに限ったことではないのですが、例えば
if (・・・) {
 $error+=1;
} else {
 if (・・・) {
  $error+=2;
 } else {
  if (・・・) {
   $error+=4;
  } else {
   //エラーが無いなら処理
  }
 }
}
このように様のifのネストが深くなっていくことが想定された場合
swich (0) {
default:
 if (・・・) {
  $error+=1;
  break;
 }
 if (・・・) {
  $error+=2;
  break;
 }
 if (・・・) {
  $error+=4;
  break;
 }
 //エラーが無いなら処理
}
上記の様にswitchまたはdo-whileなどで囲み、エラーはbreakで脱出するという書き方は邪道でしょうか?
0224nobodyさん2007/09/13(木) 20:59:11ID:???
ネストしない書き方にしろよ
0225nobodyさん2007/09/13(木) 21:24:00ID:???
>>223
それ以前の書き方に問題がある気がしてならない
0226nobodyさん2007/09/13(木) 21:33:08ID:???
正統も邪道もあるかい。自分がいいならそれでいい
0227nobodyさん2007/09/13(木) 21:41:18ID:???
基本的には好きなように書けばいいが、物には限度ってものがある
02282232007/09/13(木) 21:43:20ID:???
$sql = "SELECT hoge FROM tableA WHERE foo=?";
$res=& $db->query($sql, $foo);
if (!DB::isError($res) && $res->numRows()==1) {
 $res->fetchInto($row);
 $sql = "UPDATE tableB SET hoge=? WHERE foo=?";
 $res=& $db->query($sql, array($row['hoge'], $foo));
 if (!DB::isError($res) && $db->affectedRows()==1) {
  $res->fetchInto($row);
  $sql = "UPDATE tableC SET hoge=? WHERE foo=?";
  $res=& $db->query($sql, array($row['hoge'], $foo));
  if (!DB::isError($res) && $db->affectedRows()==1) {
   //以下(ry
  }
 }
}
こんなケースはどうでしょう?
どうやってネストを回避しますか?
0229nobodyさん2007/09/13(木) 21:55:01ID:???
あくまで一例としてエラー情報を持たせてエラー画面に飛ぶ
即座に中断
ぐらいは誰でも瞬時に思いつく
0230nobodyさん2007/09/13(木) 21:58:54ID:???
>>223
俺はこうする
if (・・・) {
 $error+=1;
} elseif (・・・) {
 $error+=2;
} elseif (・・・) {
 $error+=4;
} else {
 //エラーが無いなら処理
}
0231nobodyさん2007/09/13(木) 22:08:30ID:???
(1行目)|項目1-0,項目2-0,項目3-0,項目4-0,項目5-0
(2行目)|項目1-1,項目2-1,項目3-1,項目4-1,項目5-1
(3行目)|,,,,
(4行目)|項目1-2,項目2-2,項目3-2,項目4-2,項目5-2
(5行目)|,,,,
(6行目)|項目1-3,項目2-3,項目3-3,項目4-3,項目5-3
↑…というcsvファイルを

データのない行(上の例では3・5行目)で区切って、
1〜2行目、4行目、6行目とそれぞれ配列に格納するには
どういう考え方でプログラムを組んだらよいでしょうか。

横方向であれば、file()で読み込ませた後に、
list()やexplode()関数で分割する考え方になりますが…
0232nobodyさん2007/09/13(木) 22:15:31ID:???
switch case
02332312007/09/13(木) 22:17:17ID:???
>>232
それで解決しました
ありがとうございます
0234nobodyさん2007/09/13(木) 22:33:59ID:???
>>228
function hoge() {
 $sql = "SELECT hoge FROM tableA WHERE foo=?";
 $res=& $db->query($sql, $foo);
 if (DB::isError($res) || $res->numRows()!=1) return false;
 $res->fetchInto($row);
 $sql = "UPDATE tableB SET hoge=? WHERE foo=?";
 $res=& $db->query($sql, array($row['hoge'], $foo));
 if (DB::isError($res) || $db->affectedRows()!=1) return false;
 $res->fetchInto($row);
 $sql = "UPDATE tableC SET hoge=? WHERE foo=?";
 $res=& $db->query($sql, array($row['hoge'], $foo));
 if (DB::isError($res) || $db->affectedRows() != 1) return;
 //以下(ry
 return true;
}

0235nobodyさん2007/09/13(木) 22:34:31ID:???
or exit
でいいじゃんw
0236nobodyさん2007/09/13(木) 23:06:47ID:???
つうか似たようなUPDATEが2回続いた時点で関数を分けたほうが(ry
0237nobodyさん2007/09/13(木) 23:07:57ID:KIVNzqAT
正規表現のエスケープを一括で行ってくれる関数ってないですかね。
皆さんは自力でエスケープしてます?
0238nobodyさん2007/09/13(木) 23:09:13ID:???
PHP 4.3.9 をダウンロードしたいのですが、
本家ダウンロードページでは最新バージョンへのリンクしか見つかりませんでした。
どこかでダウンロードできないでしょうか。
0239nobodyさん2007/09/13(木) 23:19:59ID:???
>>237
preg_quote()
■ このスレッドは過去ログ倉庫に格納されています