【PHP】下らねぇ質問はここに書き込みやがれ 34
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2006/12/08(金) 04:22:54ID:???まず読め→【PHP マニュアル】http://www.php.net/manual/ja/
PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。
過去スレ、関連スレ、FAQなどは>>2-10辺り
◆前スレ
【PHP】下らねぇ質問はここに書き込みやがれ 33
http://pc8.2ch.net/test/read.cgi/php/1164209222/
◆質問する時の注意
・ 自分のIDを表示させること。(メール欄に何も記述しないこと。空白も入力しちゃダメ)
・ サーバーのOS(Linux、Windows他)、WebサーバーとPHPの種類やバージョン等を明記すること。
・ 己の行った操作、変更などを詳しく明記すること。
・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。
・ 質問者として、態度をわきまえること。
・ 事前に公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。
◆質問後の注意
・偽者防止に必ずIDを表示させること。(メール欄に何も記述しない)
・2回目以降は最初に質問した際のレス番号を名前欄に入れること。
・解決しなくても回答をもらった場合はお礼を言うこと。
(荒らし、煽りは除く。煽られたときも、無闇に反論せずスルーすること。)
◆回答者への注意
・誰にレスしているのか分からないと困るので、>>(アンカー)をつけて回答すること。
【その他諸注意】
・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ http://pc8.2ch.net/php/subback.html
・SQLについての質問はデータベース板(PCカテゴリ)の各スレで http://pc8.2ch.net/db/subback.html
・速さについては自分でベンチをとってここに書け(違う環境の人も調べてくれるかも)
しかし初心者が目的も定めずに速度を気にしたところでほとんど意味は無いぞ
0352nobodyさん
2006/12/11(月) 10:13:46ID:T7VRNufo$fp = fopen("./file.txt");
としたあとに、既に"./file.txt"が開かれているかどうかを確認するのに、
if(is_set($fp))
で確認してるんですが、この方法で確認するのは果たしてOKなのか疑問です。
どのように確認するのが、一般的なんでしょうか?
if($fp)
とかでもいいんでしょうか?
0353nobodyさん
2006/12/11(月) 10:15:07ID:T7VRNufo×is_set
〇isset
0354nobodyさん
2006/12/11(月) 10:27:56ID:???マニュアル嫁。
オープンが失敗すると、関数は FALSE を返し、 E_WARNING レベルのエラーを発行します。
@ を使ってこのwarningを抑制することもできます。
と書いてあるから、それを確認したらいいのでは。
0355nobodyさん
2006/12/11(月) 10:41:20ID:???>オープンが失敗すると、関数は FALSE を返し、 E_WARNING レベルのエラーを発行します。 @ を使ってこのwarningを抑制することもできます。
0356352
2006/12/11(月) 10:44:26ID:T7VRNufoなるほどありがとうございます。そこまでの意味を掴み切れてませんでしたorz
0357nobodyさん
2006/12/11(月) 11:08:35ID:???0358nobodyさん
2006/12/11(月) 11:29:13ID:???0359nobodyさん
2006/12/11(月) 15:00:11ID:???どのタイミングでどの様な処理をすれば良いのか見当もつきません。
良い方法を教示ください。
0360nobodyさん
2006/12/11(月) 16:11:58ID:T7VRNufo0361nobodyさん
2006/12/11(月) 16:35:18ID:???0362nobodyさん
2006/12/11(月) 17:44:08ID:knN2XhtSブラウザのウィンドウを新たに立ち上げた場合は
新ウィンドウは旧ウィンドウのセッションを引継ぎはしませんが、
タブブラウザで新しいタブを開いた場合には
新タブは旧タブのセッションを引き継いだ状態になってしまいます。
同じウィンドウのタブ同士で、セッションを同一に扱わせない処理って出来ますでしょうか?
0363nobodyさん
2006/12/11(月) 19:37:01ID:TN4IXMY0なら動作するんですが、
ftp_put( $conn, $remote, $local, "FTP_ASCII");
だと ftp_put() expects parameter 4 to be long というエラーが
出ます。理由をおしえてくり。
$mode = "FTP_ASCII";
ftp_put( $conn, $remote, $local, $mode);
も同じエラーが出ます。
0364nobodyさん
2006/12/11(月) 19:57:20ID:???http://jp.php.net/ftp_put
0365nobodyさん
2006/12/11(月) 19:59:40ID:???具体的にはCSVの一枚表だけでなく、一つのファイル中に複数のシートを作ったり
印刷範囲の設定などをしたいと考えています。
0366nobodyさん
2006/12/11(月) 20:03:10ID:???0367nobodyさん
2006/12/11(月) 20:06:15ID:???0368nobodyさん
2006/12/11(月) 20:09:45ID:???0369nobodyさん
2006/12/11(月) 20:28:42ID:???ちなみにサンプルではaddWroksheetメソッドのコール時に参照代入になっていますが
オブジェクトのコピーは自動で参照になると思ってましたが
これは必要なんでしょうか?
0370nobodyさん
2006/12/11(月) 20:39:19ID:???これ "FTP_ASCII" はFTP_ASCIIという文字列。
これ FTP_ASCII は定数。
引用符で囲むと意味がぜんぜん違うものになる。
ためしに $mode = FTP-ASCII; にしてみな。
0371370
2006/12/11(月) 20:40:29ID:???$mode = FTP_ASCII;
0372nobodyさん
2006/12/11(月) 21:28:03ID:???0373nobodyさん
2006/12/11(月) 21:56:24ID:???http://ml.php.gr.jp/search.html
0375nobodyさん
2006/12/11(月) 22:31:43ID:???最近PHP5向けのpeclでそういうのが出てた。
なんで出来ないかは「file upload progress php」あたりでググってみると分かる。
>>340
おいらのPEAR/Info.phpはPHPで記述されている
0376nobodyさん
2006/12/11(月) 22:41:09ID:???array_map()を使うしかないですか?
その場合to_encodingも配列で渡さないといけないようですが
countで数えるなりして同じ数の文字コードを格納した配列を作らなければならないんでしょうか?
数百個になりそうでちょっと気が引けるのですが・・・
0377nobodyさん
2006/12/11(月) 22:49:34ID:???0378nobodyさん
2006/12/11(月) 23:12:23ID:???独自関数とarray_walk_recursiveで作ったところでした・・・
0381nobodyさん
2006/12/12(火) 02:10:30ID:zaiE1Sl7ユーザーからの入力は当然エスケープして表示するわけですが、
このとき、ハートマークとかコピーライト記号とか、そういう特殊記号があった場合に、
それらだけをエスケープせずに表示するにはどういう実装方法を取るべきなのでしょうか?
0382nobodyさん
2006/12/12(火) 02:33:01ID:???自分で実体参照文字リストとか作って配列に入れといて、
htmlspecilacharsかけた後の文字列とその配列の中身を比較して、
同じのがあればそれをアンエスケープすれば?
たとえば「♥」を見つけたら「?」に戻す(アンエスケープする)とか。
0383382
2006/12/12(火) 02:43:58ID:???エスケープされた「後」に、実体参照文字だけ元に戻したいとなると
これじゃ無理だ・・・
0384nobodyさん
2006/12/12(火) 02:51:09ID:???0387nobodyさん
2006/12/12(火) 04:50:41ID:???そういう置換をするための正規表現ってどう書けばいいの??
よく分からないから当てずっぽうでこんなの↓書いてみたけど当然ダメだったorz
$text= htmlspecialchars('ハートだよ?');//文字列全体をエスケープ
$regex = "^&{1}[0-9]{3,6};$";
preg_replace("/".$regex."/", "&\1", $text);//実体参照文字だけをアンエスケープ
0388387
2006/12/12(火) 04:56:10ID:???仕方ないので半角&を全角&にして書き込んでみます。
$text= htmlspecialchars('ハートだよ♥');//文字列全体をエスケープ。&は実際には半角
$regex = "^&{1}[0-9]{3,6};$";//&は実際には半角
preg_replace("/".$regex."/", "&\1", $text);//実体参照文字だけをアンエスケープ
0389nobodyさん
2006/12/12(火) 07:23:12ID:???やりたいことは、出力したい内容をphpでデータベースから一回ごとにリアルタイムでとってきてxml形式のファイルを動的に生成出力したいのです。
単純に
<?xml version="1.0" encoding="utf-8" ?>
<rss version="2.0">
<channel>
<title>.... という文字列を出力するだけではだめなのでしょうか?
ブラウザでアップロードしたURLを見てみても、見ることができません。
ページが見つかりません やその他のエラーは出ず、
アドレスバーにだけそのURLが入っている状態で、ブラウザの内容は前(任意)のサイトのままになってます。
0390nobodyさん
2006/12/12(火) 07:43:33ID:???ブラウザのキャッシュが効いてるんじゃないのか?
0391nobodyさん
2006/12/12(火) 09:22:33ID:???$db=new PDO($hoge1.":host=".$hoge2.";dbname=".$hoge3,$hoge4,$hoge5);
$stmt=$db->query("SELECT * FROM hogetable");
//$stmt=NULL;
while($row=$stmt->fetch(PDO::FETCH_ASSOC){
$stmt2=$db->prepare("INSERT IGNORE fugatable (fuga) VALUES (?);");
$stmt2->execute(array(row["hoge"]));
}
のようなコードを書きたいのですが、
$stmt=NULL;を入れないと$stmt2->executeが実行されないのは何故なんでしょうか。
0392nobodyさん
2006/12/12(火) 10:19:23ID:???>エラーやシリアライズされた FALSE 値をアンシリアライズする場合、
>FALSE が返されます。この特殊なケースは str を serialize(false)
>で比較する、もしくは E_NOTICE をキャッチすることで区別することができます。
と書いてあるのですが、1,2行目は
$str = 'hage';
if (@unserialize($str) === false && $str != serialize(false)) {
echo '1:unserialize error';
}
ということだと理解しました。
で、3行目なんですが、キャッチと言う言葉から
try {
$arr = @unserialize($str);
} catch (exception $e) {
if ($e->getCode() == E_NOTICE) {
echo '3:unserialize error';
}
}
と言う事かなと思ったのですが、どうも違うようです。
「E_NOTICEをキャッチすること」とは具体的にどういうことなのでしょうか?
0393nobodyさん
2006/12/12(火) 10:22:57ID:???結果セット内の全てのデータを取得しない場合、そのコールは失敗します。
PDOStatement::closeCursor() をコールし、次に PDO::query() をコールする前に
PDOStatement オブジェクトに関連付けられたリソースを解放してください。
0394nobodyさん
2006/12/12(火) 10:44:29ID:???サンプル重視のアホばっかだなwww
0396nobodyさん
2006/12/12(火) 11:00:18ID:???お前こそ>>1も読まずに何をほざいてるの?お前みたいな馬鹿がいるから
>>1も、マニュアルも読まない馬鹿が増えるんだよ。
0398nobodyさん
2006/12/12(火) 11:07:45ID:???0399nobodyさん
2006/12/12(火) 11:14:14ID:???形勢不利と見るや責任転嫁ですか?
分かった分かった。無理すんな。
くだ質スレでケチつけるしかないほど普段の生活で抑圧されてるんだな。
でも次からは雑談スレやチラ裏でやれ。
0400nobodyさん
2006/12/12(火) 12:08:06ID:???0402nobodyさん
2006/12/12(火) 13:00:44ID:???なんかおかしいならとりあえずエラー出そうよ
$stmt2 = $db->prepare("INSERT IGNORE fugatable (fuga) VALUES (?);");
if (!$stmt2) {
var_dump($db->errorInfo());
exit;
}
こんな感じでいける
$db = new PDO("mysql:host=localhost;dbname=test", 'user', 'pw');
$rows = $db->query("SELECT * FROM hogetable")->fetchAll(PDO::FETCH_ASSOC);
foreach ($rows as $row) {
$stmt = $db->prepare("INSERT IGNORE fugatable (fuga) VALUES (?);");
$stmt->execute(array($row["hoge"]));
}
0404nobodyさん
2006/12/12(火) 14:20:40ID:K9EOWnsJそれを違うテキストファイルに追加して書き込むにはどうすれば?
書き込むファイルには、すでにテキストが書き込まれていて
その後に、追加したいんですが
0406nobodyさん
2006/12/12(火) 14:30:10ID:K9EOWnsJテキストファイルの内容を全行読み込んで 全行書き込むには
forループさせるしか方法はないんですか?
0407nobodyさん
2006/12/12(火) 14:38:54ID:???http://makimo.to/2ch/pc8_php/index.html
0410nobodyさん
2006/12/12(火) 15:19:37ID:???アクセスしてきた人に対して一時的に「メンテナンス中」と表示するには
どうしたらいいんでしょうか?
イメージとしては、管理者(自分)だけはいつも通りサイトにアクセスできるけど、
一般の訪問者はどのページにアクセスしようとも、
mod_rewriteか何かで、メンテを知らせるページに強制ジャンプさせる…みたいな感じです。
0411nobodyさん
2006/12/12(火) 15:33:14ID:j1klqrWE例えば、A.php,B.php,c.phpというプログラムがあったとして、Aを実行して
処理が終わったら、B,Cの順に実行するということをしたいのですが、どうすれ
ばいいでしょうか?よろしければ、お教えください。
0412nobodyさん
2006/12/12(火) 15:38:57ID:???execute.phpというファイルに
<?php
require('A.php');
require('B.php');
require('C.php');
と記述して、execute.phpにアクセスするとか、単にそれぞれの
ファイルの末尾にrequire()を追加するのは?
0413nobodyさん
2006/12/12(火) 15:46:45ID:???そんなことすら自分で分からないレベルなら、
そういうことをやらないほうがいいと思う。
絶対にいろんなバグや予期せぬ動作が起きまくる。
0415nobodyさん
2006/12/12(火) 15:47:21ID:8yL3wR52どういったときに使い分けるのでしょうか?
0417nobodyさん
2006/12/12(火) 16:00:35ID:8yL3wR52さしつかえなければ416さんの得意分野をおしえてください。
0418nobodyさん
2006/12/12(火) 16:02:00ID:???0419nobodyさん
2006/12/12(火) 16:02:52ID:???わからないから>>411は質問したんだろ。
>絶対にいろんなバグや予期せぬ動作が起きまくる。
これは当たり前のことだろうが。それともお前はバグを起こしたことがないのか?
お前がバグさえ起こしたことがない天才プログラマーなのは勝手だが、意味不明な
アドバイスをするな。
0420nobodyさん
2006/12/12(火) 16:11:41ID:???意味あるアドバイスもせずケチつけるだけのやつ。
答えたくなければスルーすればいいし、お前にこのスレ
読んでくれなんて誰も頼んでないのにね。
ご苦労なこった。
誘導
【総合】 Webprog板質問雑談スレッド 1
http://pc8.2ch.net/test/read.cgi/php/1131016915/l50
こちらへどぞ。
0422やっぱり認定回答者
2006/12/12(火) 16:15:09ID:???自分の知ってることであれば答えてやるから遠慮せず質問ぶつけてこい
0423nobodyさん
2006/12/12(火) 16:16:42ID:???まぁ、そういうお前にもこのスレ読んでくれ
なんて誰も頼んでないわけだが。
>>422
だよな。お前みたいのがいてよかったよ。
0424411
2006/12/12(火) 16:19:50ID:j1klqrWEのに、require.phpとして
<?php
require('A.php');
require('B.php');
?>
として実行したら、Aの部分しか処理できていませんでした。
何故なのでしょうか?
0425nobodyさん
2006/12/12(火) 16:23:51ID:???A/B.phpそれぞれに "<?php" ついてる?
ついでに>>420は
誘導
【総合】 Webprog板質問雑談スレッド 1
http://pc8.2ch.net/test/read.cgi/php/1131016915/l50
こちらへどぞ。
0426411
2006/12/12(火) 16:27:03ID:j1klqrWEええ、ついています。
0428411
2006/12/12(火) 16:43:36ID:j1klqrWE0430nobodyさん
2006/12/12(火) 16:49:59ID:???パターン1
execute.phpからAへ飛ばす
処理が終わったら行の終わりにBへ飛ばす記述
処理が終わったら行の終わりにCへ飛ばす記述
ぱたーん2
execute.phpというファイルに
<?php
require('A.php'); Aの行の終わりに「Aの処理が終了した」変数Aをセット
require('B.php'); 変数AがTRUEならBを処理→変数Bをセット
require('C.php'); 変数CがTRUEならB
0432nobodyさん
2006/12/12(火) 16:58:42ID:???0434nobodyさん
2006/12/12(火) 17:02:14ID:???0435PHP出版
2006/12/12(火) 17:02:35ID:???eval("include('B.php')");
0436nobodyさん
2006/12/12(火) 17:05:14ID:???誰が言ってるんだよ。お前が>>420ならちゃんと名前欄に入れろよ。
そもそも>>420がきちんとレスアンカーをつけないから混乱が起き
てるんだろうが。>>420が>>419にケチつけてるのか、>>413にケチ
つけてるのかわかんねぇよ。
0437nobodyさん
2006/12/12(火) 17:05:27ID:apzoBj1lファイルを作成するプログラムを作っているのですが、
$a = $_POST['a'];
$b = $_POST['b'];
$c = $_POST['c'];
みたいなかんじで変数でごちゃごちゃになっています。
もうちょっと綺麗な書き方あったらぜひ教えてください。
0440nobodyさん
2006/12/12(火) 17:12:58ID:???そうか?オレは>>419に対してだと思っていたが。
まぁ、とにかくレスアンカー必須のほうが誤解もなく安全だろ。ということでみなさ
ん、マナーとしてレスアンカーはきちんとつけようね。
0442nobodyさん
2006/12/12(火) 17:17:15ID:???配列とか。
なんかプログラマって、いちゃもんつける人多いよね。
理系だから、完全な解を求めたがるような印象…
0443nobodyさん
2006/12/12(火) 17:18:56ID:???$key = array($_POST['a']=>'a',$_POST['b']=>'b',$_POST['c']=>'c');
echo $key['a'];
0444nobodyさん
2006/12/12(火) 17:20:08ID:apzoBj1lさっそく教えていただいた配列でやってみたいと思います。
extractもマニュアルでひいてきます。
0446nobodyさん
2006/12/12(火) 17:23:16ID:8yL3wR52$file = file("aaa.txt");
ファイルが開けない原因を考えているのですがわかりません。
どなたかアドバイスお願いいたします。
0447nobodyさん
2006/12/12(火) 17:24:24ID:???0449nobodyさん
2006/12/12(火) 17:41:25ID:8yL3wR52やはりパーミッションですよね。
windowsでテストしているのですが、この環境でlinuxと同じように
パーミッションをいじくる方法ってありませんか?
0450nobodyさん
2006/12/12(火) 17:47:39ID:???マニュアルだとnullや0はFalseを返すと書いてあるのになぜでしょうか?
■ このスレッドは過去ログ倉庫に格納されています