トップページ⇒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等)・フレームワークは各該当スレへ
0032nobodyさん2008/12/08(月) 13:55:23ID:???
>>30
本来は必要ないはず
必ず変数は初期化するよう心がける
初期化しない変数は使わない
これ基本
0033nobodyさん2008/12/08(月) 13:57:23ID:???
しかし、酷いサンプルだね。そんな本捨てちゃえ
0034nobodyさん2008/12/08(月) 14:30:32ID:???
>>29
回答が間違ってることの指摘だよ
もしくは回答に関連した議論の続き
自分が嫌だから他人に書き込むなって強制するのは子供だよ
0035nobodyさん2008/12/08(月) 14:39:41ID:???
>>34
お前以外の全員が、お前の粘着を嫌がってるのに気付かないのか。
かわいそうに・・・唯一の味方の>>29まで失うのか。
この上は自作自演でもして盛り上がってくれよwww
0036nobodyさん2008/12/08(月) 14:41:27ID:???
いい加減スルーしろよ
0037nobodyさん2008/12/08(月) 14:45:09ID:???
えっと、誘導先のスレに行ってくれるかな
003830です2008/12/08(月) 14:53:53ID:CarXFmyd
どうもありがとうございます

>>30
いまいち理解できませんが、意味は分かりました

>>33
勉強するのに、いいサンプルソース(DB連携付)
があればぜひ教えてください

PHPによるWebアプリケーションスーパーサンプル 第2版
http://d.hatena.ne.jp/asin/479733245X
のサンプルを勉強しているのですが


003930です2008/12/08(月) 14:55:44ID:CarXFmyd
> >>30
> いまいち理解できませんが、意味は分かりました
×30
>>32 の間違いでした
0040nobodyさん2008/12/08(月) 15:08:20ID:???
33だけど、コーディング覚えるのに本ってどうだろうな。
いまどきならPHP5ベースのフレームワークのソース呼んだ方がいい。
が、質問の趣旨に答えとくと、一応これをお勧めしとく[初めてのPHP & MySQL]

あのソースがなんで酷いか。
$keyがセットされてるかどうかもわからない状況で
エスケープもクォートもせずにWHERE句に文字列を突っ込んでる点。
0041nobodyさん2008/12/08(月) 15:20:45ID:???
>>40

>>1
004230です2008/12/08(月) 17:00:55ID:CarXFmyd
>>40
どうもです
サンプルにはちゃんとエスケープ処理してあります
今回は、引用を短く書きました。失礼しました

自分はprepare メソッドに書き換えています
0043nobodyさん2008/12/08(月) 17:17:09ID:???
>>42
そういうことね。了解。
エスケープって、こんなかんじ?
$key = is_string($key) ? "'" . mysql_escape_string($key) . "'" : "''";
その文脈で来てて、issetとかおかしいし、strlenもいらねぇよな。やっぱり変。
0044nobodyさん2008/12/08(月) 17:19:47ID:???
あぁ、ごめ、SQLiteだね。
004530です2008/12/08(月) 17:46:53ID:CarXFmyd
addslashes を使ってあります

ちょっとソースが長いので省略しますが
$sql="SELECT * FROM usr";
if (isset($key)) {
$sql .=" WHERE uid = $key";

大体こんな感じです
$key はPOSTされてきます

なんか記述がショボイ(洗練されてない)なぁとは感じています
0046nobodyさん2008/12/08(月) 18:23:33ID:t7PZq5hY
>>24
ありがとうございます。
*AMPはMacなのでMAMPをインストールしています。(ということですよね)
提示されてる内容がいまいち把握できてませんが、調べてみます。
ODBCという名前にまったく関心がなかったので忘れてましたがFM9からは
「外部SQLデータソースに接続できる」だそうでこれが旨く使えればいいんですが。
0047nobodyさん2008/12/08(月) 18:51:53ID:???
>>45
やるなら
if(isset($_POST["key"])){
$key = (int)trim($_POST["key"]);
}else{
$key = 0;
}
$sql="SELECT * FROM usr WHERE uid = ".$key;
でいいんじゃないの?
0048nobodyさん2008/12/08(月) 18:52:35ID:???
arrayは関数です
0049nobodyさん2008/12/08(月) 18:58:54ID:???
>>48
>>27
0050nobodyさん2008/12/08(月) 19:03:43ID:???
>>45,47
まさか、uidって整数なの?strlenで比較してるのに?
0051nobodyさん2008/12/08(月) 19:08:51ID:???
>>50
47だがシングルクォートないからINT型かとエスパーしたわけだが
実際にintかどうかはしらん
てかよくみたらだめぽなので修正

if(isset($_POST["key"])){
$where = WHERE uid = ".(int)trim($_POST["key"]);
}else{
$where = "";
}
$sql="SELECT * FROM usr ".$where;
0052nobodyさん2008/12/08(月) 20:27:07ID:???
arrayは関数です
0053nobodyさん2008/12/08(月) 20:28:57ID:wAMJwI03
http://drrf.freehostia.com/

このPHP探してます
配布してるところ知ってれば教えてください


ここでよかったのかな・・・
0054nobodyさん2008/12/08(月) 20:29:37ID:???
>>53
スレ違い
0055nobodyさん2008/12/08(月) 21:27:21ID:tNwQhygu
こんにちは
file_get_countentsの参照先が、gzip転送対応必須となっています
見に行かせると「ブラウザ設定のHTTP1.1を〜」など警告が出ます
この場合phpに取得させるにはどうすればよいのでしょうか?
よろしくお願いいたします
0056nobodyさん2008/12/08(月) 23:21:48ID:E0jjD+uU
<?PHP

これって、PHP、の部分を大文字で
書いても、いいの?
0057nobodyさん2008/12/08(月) 23:22:48ID:???
やってわかることはやってから質問しろ
0058nobodyさん2008/12/08(月) 23:22:56ID:E0jjD+uU
質問

varって予約語?
0059nobodyさん2008/12/08(月) 23:24:43ID:???
態度をわきまえて質問しろ!
0060nobodyさん2008/12/08(月) 23:25:13ID:???
おっと、ゆとりに熱くなってしまった^^;
0061nobodyさん2008/12/08(月) 23:40:18ID:???
>>58
http://jp.php.net/manual/ja/reserved.php
0062nobodyさん2008/12/08(月) 23:52:51ID:???
varって変数を定義するときに使うのか。
おまいら、そんなカンタンなことも答えられないのか。
0063nobodyさん2008/12/08(月) 23:56:36ID:???
<?php
$a=array('aaaaaa',55,5.876,NULL,FALSE);
var_dump($a);
?>

これ実行するとおもろい。
NULLはなんの型でもなくNULLなんだ、ってわかる
0064nobodyさん2008/12/08(月) 23:58:38ID:???
何をいってるんだお前は
0065nobodyさん2008/12/09(火) 00:28:07ID:???
FALSEはbool型だけど、
NULLjは、なんの型でも無い。
0066nobodyさん2008/12/09(火) 00:50:08ID:???
NULLはnull型という特殊な型です
ていうか配列に異なる型いれるなよ気持ち悪い
0067nobodyさん2008/12/09(火) 00:50:15ID:???
NULLはNULL型だが?
0068nobodyさん2008/12/09(火) 00:50:21ID:AVrbWSbl
void flush ( void )

関数の使い方のマニュアルの説明書きで、
()の中が、voidって書いてあるのは、
何も入れるな、って意味?
0069nobodyさん2008/12/09(火) 00:50:46ID:???
すまんかぶったw
0070nobodyさん2008/12/09(火) 00:51:16ID:???
んでも
>>63
のコードを実行すると、NULLのところだけ、
型の指定が無い。これは
NULLだけ、なんの型でもないことを示唆している。
0071nobodyさん2008/12/09(火) 00:51:17ID:???
>>68
全然違う
0072nobodyさん2008/12/09(火) 00:51:47ID:???
>>70
していない
0073nobodyさん2008/12/09(火) 01:02:59ID:???
http://startup.dino.co.jp/2008/05/27/php-7/

このページわかりやすい
0074nobodyさん2008/12/09(火) 01:04:00ID:???
blogでだらだら書いててお世辞にも読みやすいとは言えない
コードも初心者丸出し
0075nobodyさん2008/12/09(火) 01:08:08ID:4nXhjr9t
質問いたします。
mailサーバーにmailを送るのはsend_mail関数でできるのですが
mailサーバーに送られたmailの添付画像をPHPで読み込むには
何関数を使えばよいのでしょうか?
よろしくお願いします。
0076nobodyさん2008/12/09(火) 01:20:18ID:???
>>75
http://jp.php.net/manual/ja/refs.remote.mail.php
お好きなのを
0077752008/12/09(火) 01:54:40ID:4nXhjr9t
>>76
じっくり見たのですが俺のバカな頭ではわからない orz
もう無理でしょうか?
0078nobodyさん2008/12/09(火) 01:59:19ID:???
     *      *
  *  無理です  +
     n ∧_∧ n
 + (ヨ(* ´∀`)E)
      Y     Y    *
0079752008/12/09(火) 02:24:53ID:4nXhjr9t
無理は承知なのですがズバっとmailサーバーに送られた添付データを
読み込むにはPHPの何関数を使えば大丈夫ですか?
0080nobodyさん2008/12/09(火) 02:42:17ID:???
>>79
http://jp.php.net/manual/ja/refs.remote.mail.php
お好きなのを
008130です2008/12/09(火) 06:29:29ID:pNYuh3pR
>>47
ご丁寧にありがとうございます

この処理は一番最初の時点でも実行されます
(つまり$key にPOSTされていない)

その場合でも、書いて頂いた記述でいいのでしょうか
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

自分 '' をつけてました。
■ このスレッドは過去ログ倉庫に格納されています