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

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

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん2006/03/15(水) 19:18:21ID:yiOrS10N
PHPに関するくだらねぇ質問用スレです。
ここなら本スレで回答のないお前の下らない質問に回答があるかも知れません。

まず読め【PHP マニュアル】
http://www.php.net/manual/ja/

本スレ【PHP】質問スレッドpart33【php】
http://pc8.2ch.net/test/read.cgi/php/1140027592/

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

過去スレは>>2-3あたり
01531522006/03/18(土) 18:21:05ID:???
すみません。間違えました。
2行目
誤)CREATE DB test;
正)CREATE DATABASE test;
0154nobodyさん2006/03/18(土) 18:22:01ID:???
$query = "
create table test(
title varchar(255) not null,
comment text not null,
index(title))
";
mysql_query( $query);
で普通にできる
01551522006/03/18(土) 18:26:40ID:???
>>154
早速のご回答、ありがとうございます。
せっかく答えていただいて申し訳ないのですが、私がやりたいのは
複数の「;」を持つ命令を一度のmysql_query();で実行することなん
です。
質問が不適切でした。すみません。
0156nobodyさん2006/03/18(土) 23:11:55ID:???
>>152
どんなエラーかも書いてくれよバカ
それはPHPのエラーか?それともMySQL自体のエラーか?
01571522006/03/18(土) 23:24:52ID:???
>>156
すみません。バカでした。
mysql_error()関数でエラーメッセージを取得できるので、
PHPのエラーではなくMySQLのエラーのようです。

$t = mysql_connect('localhost', 'root', 'root');
mysql_query('CREATE DATABASE test; USE test', $t);
print mysql_error();

You have an error in your SQL syntax near '; USE test' at line 1
0158nobodyさん2006/03/19(日) 00:01:50ID:???
>>155
「複数の「;」を持つ命令を一度のmysql_query();で実行すること」
は仕様上無理。
0159nobodyさん2006/03/19(日) 00:31:41ID:???
>>155
INSERT命令とUPDATE命令で確認したんだけど、
どうやら最後のセミコロン以降のみ有効になるっぽいな。

SQL文を配列に突っ込んでfor文とかでぶん回せば良いんじゃないの?
0160nobodyさん2006/03/19(日) 03:35:41ID:???
みんなああああああああああああああああ
頑張ろうぜええええええええええええええええええええええええええええ
0161nobodyさん2006/03/19(日) 09:20:28ID:???
>>158
仕様上無理では仕方ありませんね。あきらめて複数のmysql_query()で
実行することにしました。
ご回答、ありがとうございました。

>>159
アドバイスをもとにして、外部ファイルに記録した複数のSQL文を実行
する関数をつくってみました。
http://www2.nct9.ne.jp/dorayaki/mysql_queries.txt

mysql_query()の返り値が不要なときはこれを使うことにします。
ご回答ありがとうございました。
0162nobodyさん2006/03/19(日) 10:21:19ID:???
適当に改行してくれるPHPの定義済み定数ってなんだっけ?
0163nobodyさん2006/03/19(日) 10:36:12ID:???
USEコマンドは専用の関数が…
01641612006/03/19(日) 10:54:22ID:???
>>163
mysql_select_db()を使ってもよかったのですが、ひとつのファイルに
まとめて記述したほうが説明がしやすかったので、そうしました。
0165nobodyさん2006/03/19(日) 11:22:08ID:???
>>162
wordwarp?
0166nobodyさん2006/03/19(日) 11:36:04ID:???
>>162
nl2br?
でもこれは定数ではなく関数…
0167nobodyさん2006/03/19(日) 12:10:47ID:iOnFUS0L
http://blogdesign.cocok.jp/thumb.php?m=l&;id=175

このスクリプトはどういう仕組みなのでしょうか。
クエリ情報を取得する方法はわかるのですが、これをimagejpeg()に応用するには
どうすればいいでしょうか?
0168nobodyさん2006/03/19(日) 12:44:13ID:???
>>161
これなんでforeachじゃなくて
array_maximum_key()で回数とって回してるんですか?
教えてエロいひと(><)
0169nobodyさん2006/03/19(日) 13:15:57ID:???
>>167
まずはお前さんが、リンクしたスクリプトのソースを提示するか
挙動から推察した仕様を提示。

つか"2ちゃんねる・ブログ板の「デザイン(構造も)がかっこいいblog」スレ"
のまとめサイトらしいから、そっちで作者に尋ねるのが先では?
0170nobodyさん2006/03/19(日) 13:58:26ID:???
<?php echo "$ENV{'QUERY_STRING'}" ?>

何を間違えているのでしょうか
0171nobodyさん2006/03/19(日) 14:04:38ID:???
>>170
質問の仕方
0172nobodyさん2006/03/19(日) 14:10:48ID:???
>>170
突っ込みどころ多すぎ
0173nobodyさん2006/03/19(日) 14:13:55ID:???
>>170
「〜という出力を期待したのだが、〜という結果に終わった。」
さらに言うと、何故そうなったのかという自分なりの考察が欲しい所だ。
てか、原因を考えてみて色々試行錯誤している筈だから、
その辺の話が出てこない筈は無いんだが。
0174nobodyさん2006/03/19(日) 14:28:51ID:???
php -l test.php
>No syntax errors detected in test.php
特に間違いはないけど。
0175nobodyさん2006/03/19(日) 14:33:19ID:???
session_start 使ってから header 使ってファイルをダウンロード
させようとしても上手く機能しない、という内容で、
前スレでもちょっと質問したんですが、
似たようなのを以下のページで見つけました。
なにか良い回避策はないでしょうか?

ttp://www.drive.ne.jp/iMA/showmail.pl?PHP-users=15468
0176nobodyさん2006/03/19(日) 14:46:50ID:???
>>175
検索キーワードを考えてみた。
「header mime session php」
phpのマニュアルのheader()のページのUser Contributed Notesに解決策が載ってた。
0177nobodyさん2006/03/19(日) 14:58:02ID:???
ftpでダウンロードしてきて、それをそのまま
ブラウザにダウンロードログを出して、ダウンロードさせたいのですが、
どうすればいいでしょうか?
ftp_get()で一旦ローカルにおいて、それを
ダウンロードさせる方法なら簡単に実現できたのですが、
対象ファイルが大きいため、ローカルに置かずに直接
ダウンロードさせたいと考えています。
01781612006/03/19(日) 15:07:55ID:???
>>168
私がお答えしませう。
foreachは配列に追加された順番で展開されるので、より正確に数値配列
のキーの順番で展開されるように、わざわざめんどくさいことをやってみ
ました。
0179nobodyさん2006/03/19(日) 15:26:50ID:???
特定テキストファイルの最後の10行だけ表示させるには
どうすればよかとですか?
0180nobodyさん2006/03/19(日) 15:32:08ID:???
>>179
もう少し頭を使ったほうが良いんじゃないでしょうか
0181nobodyさん2006/03/19(日) 15:32:58ID:???
>>177
FTP-HTTPブリッジか。PHPの範疇じゃないね。
それはもちっと低レベル(層)でやること。
0182nobodyさん2006/03/19(日) 15:35:52ID:???
>>179
`tail -10 filename`
0183nobodyさん2006/03/19(日) 15:45:26ID:???
>>177
ftp_fgetでSTDOUTに出力すればいいんじゃないの?
0184nobodyさん2006/03/19(日) 16:36:29ID:owkIMffO
質問です。現在ゲストブックを作り始めたところなのですが、エラーが起きてしまいます。
<?php
print <<<EOM
<html><body>
<form action="test.php" method="POST">
<FONT size="-1">N:<input type="text" name="n" size="20"> C:<input type="text" name="c" size="20"> <input type="submit" value="書き込み"></FONT>
</form></body></html>
EOM;
?>
なんですが、Parse error: syntax error, unexpected $end in D:省略test.php on line 10
というエラーが出てしまいます。どうすればいいのでしょうか。
0185nobodyさん2006/03/19(日) 16:41:53ID:???
>>184
まるまるコピーして実行したけどエラーはでなかった。
もしかすると、文字コードの設定に問題ありかも。開発環境の
文字コードとphp.iniの文字コード設定をチェック。
0186nobodyさん2006/03/19(日) 16:42:18ID:???
print を echo に変えてみよう。
0187nobodyさん2006/03/19(日) 16:47:20ID:???
>>185
ありがとうございます。
php.iniの設定いじってみます。
>>186
echoで<<<EOMのようにする場合はどのように書けばよろしいのでしょうか?
01881852006/03/19(日) 16:49:34ID:???
スマソ。なげやりだった。

php.iniの設定
mbstring.internal_encoding = SJIS <- Windowsのメモ帳で開発中なら
mbstring.http_input = auto
mbstring.http_output = SJIS <- Windowsのメモ帳で開発中なら
0189nobodyさん2006/03/19(日) 16:53:22ID:???
>>187
まんまprintの部分にecho入れてみ。

ってか>>188だろうね。
0190nobodyさん2006/03/19(日) 17:09:19ID:???
そもそもこの場合、
echo '
<html><body>
<form action="test.php" method="POST">
<FONT size="-1">N:<input type="text" name="n" size="20"> C:<input type="text" name="c" size="20"> <input type="submit" value="書き込み"></FONT>
</form></body></html>
';
と最初と最後を置き換えても問題ないわけで
0191nobodyさん2006/03/19(日) 17:11:12ID:???
>>188
いえいえ、ありがとうございます。
mbstring.internal_encoding = EUC-JP
;mbstring.http_input = auto
mbstring.http_output = UTF-8
になっていました。
しかし、直してみたのですがいぜんエラーのままです。
もう少し調べてみます。
0192nobodyさん2006/03/19(日) 17:13:48ID:???
連続すいません。
多分反映されてないだけだと思います;
再起動して反映させてみます。
0193nobodyさん2006/03/19(日) 17:24:08ID:???
再起動させても変わりないのでちょっと調べてみます。
ありがとうございました。
ちなみに>>190さんのやり方だと表示されました。
0194nobodyさん2006/03/19(日) 17:38:42ID:???
>>184
EOM;の後ろに半角スペースが入ってるとか
01951852006/03/19(日) 17:41:52ID:???
>>194
確かにEOM;のあとに半角スペース入れたらエラーになった。
これは新しい発見。
0196nobodyさん2006/03/19(日) 21:31:10ID:???
<?php
print <<<EOM
<font>こんにちは。</font>
EOM;
?>
これでもエラー
Parse error: syntax error, unexpected $end in D:省略public_html\test.php on line 5
が出てしまいました。
php.iniの文字コードの部分はいじってみたのですが変化はありませんでした。
ぐぐってみたのですがよくわかりません。
何がおかしいのでしょうか…。
0197nobodyさん2006/03/19(日) 21:32:03ID:???
面白シス。
これ攻撃に使えるな(w

まず全部読み込んで、行数数えて、シークして読み直す。
あるいは1行何文字と固定長にして保存しといて、計算してシークして読む。
DB使った方がパフォーマンスは騰がる。

直接ダウンロードは無謀だな。
FTPが速くて、HTTPが遅かったら、メモリ食いつぶすよ。

ソース有るんだからmysql_query2()とか自分で作って、複数行の命令を一度に実行できるようにすればいいんじゃね?
複数エラー出た時に大変だろうけどね。
0198nobodyさん2006/03/19(日) 21:43:08ID:???
>>196
>>194は試したのか?
0199nobodyさん2006/03/19(日) 21:58:07ID:owkIMffO
>>198
はい。
EOM;の後ろには何もムダなものは入っていませんでした。
その他のところも問題ないと思います。
0200nobodyさん2006/03/19(日) 22:09:18ID:???
>>199
改行コードはどうなってる?
02011852006/03/19(日) 22:12:45ID:???
<?php ?> みたいに、終わりの?>のあとにスペースが入ってて、
2時間を費やしてそのミスに気がついたことがありましたが、そ
のへんはいかがでしょうか?
0202nobodyさん2006/03/19(日) 22:13:26ID:???
http://ns1.php.gr.jp/pipermail/php-users/2006-February/028922.html
ここ参考
0203nobodyさん2006/03/19(日) 22:14:04ID:???
http://ns1.php.gr.jp/pipermail/php-users/2006-February/028923.html
こっちだった^^;
0204nobodyさん2006/03/19(日) 22:20:26ID:???
>>201
問題ありませんでした。
>>200 , 203
なるほど。改行コードの種類でエラーが起きてしまう事があるのですね。
今私が使ってるEditerでは(EmEditer)改行の種類を変更することができるのかどうかよくわからないので
少し調べてみます。
0205nobodyさん2006/03/19(日) 22:22:44ID:???
改行を気にしてるのはマニュアルの以下の部分によりますです。
-----------引用----------------
非常に重要なことですが、終端IDがある行には、セミコロン (;)以外の他の文字が含まれていてはならないこ とに注意してください。
これは、特にIDはインデントしてはならないと いうことと、セミコロンの前に空白やタブを付けてはいけないことを 意味します。
終端IDの前の最初の文字は、使用するオペレーティングシステ ムで定義された改行である必要があることにも注意を要します。
これは、例えば、Macintoshでは \rとなります。

http://www.php.net/manual/ja/language.types.string.php#language.types.string.syntax.heredoc
0206nobodyさん2006/03/19(日) 22:23:23ID:???
皆様
<?php
print <<<EOM
<font>こんにちは。</font>
EOM;
?>
のインデントを削除して見たところ正常に動作しました。
Editerが自動でインデントをやってくれるのでこれでいいものかと思っていたのがいけなかったみたいです。
皆様本当に申し訳ありませんでした。そして、ありがとうございました。
02071852006/03/19(日) 22:25:34ID:???
>>206
私も原因が気になっていたので、解決してよかったです。そして、改行
コードの件も参考になりました。
ちなみにサクラエディタなら、改行コードを選べます。
http://members.at.infoseek.co.jp/sakura_editor/
0208nobodyさん2006/03/19(日) 22:28:06ID:???
たびたび

FTPで転送してる場合テキストファイルの改行コードを変換してくれる場合もありますので
そこらへんも注意したほうがよかろうと思われますです。ではでは幸運を祈りまつ
0209nobodyさん2006/03/19(日) 22:33:13ID:lnWnX+zl
if (isset ($_GET["hoge"]) and $_GET["hoge"] == "foo") {
print ("fooおk");
} elseif (isset ($_GET["hoge"]) and $_GET[["hoge"] == "bar") {
print ("barおk");
} else {
print ("エラーちゃん");
}

みたいにして、次のような予期せぬ要求があった場合「エラーちゃん」と出力
するにはどうすればよいでしょうか?
script.php?hoge=foo&hoge=bar
0210nobodyさん2006/03/19(日) 22:37:40ID:???
>>209
よく分からんけど、try catchというのがあったかな。
0211nobodyさん2006/03/19(日) 22:46:38ID:???
>>209
同じ名前があった場合最後の奴で上書きされるんじゃないの?
その例ならbarしか抽出出来なくないか?
0212nobodyさん2006/03/19(日) 22:47:14ID:???
script.php?hoge=foo&hoge=bar
で$_GETを見てみた?barしか得られない
そのスクリプトだと
hoge=foo&hoge=abc なら、エラーちゃんにはなるな

$_SERVER["QUERY_STRING"]は hoge=foo&hoge=bar
になるのでコレを使ってなんとかせい
02132092006/03/19(日) 22:48:31ID:lnWnX+zl
>>211
あ、上書きされてますた。
PHP(・∀・)イイ!
0214nobodyさん2006/03/19(日) 23:30:27ID:QpTKRnhc
今まで気になってたんですが、

\n ってどういう意味ですか。
0215nobodyさん2006/03/19(日) 23:42:48ID:???
>>214
ラインフィード、キャリッジリターン、でそれぞれ検索してみ。
色々分かると思う。
0216nobodyさん2006/03/20(月) 03:11:08ID:???
PHP で日本語検索できるプログラムってどこかにありますか?
かなり探したんですけれども見つかりませんでした・・orz
よろしくお願いします
0217nobodyさん2006/03/20(月) 03:39:55ID:???
mb系でなかったか?
0218nobodyさん2006/03/20(月) 03:55:22ID:???
>>216
日本語で正規表現によるマッチとかって意味なら出来るけど
具体的に何がしたいのかこの説明じゃわがんね
0219nobodyさん2006/03/20(月) 05:09:27ID:???
>>216
単に検索するだけならmb_ereg()でいいんじゃ。
何をどう検索するんだ。

言っとくが、既存の完成されたプログラムを探して欲しいって話ならスレ違いっすよ。
0220nobodyさん2006/03/20(月) 05:11:13ID:???
あれだよね春進行っぽいねこのスレも
0221nobodyさん2006/03/20(月) 11:04:08ID:???
すいません、本当に下らない質問で恐縮なのですが、
メモ帳でPHP使って書いて保存するときに、
xxxxx.phpとしてもただのtxtファイルになってしまうんですが、
phpファイルってどのように作るんでしょうか?
0222nobodyさん2006/03/20(月) 11:48:34ID:???
>>221
PHPファイルってのは.phpという拡張子が付いてるだけのただのテキストファイルだがそういう意味ではなくて?
ただのtxtファイルってのはどういう意味で言ってる?
0223軟式PHP2006/03/20(月) 11:50:46ID:???
多分、凄く凄く初期レベルのお話だと思われ…。
0224nobodyさん2006/03/20(月) 11:53:35ID:???
多分じゃなく思いっきり凄く初期レベルの質問だろww
まぁいいんじゃね?たまにはこんな質問も。
0225nobodyさん2006/03/20(月) 12:05:17ID:???
拡張子非表示で実際はxxx.php.txtになってたりしてな。
0226nobodyさん2006/03/20(月) 12:25:35ID:???
>>225
これが正解だろう。

XP使ってるときは、フォルダオプションの表示の、
登録されている拡張子は表示しないをオフにする。
これでxxxx.php.txtになってるから、.txtを削ればphpの出来上がり。
もしくはFTPクライアントで名前の変更すればよし。
0227nobodyさん2006/03/20(月) 12:27:27ID:???
自分で下らない質問だと解っているからいいんじゃないの?

>>221
自分でpoor.php.txtをpoor.phpにリネームする。
もしくは保存時にファイルネームを
 "poor.php"
のように""でくくる。すると.txtを勝手に付けるというおせっかいを防げる。
もっと良い解決策は、メモ帳で*.phpファイルを書かないことだ。
0228nobodyさん2006/03/20(月) 12:49:55ID:???
最新のメモ帳はUTF-8くらいサポートしてるのかな?
0229nobodyさん2006/03/20(月) 13:03:47ID:???
>>227
自分とこで試すと、別に"で括らなくても勝手に.txtの拡張子なんて付いたりしないんだが、
XP搭載のメモ帳ってその辺の仕様が変わってるんだっけ?
>>228
対応してる。
0230nobodyさん2006/03/20(月) 13:12:08ID:???
>>229
メモ帳は基本的にどんな事であれ、拡張子に.txtをつける
0231nobodyさん2006/03/20(月) 13:12:56ID:???
>>220-221の流れがまた絶妙だな
0232nobodyさん2006/03/20(月) 13:13:00ID:???
全てのファイルで保存
0233nobodyさん2006/03/20(月) 14:26:33ID:CAF8GnmO
数字と/以外が変数に入っていたらエラーを出すにはどうしたらいいのでしょうか?
0234nobodyさん2006/03/20(月) 14:31:48ID:???
>>233
if (! preg_match('/^[0-9\/]+$/', $val)) {
print 'エラーっす';
}
0235nobodyさん2006/03/20(月) 14:32:52ID:CAF8GnmO
>>234

ありがとうございます。
0236nobodyさん2006/03/20(月) 14:33:05ID:???
preg_match('|^[0-9/]+$|', $val)

でもよか?
0237652006/03/20(月) 14:35:22ID:???
>>233
if (! preg_match('/^[0-9\/]+$/', $val)) {
print 'エラーっす';
}
0238237+2342006/03/20(月) 14:36:18ID:???
>>237
スマソ。間違えました。

>>236
よかとです。
02392382006/03/20(月) 14:38:13ID:???
>>238
さらに間違えました。文字クラスのなかも/はエスケープです。
02402392006/03/20(月) 14:42:51ID:???
>>239
あせりすぎました。デリミタが|なので/はエスケープ不要です。
今日だけで、何回間違えたのだろうか…?
0241nobodyさん2006/03/20(月) 14:44:03ID:???
if (preg_match('/[^\/0-9]+/', $val)) {
print 'エラーっす';
}

のほうが早くは無いか
0242nobodyさん2006/03/20(月) 14:45:10ID:???
激しく外出かもしれませんが教えてください。

一般的に、パラメータがn桁以下の数値かどうかを判断するのに、
正規表現で /^\d{1, n}$/
とするのと、
strlen + is_numeric
を使うのと、どちらがパフォーマンスよいでしょうか?

桁数は、極端に大きな桁数はなく、せいぜい6桁〜10桁程度です。
0243nobodyさん2006/03/20(月) 14:54:22ID:???
数値(整数)であるなら

if ($var < pow(10 , $n)) {
print 'ちいせーよ';
}

でいいのでは
0244nobodyさん2006/03/20(月) 14:55:08ID:???
ああ、数値かどうか分からないのか。すまん
0245nobodyさん2006/03/20(月) 15:16:31ID:???
>>242
strlen+is_numeric
0246nobodyさん2006/03/20(月) 15:42:59ID:CAF8GnmO
2005/12/12 の感じで日付が変数に格納されているのですが、これを年、月、日とarrayに格納するにはどうすればいいのでしょうか?

よろしくお願いします。
0247nobodyさん2006/03/20(月) 15:43:34ID:???
>>246
list($y, $m, $d) = explode("/", $date);
0248nobodyさん2006/03/20(月) 15:59:07ID:CAF8GnmO
>>247

ありがとうございます。
0249nobodyさん2006/03/20(月) 16:04:45ID:???
phpを使った他人のサイトでphpのソースを取得することはできますか?
0250nobodyさん2006/03/20(月) 16:08:25ID:???
>>249
頼めばできるかもしれません。
それから、ソースを無料で配布しているサイトもありますよ。
http://php.s3.to/
とか。
0251nobodyさん2006/03/20(月) 16:41:27ID:???
くだらない質問ですが
sql select結果を取得して、結果があれば処理をする場合
if(mysql_num_rows($result)>0)
{ $hoge=mysql_result($result,0,0); }
とするのと
if($list=mysql_fetch_array($result))
{ $hoge=$list[0]; }
とするのとどちらがよいと思われますか?
0252nobodyさん2006/03/20(月) 16:42:17ID:???
>>251
カラム1個しか使わないならresultかな
■ このスレッドは過去ログ倉庫に格納されています