【PHP】下らねぇ質問はここに書き込みやがれpart17
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2006/02/24(金) 22:05:48ID:YHkZgU8bここなら本スレで回答のないお前の下らない質問に回答があるかも知れません。
まず読め【PHP マニュアル】
http://www.php.net/manual/ja/
本スレ【PHP】質問スレッドpart33【php】
http://pc8.2ch.net/test/read.cgi/php/1140027592/l50
前スレ【PHP】下らねぇ質問はここに書き込みやがれpart16
http://pc8.2ch.net/test/read.cgi/php/1139146534/l50
過去スレは>>2
0176174
2006/03/01(水) 12:41:13ID:???0178nobodyさん
2006/03/01(水) 12:44:38ID:???0179nobodyさん
2006/03/01(水) 13:07:10ID:YIO/KfnWprint ($flag)? <<TEXT1 : <<TEXT2;
なんたら1
TEXT1
なんたら2
TEXT2
みたいに書けるんだけど、PHPの場合はこれって
print ($flag)? <<<TEXT1
なんたら1
TEXT1
: <<<TEXT2
なんたら2
TEXT2;
って書くしかない?
0180nobodyさん
2006/03/01(水) 13:28:25ID:???ctype_digit($hoge);
という関数もある。
Cのネイティブ関数なのでこれでよければctype関数の方が早い
ただし$hogeは文字列
$hoge = 10;
ctype_digit($hoge)はfalseになる
$hoge = 48; //'0'のASCIIコード0x30
ctype_digit($hoge)はtrueになる
ctype_digit("$hoge");と文字列にすると両方trueになる
0181nobodyさん
2006/03/01(水) 14:02:36ID:???後者しかないね。
PHPだと識別子直後の改行が必要なうえに、
次の行に何が書いてあっても取り込む文字列として見なされる。
0182nobodyさん
2006/03/01(水) 14:48:01ID:???なんたら1
TEXT1)
: (<<<TEXT2
なんたら2
TEXT2);
カッコで閉じても無理?
0184nobodyさん
2006/03/01(水) 16:09:03ID:???幾つかのデータを表にだしある行のデータを変更したら一番端に作っているチェックを
Javaでonにして、更新時はそのチェックをついている行のデータを更新させているのですが
↓こんな感じ 各チェックボックスの値は主キー
foreach($_POST['check'] as $val){
mysql_query("update hoge set a='".$_POST{'a'.$val}."',b='".$_POST{'b'.$val}."' ");
}
$_POSTも項目ごとに必要だし各項目の後ろの主キー(一意の番号)をつけないといけないので
もっとスマートor簡単な処理方法なにかないでしょうか?
0186nobodyさん
2006/03/01(水) 18:04:05ID:MpRVy8N5何がしたいのか、解読するのが面倒なので、もっと質問を整理してください。
0190nobodyさん
2006/03/01(水) 19:17:28ID:???ということは、新規にスレをたてた時には新しいディレクトリを作成し、さらにその中にindex.php(ログからスレ内容を加工、表示するスクリプト)とログファイルを生成してるんでしょうか?
普通のレン鯖でこういう仕様はやめた方がいいんでしょうか?
0191nobodyさん
2006/03/01(水) 19:34:34ID:???> 新規にスレをたてた時には新しいディレクトリを作成し
そんなことはやってません。
ttp://*.2ch.net/test/read.cgi/*/1140786348/l50
read.cgiで、/以降を解析して表示しているだけです。
> 普通のレン鯖でこういう仕様はやめた方がいいんでしょうか?
フォルダ作る分には全然構わないと思います
ここまで書いて自信なくなってきましたが、
おそらくこうだったと思います。
0192nobodyさん
2006/03/01(水) 19:36:39ID:???0193nobodyさん
2006/03/01(水) 19:41:00ID:???参考までに
【スレッド】2ch型掲示板 14 【フロート型】@WebProg
http://pc8.2ch.net/test/read.cgi/php/1127896640/l50
0194nobodyさん
2006/03/01(水) 20:02:46ID:???そういえばread.cgiが間に入ってますね。ありがとうございます。
>>192
誘導ありがとうございます。参考にさせてもらいます。
0195nobodyさん
2006/03/01(水) 21:09:07ID:MpRVy8N5パスインフォ
0196nobodyさん
2006/03/01(水) 23:10:25ID:9If1oYZF<EMBED
SRC=".mid"
WIDTH="150"
HEIGHT="40"
AUTOSTART="FALSE"
REPEAT="TRUE"
SAVE="TRUE"
>
これの類で複製を出来なくする方法ってどうやるのですか?
0198196
2006/03/01(水) 23:13:19ID:9If1oYZFどこ逝きゃいい?
0200nobodyさん
2006/03/02(木) 04:18:35ID:???1.入力
2.入力チェック
3.確認
4.処理
5.完了
ってな感じが一般的だと思うんですが、これってひとつファイル中で if 使ってやるほうがいいか
form.php、check.phpとかファイルを分けてやるほうがいいかどう思いますか?
0201nobodyさん
2006/03/02(木) 05:02:30ID:???index.php と check.inc や end.inc というように、
1つのphpファイルと多数のincファイル(インクルードするファイル)で構成するのがいいと思う。
0202nobodyさん
2006/03/02(木) 08:24:23ID:???0203nobodyさん
2006/03/02(木) 09:20:52ID:c/Xyk/Yy$fp = @fopen($editfile, 'w');
$fp = fopen($editfile, 'w');
fopen関数の横に「@」があると無い場合とでは動作の違いはあるのでしょうか?
0204nobodyさん
2006/03/02(木) 09:28:08ID:QF2KFk3iエラーメッセージを抑制するだよ
そこでおいらの質問というか確認をお願いしますだ
Fatal error: Cannot redeclare user_function() (previously declared in /home/www/hoge.php:4) in /home/www/hoge.php on line 3
みたいなエラーが出たんだけど
ループの中で何回も
require 'user_function()';
をやっていたのがいけないんですよね?
0209203
2006/03/02(木) 10:53:31ID:???教えてくれたお礼に教えてあげよう。
includeはループの中で何度でもできるが、requireは1回しかできないから
ループの中で何度も使いたい場合は include使えばいいだよ
0210nobodyさん
2006/03/02(木) 10:59:59ID:???0211nobodyさん
2006/03/02(木) 11:03:29ID:???> requireは1回しかできないから
できる。
includeとrequireはエラー時にWarningになるだけかFatal Errorになってしまうかの差しかない。
0212nobodyさん
2006/03/02(木) 11:06:34ID:???勘違いしてない?
http://www.komonet.ne.jp/~php/chap7.htm
0213nobodyさん
2006/03/02(木) 11:09:55ID:???ttp://jp.php.net/manual/ja/function.require.php
ttp://jp.php.net/manual/ja/function.include-once.php
ttp://jp.php.net/manual/ja/function.include.php
0214nobodyさん
2006/03/02(木) 11:12:39ID:???require()とinclude()は エラーの扱い方を除けば全く同様に振舞います。
0215nobodyさん
2006/03/02(木) 11:14:35ID:???0216nobodyさん
2006/03/02(木) 11:14:45ID:???printfとかprintとかechoが同じといってるようなもんだな。
0217nobodyさん
2006/03/02(木) 11:18:31ID:???英語だと
require() and include() are identical in every way except how they handle failure.
0218nobodyさん
2006/03/02(木) 11:27:06ID:???ソースは解説サイトよりマニュアルを参照した方がいい。
そこで自分の過ちに気付き、自分が間違っていたんだと認める事ができれば人間としてもレベルが高い。
更に変な解説したサイトに嫌がらせのメールを送ったり勝手にMLに登録したら次の日は大吉。
0219nobodyさん
2006/03/02(木) 11:28:06ID:???[a.php]
<?php
require("b.php");
require("b.php");
?>
[b.php]
<?php
print "a\n";
?>
実行結果
a
a
0220203
2006/03/02(木) 11:29:03ID:???それをずっと信じてました
すみません
0221nobodyさん
2006/03/02(木) 11:33:10ID:???「(2)クッキーは、設定されたものと同じパラメータで削除する必要があります。クッキーを削除する場合には、ブラウザの削除機構を起動する為に、必ず有効期限を過去に設定する必要があります。」
もうむちゃくちゃだな。
「Cookieの削除をするには過去に設定するしかない」ってデマ情報がやまほどあるんだけど
真面目にいってるんだろうか。
setcookie( "Cookie", ""); だけで削除できるだろうが。
0222nobodyさん
2006/03/02(木) 11:39:54ID:???0223nobodyさん
2006/03/02(木) 11:50:43ID:???http://www.php.net/manual/ja/function.setcookie.php
0224204
2006/03/02(木) 11:53:31ID:???思いのほか盛り上がる内容だったみたいでなんだか嬉しいです。
>>210さんの方法が一番楽そうだったので、安直な私としては即採用です。
どう見ても便利です。ありがとうございました。
0227nobodyさん
2006/03/02(木) 12:03:31ID:???コレの意味がわからんのは俺だけか?
0229204
2006/03/02(木) 12:20:20ID:???うーん、間違った行為なんでしょうか
ループが無駄に長いもので、ループの外にrequire書いてもいいんですが。
requireとその中にユーザ関数があるんですが、記述が離れると一覧性が下がるかなぁと。
>>227
oops,
require 'user_function.inc';
とでも皆さん脳内変換してくれてたんですね・・。
0230221
2006/03/02(木) 12:22:04ID:???「クッキーを削除する場合には、ブラウザの削除機構を起動するために必 ず有効期限を過去に設定する必要があります。 前の例でクッキーを削除する方法のサンプルです。」と
公式マニュアルにもあるのか。
値が無いCookieをSetすることでFirefoxやIEでは正常にCookieが削除されるけど、これは仕様外の動作なのかな。
0231nobodyさん
2006/03/02(木) 13:04:31ID:???「クッキーは設定されたものと同じパラメータで削除する必要があります。 値が空文字列("")で、その他の全ての引数が前にsetcookieをコールした時と 同じである場合に、指定された名前のクッキーはリモートクライアント上から 削除されます。」
とも書いてあるんだから両方とも正しいんじゃない?
0232nobodyさん
2006/03/02(木) 13:42:54ID:???詳細を知る方法はないでしょうか?
sql文をよく間違うのですが、
原因を見つけるまでかなり時間がかかります。
$error = mysql_query($sql);
echo $error;
これでは無理でした・・・
0233nobodyさん
2006/03/02(木) 13:49:35ID:???を使いましょう。
ユーザ関数で
0234nobodyさん
2006/03/02(木) 14:22:21ID:???0236nobodyさん
2006/03/02(木) 15:11:17ID:???>$error = mysql_query($sql);
これで$errorにクエリが成功/不成功したかという情報が入ってるから、
その情報を元に、別の関数(直前のクエリのエラーを得る)で詳細を取得。
つかマニュアル読める環境で作業してないのけ?
0237nobodyさん
2006/03/02(木) 15:54:52ID:wuWQEqGXhatena というテーブルに word というカラムがあります。このカラムには hatena goog good のように単語が半角スペースにて区切られ格納さています。
例えば hatena という単語と完全一致する単語があるレコードすべてを表示するにはどうしたらいいのでしょうか?
この場合、wordというカラムに hatena だけが入っているレコードはもとより hatena www yahoo のように他の単語もはいっているレコードも表示しなければなりません。
どうぞよろしくお願いします。
0238nobodyさん
2006/03/02(木) 15:58:13ID:???0239nobodyさん
2006/03/02(木) 15:59:11ID:???0240nobodyさん
2006/03/02(木) 16:00:45ID:wuWQEqGX0242nobodyさん
2006/03/02(木) 16:11:25ID:wuWQEqGXわれながら考えたのですが、preg_match()でなんとかとはいきませんでした。
0244nobodyさん
2006/03/02(木) 16:14:27ID:wuWQEqGX0245nobodyさん
2006/03/02(木) 16:16:35ID:???>>236が言うように、マニュアルですぐに分かりそうなもんだが。
mysql_error -- 直近に実行されたMySQLコールのエラーメッセージを返す
mysql_errno -- 直近のMySQL処理からエラーメッセージのエラー番号を返す
0248nobodyさん
2006/03/02(木) 16:20:26ID:wuWQEqGXそれだと haten sql でもヒットしてしまいませんか?
0249246
2006/03/02(木) 16:21:15ID:???SELECT 〜 WHERE word LIKE '%hatena%
0250nobodyさん
2006/03/02(木) 16:22:36ID:wuWQEqGXところで爆発って?
0251nobodyさん
2006/03/02(木) 16:26:16ID:???あ、単語のみか。不恰好だが、
SELECT 〜 WHERE word = 'hatena'
OR word LIKE 'hatena %' OR word LIKE '% hatena %' OR word LIKE '% hatena'
>>250 いや、書き込みボタン押してないのに、何故か書き込まれたので。
025285
2006/03/02(木) 16:27:29ID:tZ9efk0Aファイルを連番で1.4メガバイトずつに分割したいのですが、
やり方がわかりません。
fopen、fread、fwriteを使うという事を以前教えてもらい、googleで検索しましたが、よく分かりません。
どのように記述すればよいか教えてください。
例えば、hoge.swf(3MB)を、hoge1.swf(1.4MB),hoge2.swf(1.4MB),hoge3.swf(200KB)に分割するような感じです。
0253nobodyさん
2006/03/02(木) 16:28:55ID:???スプレッドシートではなく、DBMSを使ってるらしいことは判ったが、
>hatena という単語と完全一致する単語があるレコードすべてを表示する
条件にマッチするものを取得→表示で問題があるのか?
それとも表示の条件と取得の条件が異なるのかい
取得に関して話が出てきてないように思えるが、
そうなら何のために取得が必要なのか説明もしてくれ。
0254nobodyさん
2006/03/02(木) 16:38:38ID:???hoge.swfをfopen(rb)、hoge1.swfをfopen(wb)
freadでhoge.swfから固定バイト読み込みhoge1.swfに書き込み
(読み込みは小分けにするのが普通だから何度か繰り返す。1MBぐらないなら一気にやってもいいも)
最後にhoge1.swfをfclose。
hoge.swfのEOFに達してなければ新しくhoge2.swfをfopen、hoge1.swfと同様に処理。
全ての最後にhoge.swfをfclose。
0256nobodyさん
2006/03/02(木) 16:57:22ID:???requireはいちいちディスクアクセス&ソースのコンパイルが入るので
そんな真似すると遅い&サーバー負荷になるよ。
せっかくのPHPのキャッシュ機能も宝の持ち腐れ。
そもそも一瞥できないほど長いループブロック書いてる時点でダメダメって気がするけど。
0257nobodyさん
2006/03/02(木) 17:03:02ID:???分割はそのうち出来るだろうから他の識者に任せるとして、
それよりも、分割してダウンロードさせたファイルを端末サイドで
結合させるロジックに非常に興味があるな。
しかもauだそうで…
まさか、公式BREWアプリでやろうってか?
BREWの通信制限3Mの壁とか…
なぞは深まる・・・
0258nobodyさん
2006/03/02(木) 17:03:24ID:???select 〜 where word like '% $w %' or word like '$w %' or word like '% $w'
って空白込みでlikeを使う手じゃないの?
wordカラムのデータを '単語 単語 単語' にしないで ' 単語 単語 単語 ' って先頭と末尾にも空白入れとけば
select where word like '% $w %'
で一発だけど、そんな先のことを見据えた設計はしてないんでしょう。
いずれにせよPHPは「全く」関係ない。
0259nobodyさん
2006/03/02(木) 17:06:38ID:???$handle_r = fopen("hoge.swf", "rb");
$capacity = (int)(1.4*1024*1024);
for($n = 0; $data = fread($handle_r, $capacity); $n++) {
$filename_w = "hoge" .$n. ".swf";
$handle_w = fopen($filename_w , "wb");
fwrite($handle_w, $data);
fclose($handle_w);
}
fclose($handle_r);
0260nobodyさん
2006/03/02(木) 17:08:17ID:???1.元のファイルを”r”で開く。
2.1.4MB分読み込む
3.分割ファイルNo.1を"w"で開く
4.3のファイルに2の内容を書き込む
5.3のファイルを閉じる
6.2にもどって次の分割ファイル名をNo.2にする
7.元のファイルを全部出力し終わったら1のファイルを閉じる
幼稚園児に物を教えてるみたいだ
0262nobodyさん
2006/03/02(木) 17:19:32ID:???という質問が来そうな気がする
0263nobodyさん
2006/03/02(木) 17:20:00ID:???マニュアル見ればすぐ判るじゃん(w
っていうか、そもそも「1.4メガバイト」とか言ってる時点で、
バイナリを扱う知識に欠けているのは予想できるんだが。
たぶん引数に14000000とか指定するんだろうな。
0267204
2006/03/02(木) 19:03:53ID:???include_onceのほうがいいのかしら・・
外に出せって事ですよね早い解決は
>>そもそも一瞥できないほど長いループブロック書いてる時点でダメダメって気がするけど。
ごもっとともです・・、勉強がてらなのに一人では大き目のプログラムを行き当たりばったりで書き始めたバージンソースなので
今見ると自分でも寒いソースだ・・と痛感致します
><
0268nobodyさん
2006/03/02(木) 19:29:53ID:???> たぶん引数に14000000とか指定するんだろうな。
いえ、そこは1433600を指定してました。皆様のレスを見ているとそれも間違いのような気がしますが。
バイナリの知識に乏しいというのは正解です。
0269nobodyさん
2006/03/02(木) 19:31:40ID:???そこはちゃんと考えてあります。
自分専用の非公開ツールとして作ってるので、Windows上で結合しますよ。
0271nobodyさん
2006/03/02(木) 20:36:14ID:???PHPからoracleへ接続したいのですが
oracleクライアントを使わずに接続する方法を知っている方はおられませんか?
JAVAではthinを使って接続しました。
似たような方法があれば教えてください。
環境は 窓2000にoracle10 REDHAT9にPHP4.4.0です。
よろしくお願いします。
■ このスレッドは過去ログ倉庫に格納されています