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

【PHP】下らねぇ質問はID出して書き込みやがれ 77

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん2008/12/08(月) 01:27:39ID:???
質問者はまず>>1を良く読むこと(必須!)
過去スレ、関連スレ、FAQなどは>>2-10辺り
次スレは>>980が立てる。10分以内に立たない場合、宣言してから立てたい人が立てること。

◆前スレ
【PHP】下らねぇ質問はID出して書き込みやがれ 76
http://pc11.2ch.net/test/read.cgi/php/1226517332/

◆質問用テンプレ
【OS名】vine linux
【PHPのバージョン】php5.26
【連携ソフトウェア】mysql
【質問内容】

◆質問する時の注意
・ スレを上げて自分のIDを表示させること。(メール欄に何も記述しない。専ブラのsageチェックを外す)
・ 己の行った操作、変更などを詳しく明記すること。
・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。
・ 質問者として、態度をわきまえること。
・ 事前に関連リンクの公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。
(PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。)

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

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

【その他諸注意】
・SQL・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ
008230です2008/12/09(火) 08:54:44ID:pNYuh3pR
すいません、再度お願いします
PDOを使っています
mysql_num_rows ←PDOでコレに該当する物がないのです

http://php.plus-server.net/pdostatement.rowcount.html
ココをみると SELECT COUNT(*) 文を発行してから
再度SELECTしろ となっています

2回同じようなSQLを実行しないといけないのですが
遅くなりそうでイヤなのですが
気にしなくていいのでしょうか

if (mysql_num_rows($res) <= 0) { return; }
この判定(ゼロ判定)のためだけに、SELECT COUNT(*)
するのがアホらしいのですが
0083nobodyさん2008/12/09(火) 09:20:50ID:???
select count(*)は遅くないし
0084nobodyさん2008/12/09(火) 09:27:49ID:???
>>82
if (mysql_num_rows($res) <= 0) { return; }
この目的は行数を得ることですか?
行数を得る目的ならcount(*)が適切でしょう

しかし、結果セットがない場合はreturnだったら、
pdoのイテレーターでそのまま実装できるのでは?
0085nobodyさん2008/12/09(火) 10:30:29ID:???
>>81
>>51
0086nobodyさん2008/12/09(火) 10:32:37ID:???
SQL_CALC_FOUND_ROWS
0087nobodyさん2008/12/09(火) 10:37:24ID:???
>>83
count()は遅いぞ?
単体サーバーで500万件くらいいれると
どんなにフル最適化しても2〜5秒はcountにとられるぞ

ポスグレだけどな…
0088nobodyさん2008/12/09(火) 11:52:40ID:???
さっさと質問に答えろ屋!!
0089nobodyさん2008/12/09(火) 12:12:03ID:6VdqcFEv
【OS名】red hat linux 9
【PHPのバージョン】php 4.4.6
【連携ソフトウェア】なし
【質問内容】

phpで作られたフリーのカートシステム「zen cart」を利用しているのですが、
クライアントの情報を利用するため、自前で作成したプログラム(log.php)を、index.phpからincludeするように改造しました。
作成したプログラムは、商品のコンバージョンを計るためです。

log.phpの内容

<?

extract($_GET);
extract($_POST);
session_start();

/* セッションに変数を登録 */
$_SESSION['dvd_date'] = date("Y/m/d l H:i:s");

?>

index.phpが呼ばれるとlog.phpが動作して、ちゃんとセッションがサーバーに書き込まれています。
しかし、zen cart で買い物をすると、カートに商品が入りません。おそらく、zen cartの中でもセッションを
使用しているからだと思います。log.phpがzen cartのセッションをクリアしてしまっているせいかも
しれないです。

このようや事象を回避する方法はありますでしょうか?
009030です2008/12/09(火) 12:30:49ID:pNYuh3pR
>>84
>if (mysql_num_rows($res) <= 0) { return; }
>この目的は行数を得ることですか?
行数把握が目的ではなく、結果セットが無い場合(該当レコードゼロ)
の場合の対処が目的です

>結果セットがない場合はreturnだったら、
>pdoのイテレーターでそのまま実装できるのでは?
ここが分かりません
どのような記述でしょうか?
0091nobodyさん2008/12/09(火) 12:34:59ID:???
>>89
究極の解決方法は
他人が作ったものを使わない!

それはさておき
確実に
session_start();
をよんでるからだろ…これをコメントアウトすれば?
あとセッションが利用しているかしていないかの判定入れて
利用してなければスタートするようにする
0092nobodyさん2008/12/09(火) 12:47:14ID:???
>>90
あんまスマートじゃないけど許してね
たとえばこんな感じ
$row = $stmt->fetch();
if (false === $row) return ;
do {
//処理
} while($row = $stmt->fetch());
0093nobodyさん2008/12/09(火) 12:51:29ID:6VdqcFEv
>>91


session_start でやはり初期化されるようですね。
おっしゃるとおりやってみます

サンクス湖
009430です2008/12/09(火) 12:56:02ID:pNYuh3pR
>>92
ありがとうございます
fetchして判定しようとは思ったのですが
カレントレコードが移動してしまうのでどうしたら
いいのだろうかと模索していました

whileではなく、do while ですね
ありがとうございました
0095nobodyさん2008/12/09(火) 13:26:32ID:???
while ($row = $db->fetch()) {
}
してれば件数0の場合は実行されないからいいんじゃないの?
0096nobodyさん2008/12/09(火) 14:26:08ID:???
>>95
件数0件のときを別処理にしたいということじゃない?
0097nobodyさん2008/12/09(火) 14:53:16ID:???
じゃ$db->fetch()なり$rowなりで判定すればいいじゃない
0098nobodyさん2008/12/09(火) 14:54:31ID:???
回答をまとめてくれないとわからない件
0099nobodyさん2008/12/09(火) 15:13:34ID:???
>>97
ん、たとえば、どんな感じ?
0100nobodyさん2008/12/09(火) 17:37:02ID:???
>>94
日本語としては「じっぽん」が正しいが、レッドブックの「とおほん」(×とうほん)も間違いではない
ただ朝鮮人や一部の関西人が良く使う「じゅっぽん」は明らかに間違い
これを使っていると日本人である事を疑われるので気を付けるように
0101nobodyさん2008/12/09(火) 17:37:19ID:???
>>89
俺が有料で改造してあげゆ
0102nobodyさん2008/12/09(火) 17:37:28ID:???
なんか変なのが沸いてるな
0103nobodyさん2008/12/09(火) 17:43:01ID:???
>>82
PDOをやめる。という解決は?!
0104nobodyさん2008/12/09(火) 18:46:37ID:O9eg0LyY
【OS名】CentOS release 5.2
【PHPのバージョン】PHP5.1.6

pecl installでAPC導入したのですがphpinfo()に反映されませんでした。
apache再起動時のエラーログを確認した所
PHP Warning: PHP Startup: Unable to load dynamic library '/usr/local/lib/php/extensions/apc.so' - /usr/local/lib/php/extensions/apc.so: undefined symbol: zend_compile_file in Unknown on line 0
と出ています。
導入したAPCのバージョンは3.0.19です。
解決策ありましたらご教授よろしくお願いします。
0105nobodyさん2008/12/09(火) 19:21:43ID:AVrbWSbl
少数は内部的に違う数値になっているから
少数の比較をしてはならない、
って、解説サイトに書いてあったんだが、そうなの?
0106nobodyさん2008/12/09(火) 19:22:15ID:???
少数X
小数○
0107nobodyさん2008/12/09(火) 19:30:42ID:???
質問者としての態度をわきまえろ!
0108nobodyさん2008/12/09(火) 19:36:14ID:???
                   ∧∧ ∩
                  ( ゚ω゚ ) /
             ハ_ハ   ⊂   ノ    ハ_ハ
           ('(゚ω゚`∩   (つ ノ   ∩´゚ω゚)')
       ハ_ハ   ヽ  〈    (ノ    〉  /     ハ_ハ
     ('(゚ω゚`∩  ヽヽ_)        (_ノ ノ    ∩´゚ω゚)')
     O,_  〈                      〉  ,_O
       `ヽ_)                     (_/ ´
   ハ_ハ          お 断 り し ま す         ハ_ハ
⊂(゚ω゚⊂⌒`⊃                       ⊂´⌒⊃゚ω゚)⊃
0109nobodyさん2008/12/09(火) 23:37:38ID:???
質問ないのか?まったく日々精進する気のねえ三流プログラマどもだな
0110nobodyさん2008/12/10(水) 12:01:59ID:6u+ZdXWj
こんにちは。PHPでMySQLのデータをエクセル出力したいです
MySQLのデータを、PHPを用いて表示は出来ましたが、エクセルへ出力となると何から手をつけていいのやら…

オススメの参考資料などありませんか?
ググってもCVS出力というものばかりヒットします
0111nobodyさん2008/12/10(水) 12:12:05ID:???
公式マニュアルに書いてありますね
0112nobodyさん2008/12/10(水) 12:49:12ID:???
だったらそのマニュアルのリンクを張れ!!!
0113nobodyさん2008/12/10(水) 12:52:42ID:???
ぐぐれよ
0114nobodyさん2008/12/10(水) 12:54:11ID:???
webサイトの開発のテスト目的で
強制的にセッションを切断したいんだけど
なんか良い方法ある?
0115nobodyさん2008/12/10(水) 12:55:48ID:???
ブラウザを閉じる
0116nobodyさん2008/12/10(水) 13:14:41ID:???
閉じても切れないんだよなこれが
0117nobodyさん2008/12/10(水) 13:17:26ID:???
>>114
サーバのセッションファイルを手作業で削除
0118nobodyさん2008/12/10(水) 15:02:36ID:???
>>116
ブラウザのクッキーをクリアしたらいいじゃないか?
0119nobodyさん2008/12/10(水) 16:36:22ID:AE/sV1ze
フォルダを圧縮して、ダウンロードさせにはどうしたらいいでしょう。
フォルダのなかに、ファイル(データ書込み)をつくり、
そのフォルダを圧縮します。

また、複数人がアクセスすることを考えると、
ファイルには乱数で名前をつける必要があるのでしょうか?

素人ですみませんが
0120nobodyさん2008/12/10(水) 16:40:54ID:???
圧縮してからうpればいいじゃん
0121nobodyさん2008/12/10(水) 17:13:46ID:AE/sV1ze
すみません。

WEB上から申し込んだ人に対して、
個別にファイルをTENPでつくり、
それを入れたフォルダを圧縮したいです。
0122nobodyさん2008/12/10(水) 17:23:26ID:???
>>121
つ ttp://jp.php.net/manual/ja/ref.zlib.php
0123nobodyさん2008/12/10(水) 17:23:45ID:???
圧縮関数なかったっけ?
0124nobodyさん2008/12/10(水) 17:48:30ID:IV3o+bU1
$part1から$part78まで、$_POST['part1']から$_POST['part79']までをそれぞれの変数に下記のようにセットしたいのですが、いちいち一列づつ書いていく意外に方法ありますか?

$partO=$_POST['partO'];
0125nobodyさん2008/12/10(水) 17:49:16ID:IV3o+bU1
間違えました↑

$_POST['part78']までです
0126nobodyさん2008/12/10(水) 18:05:15ID:???
>>124
extractかregister_globalsか$_POSTのまま使う
0127nobodyさん2008/12/10(水) 18:08:59ID:???
>>124
配列にセットしたら?

$part = array();
for ($i = 1; $i <= 79; $i++) {
if (isset($_POST["part{$i}"])) {
$part[$i] = $_POST["part{$i}"];
}
}
01281272008/12/10(水) 18:12:06ID:???
あ、78までか
$i <= 78か$i < 79ね
0129nobodyさん2008/12/10(水) 18:14:47ID:IV3o+bU1
>>126

ありがとうございます。
$_POST[]の部分に変数が入れられないと思ってましたが、ググってみたら"{}"で入れられるんですね。
0130nobodyさん2008/12/10(水) 18:15:56ID:IV3o+bU1
間違えた↑

>>126>>127>>128
0131nobodyさん2008/12/10(水) 18:16:45ID:???
>>129
入れられるわ
$_POST[$key]
0132nobodyさん2008/12/10(水) 18:19:47ID:IV3o+bU1
>>131

orz

自分 '' をつけてました。
0133nobodyさん2008/12/10(水) 18:20:44ID:???
別にシングルクオートでも
$_POST['part' . $i]とかでもいいよ
柔軟に書けます
0134nobodyさん2008/12/10(水) 19:22:10ID:AE/sV1ze
>>つ ttp://jp.php.net/manual/ja/ref.zlib.php

素人なものですみません。

ファイルの圧縮は、例文どおりに書いたらできましたが、
フォルダの圧縮がまったくわかりません。
どの関数を使うのでしょうか?

また、複数人が同時アクセスすると、
フォルダの中には複数のtempファイルが入ってしまうのでしょうか?
個別にしたいわけですが。
0135nobodyさん2008/12/10(水) 19:31:33ID:???
アーカイブ+圧縮すればできそうだが
0136nobodyさん2008/12/10(水) 20:01:42ID:UV6BBIxz
質問

<?php
for ($a=0; $a<3; $a++){
print ($a."<br />");
}
?>


↑これで、1行ずつ表示したいんだが、無理?
0137nobodyさん2008/12/10(水) 20:07:08ID:???
>>136
何故試さないのですか?
0138nobodyさん2008/12/10(水) 20:10:34ID:???
>>134
フォルダーの圧縮やってみました?
mkdirしてそこに必要なファイルをつっこんでそのフォルダを圧縮 チーン
0139nobodyさん2008/12/10(水) 20:11:37ID:UV6BBIxz
>>137
いや、だから、何を試すんだよ?
バカなのかお前
0140nobodyさん2008/12/10(水) 20:12:12ID:UV6BBIxz
>>137
1行ずつ、って
ゆっくり表示する、って意味だよ?
0141nobodyさん2008/12/10(水) 20:14:21ID:???
>>140
>>1を満たしていないので却下
0142nobodyさん2008/12/10(水) 20:18:28ID:???
>>140
ゆっくり表示するって書いてくれなきゃわからないです。ごめんなさい。
田代砲でサーバ攻撃しながら表示すればOK
0143nobodyさん2008/12/10(水) 20:19:25ID:???
って、あぁぁ、送信つもりないのにエンター押しちゃったよorz..
flushとsleep使ったらどうかね
0144nobodyさん2008/12/10(水) 21:11:51ID:???
ローカルサーバにローカルから田代砲を試し打ちして
しっかり守ってるかセキュリティのチェックがしたいのですが
田代砲って配布サイトで拾ってきたもの使っても大丈夫ですか?
01451442008/12/10(水) 21:12:46ID:yyzcwK8M
すいません144です
0146nobodyさん2008/12/10(水) 21:24:10ID:???
んなスクリプト3行ぐらいで出来るだろ・・・
0147nobodyさん2008/12/10(水) 21:31:58ID:???
田代砲ってDoS攻撃だろ・・・
セキュリティのチェックとか関係ない
0148nobodyさん2008/12/10(水) 21:42:22ID:???
http://science6.2ch.net/test/read.cgi/math/1228746786/291

この問題を表示するプログラムって
ちょちょいと作れる?
0149nobodyさん2008/12/10(水) 21:43:19ID:???
作れるっていったら作るなら作れるって言ってあげるよ
0150nobodyさん2008/12/10(水) 21:48:36ID:???
>>148
京大過去問乙
0151nobodyさん2008/12/10(水) 21:49:21ID:AE/sV1ze
圧縮の件ですが、
1)ファイルを動的につくる
2)そのファイルを含む複数のファイルをまとめて圧縮する

この2つをやる例文はないでしょうか?

素人なものですみません
0152nobodyさん2008/12/10(水) 22:04:50ID:???
>>149-150

とりあえず、
フォームで、「nの値を入力させる」

そんで、nが確定するから、
そのときの、出る目のパターンを、
全表示する、って、PHPでできる?
0153nobodyさん2008/12/10(水) 22:15:04ID:???
>>151
http://pear.php.net/package/Archive_Zip/
0154nobodyさん2008/12/10(水) 22:33:18ID:???
Pear使わなくても標準クラスで良くね?
http://jp.php.net/manual/ja/function.ziparchive-open.php
0155nobodyさん2008/12/10(水) 22:56:27ID:???
http://c-brains.jp/blog/wsg/08/04/07-144033.php

このサイトわかりやすい
0156nobodyさん2008/12/10(水) 23:00:34ID:???
作者の宣伝乙
0157nobodyさん2008/12/10(水) 23:02:09ID:???
http://c-brains.jp/blog/wsg/08/05/22-193020.php

このページに、

「セッションというものは、クッキーを利用している」

って書いてあるけど、別にクッキーを使わない
セッションというものも、あるんですよね?
0158nobodyさん2008/12/10(水) 23:09:40ID:???
>>157
ある。
お勧めはしない
0159nobodyさん2008/12/10(水) 23:33:40ID:???
クッキーなんてあてにならんだろ
0160nobodyさん2008/12/10(水) 23:36:40ID:AE/sV1ze
圧縮の件

素人ですみません。

zlib というので、やりたいのですが、
フォルダにするやり方がどうしてもわからないので断念

zip関数というので、できそうな気がしましたが、
サーバーを調べるとPHP4だったので、たぶん使えないだとうと断念

Pear でやれるか検討中。

という感じなんですが、できるでしょうか?
0161nobodyさん2008/12/10(水) 23:45:17ID:???
やる気次第では?
0162nobodyさん2008/12/10(水) 23:46:50ID:???
市ね
0163nobodyさん2008/12/11(木) 00:15:49ID:2wImFGsH
質問

セッションは、

(1)セッション+クッキーで管理する
(2)セッション+URLにセッションIDを埋め込む

この2つしかやり方はない、であってる?
0164nobodyさん2008/12/11(木) 00:25:16ID:???
クッキーで管理するのも含めてセッションだから。。。
URL埋め込み以外にもフォームのhiddenの場合もあるし
0165nobodyさん2008/12/11(木) 00:40:13ID:2wImFGsH
(1)クッキー
(2)URL埋め込み
(3)hidden

おおまかに言って、この3種類?
0166nobodyさん2008/12/11(木) 01:13:02ID:vCW1WzQV
たびたびすみません

http://jp.php.net/manual/ja/zip.examples.php

ここに書いてある最初の例を、ローカルで試すと、
書き込んだファイルの拡張子の後に、
乱数(時間?)の数字がつきます。
それも、ちょっとまずく、
個別のアクセスした人に、個別のファイルをダウンロードさせたい
わけです。
数字なしにすれば、いいでしょうか。
その場合、同時アクセスのリスクはあるでしょうか?

素人ですみません

0167nobodyさん2008/12/11(木) 01:42:27ID:???
>>166
これはおもしろいサンプルだ。
実行したら、パソコンの中にZIPファイルができた。
0168nobodyさん2008/12/11(木) 02:07:33ID:???
>>166
>乱数(時間?)の数字がつきます。
time()を外しゃいいのでは?
0169nobodyさん2008/12/11(木) 02:16:43ID:vCW1WzQV
レスありがとうございます。
time()を外すと、大丈夫でした。

あと、アクセスした人個別にファイルをつくり、
その個別ファイルをダウンさせたいわけです。

なので、同時にアクセスされると不具合が起きるような気がして
ずっと心配しています。

そういう場合はプロの方はどうするのでしょうか?

同時に1人しかアクセスしないように制限するとか・・・
0170nobodyさん2008/12/11(木) 02:19:15ID:???
もっと詳しく説明してくんないと何とも言えない
0171nobodyさん2008/12/11(木) 02:37:05ID:???
アプリケーション番号みたいのを
付与したいんでないか?
0172nobodyさん2008/12/11(木) 04:15:55ID:2wImFGsH
質問

本や解説サイトによって、
関数の引数の
値渡しと、参照渡しで、
どっちが多く使われるか、
意見が分かれているのだが、
どっちがポピュラーなのか?
0173nobodyさん2008/12/11(木) 04:21:57ID:???
最近いないと思ったらまたお前か
理論的なことばっか質問するな
答えがほしいなら学校へ行け
技術的に詰まったら質問に来い
0174nobodyさん2008/12/11(木) 04:23:18ID:???
            __、
     ,r´⌒ヽ,⌒ヽ,ヽ
   (⌒)、   .人  λ\、 ._____
    \. \    、 ヽ./ ー  ー\
     |\ \    ヽ./ ( ●) ( ●)
     |  \  \ /     (__人__) \  はいはい、どーもすみませんでした
     |.   \   |       ` ⌒´   |
  .   |.   |.\_ノ\            /
  .   |.   |   |   \______/
  .   |   )  .|     . . ̄ ̄
  .   |   |  .|
     |   |.|  .|
  .   |  | .| .|
     /  / / ヽ,
    (__ノ  ヽ、__つ
0175nobodyさん2008/12/11(木) 08:01:27ID:???
今時そんな問題で悩むなんて・・・
0176nobodyさん2008/12/11(木) 08:09:54ID:???
まさに、タイトル通り、くだらねぇ
0177nobodyさん2008/12/11(木) 12:52:42ID:???
>>172
ポピュラーなんてない
考えるならどちらが最善なのかを状況に応じて考えろ
0178nobodyさん2008/12/11(木) 21:02:23ID:yxR9XmFM
あるコマンドの出力の中から出力部分を取得したいと思います。
データの構造は、このようになっていますが、
どのようなデータ処理が一番適切でしょうか?

adfadfasdfasf1 384 Thu Dec 11 10:41 data1
(himitu1)
subdata1
adfadfasdfasf2 356 Thu Dec 11 05:20 data2
(himitu2)
subdata2
adfadfasdfasf3 361 Wed Dec 10 20:32 data3
(himitu3)
subdata3

・
・
・


このような構造のデータが可変で続きます。
上記の例でいえば、data1、subdata1、data2、subdata2、・・・の順で取得してDBに突っ込みたいと思っております。
一つのデータが一行で収まっていれば、explodeと簡単なのですが、
一つのデータが複数行になってしまっているので、処理が複雑になってしまいます。

何かよい知恵をお貸し下さい。お願いします。
0179nobodyさん2008/12/11(木) 21:05:45ID:???
3行ごとに分けてexplodeなりsubstrなり正規表現なりで好きなように切り取ればいいじゃない
0180nobodyさん2008/12/11(木) 21:43:42ID:???
>adfadfasdfasf2 356 Thu Dec 11 05:20 data2
悩むとするならこの行だろうけど、
項目が減ったり増えたりする訳じゃないのだから
頑張って正規表現だな。

まず、日付を先に取り出すのを考えて、日付取り出しちゃえば
後はすげー楽だと思う。

7種類の曜日のどれか、スペース、12種類の月のどれか、スペース
数字2桁、スペース…
正規表現に当てはめるのは簡単だけど、書くのは凄いめんどくさそうだね。
0181nobodyさん2008/12/11(木) 22:37:36ID:yxR9XmFM
>>179 >>180
アドバイスありがとうございました。
行での正規表現でのアドバイス参考になりました。

ただ、3行ずつ分けるって、結構大変そうですね。
やはりフラグを多用し、プログラムがぐちゃぐちゃになりそうなので、
そこはちょっと困ったところです。もう少し考えてみます。
どうもありがとうござました。
■ このスレッドは過去ログ倉庫に格納されています