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

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

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん04/11/02 00:15:41ID:???
PHPに関するくだらない質問用すれです。
0545nobodyさん04/12/21 15:22:27ID:???
>>544
可能です。
0546nobodyさん04/12/21 15:23:15ID:???
>>544
「日数」であればstrtotimeとか割り算とかで。
0547nobodyさん04/12/21 16:16:22ID:???
>>544
mktimeで比較して、差分を60*60*24で割る。
0548nobodyさん04/12/21 16:33:12ID:???
PHP+MySQLです。

select count(*) from 条件
select * from 条件 limit ほにゃ

でやった場合、条件が複雑だったり、
textフィールドのlikeだったりすると、
重いクエリーが2回発行されることになってしまいます。

そこでlimitを使わずmysql_data_seek()と、
mysql_num_rows()でやると1回のクエリーで済み、
効率的!と思ったのですが、
全件fetchと同じぐらいの大量のメモリーを使うようです。

はてさて皆さんはどうしているのでしょうか?
0549nobodyさん04/12/21 16:47:12ID:???
どんな処理か分からないのに「どうしているか」なんて答えられるわけないだろw
一般論としてコネクションがボトルネックになるならサブクエリ+ストアド。
0550nobodyさん04/12/21 17:02:20ID:AvesOqOi
携帯サイトにメールを配信するphpを作成してます。
ボーダフォンにのみメールが送れません。
サーバの設定なんでしょうか?

誰か類似の問題で悩んだ人いませんか?
以下、ソースです。
<?php
 mb_language('ja');
 mb_internal_encoding("SJIS");
 $rcd = mb_send_mail("[email protected]","メール登録","登録フォーム送信" , "From: ". "[email protected]");
 if($rcd){
  print " メール送信成功";
 }
 else{
  print " メール送信失敗";
 }
?>

神降臨キボン
0551nobodyさん04/12/21 17:04:34ID:???
何がしたいのか分からん
mysqlでtextにlike検索かけることもありえないし
0552nobodyさん04/12/21 17:22:24ID:???
>>550
そのコードでためしてるの?
ならvodaの受信制限にかかってるんだと思うけど。
原因の切り分けをやりなよ。
0553nobodyさん04/12/21 17:44:55ID:???
>>550
MySQL4.0以降で、FOUND_ROWS()を使う。
http://dev.mysql.com/doc/mysql/ja/Miscellaneous_functions.html

つかこういう質問はくだ質でやらずに、MySQL関連スレでやるべき
055455304/12/21 17:45:53ID:???
ごめん。>>553 は >>548 宛
0555nobodyさん04/12/21 18:15:54ID:AvesOqOi
vodaの受信制限ってどうすれば知れべれるの?
0556nobodyさん04/12/21 18:20:37ID:???
google
0557nobodyさん04/12/21 18:33:37ID:AvesOqOi
携帯で受信拒否の設定はしてません。
別のレンタルサーバからは同じスクリプトで
メール送れてます。
0558nobodyさん04/12/21 18:42:29ID:???
>>553
まさにこれです!
素晴らしいです。涙です。

ありがとうございます。
0559nobodyさん04/12/21 18:54:17ID:???
Vodaなんぞにメールを送ること自体が間違い。
0560nobodyさん04/12/21 19:10:55ID:AvesOqOi
サーバのsendmailのmailertableをいじくったら
解決しました。
お騒がせしました。
056150004/12/21 23:38:53ID:wgtiEewb
あれから色々調べてみたんですが
やはりHTML_QuickFormは使用できないみたいなので
自前で関数を作ることにしました。

連想配列でフィールド名をkeyにして
それにたいしてさらに配列で
データの属性や最大入力値をセットしておいて
検証していこうとかなーと思いました。
↓こんな感じで。
$fields = array( "year"=>array("type"=>"int","length"=>4)・・・)
この場合だと年のフィールドには数値が4桁入るみたいな感じです。

もっと効率のよい方法があればぜひ知恵を拝借したいです。
よろしくお願いします。
0562nobodyさん04/12/22 06:15:40ID:???
>>561
項目ごとに制限が変わるならif文で一個一個書いたほうが早いんじゃまいか
0563nobodyさん04/12/22 14:18:19ID:PAkfsMlB
echo と print は、どっちがスゴイの?
0564nobodyさん04/12/22 14:36:09ID:0NGp8KFP
echoとかphpスクリプト外のhtmlを標準出力じゃなくてファイルに出力することは出来ませんか
0565nobodyさん04/12/22 14:44:52ID:???
>>563
echoは結果を返さない。
printはtrueかfalseを返す。

>>564
できます。
056656404/12/22 14:56:22ID:???
>>565
どうすればいいんですか
0567nobodyさん04/12/22 15:22:00ID:???
>>563
マニュアルにもあるが、echoは関数じゃない。
0568nobodyさん04/12/22 15:43:41ID:???
>>563
マニュアルにもあるが、printは関数じゃない。
0569nobodyさん04/12/22 20:04:50ID:???
単なるエイリアス
0570nobodyさん04/12/22 20:45:14ID:???
>>569
嘘いうなっての。
ZEND_PRINTとZEND_ECHOで、ZEのソース辿れ。
0571nobodyさん04/12/22 21:06:12ID:???
execでunixのコマンドを利用してます。
exec($command,$result,$boolean);
で実行できるのですが、コマンドがエラーを吐いた時にエラー内容を出力
させたいのですが、できるのでしょうか?

マニュアルを見て、googleで検索しましたが出てきませんでした。
よろしくお願いします。

0572nobodyさん04/12/22 22:02:13ID:???
>>571
無理。
マニュアルに書いてあったはず。
0573nobodyさん04/12/22 22:53:51ID:???
>>571-572
リダイレクト
0574nobodyさん04/12/23 01:36:06ID:???
>>572

うそ、標準出力と標準エラー出力分けて受けとれないの?使いものにならないじゃん。
0575nobodyさん04/12/23 01:41:00ID:???
別にお前は使わなくていいよ
0576nobodyさん04/12/23 02:14:31ID:???
>>574
元々そういう用途じゃないしなぁ
057757104/12/23 05:03:15ID:???
>>573
リダイレクトは、
exec("$command > $redirect");
とかで$redirectに入ってくれるのでしょうか…(今環境なくて試せなくてすみません。)

できないというのと、できるというのはどちらが正しいのでしょうか。
0578nobodyさん04/12/23 13:26:41ID:???
PHP のバージョン番号を取得するにはどうしたらいいのでしょうか?
よろしくお願いします
0579nobodyさん04/12/23 13:29:24ID:???
>>578
マニュアルを検索してみな
0580nobodyさん04/12/23 13:31:07ID:???
>>578
phpversion()
0581nobodyさん04/12/23 13:31:47ID:???
>>579
不親切なお方
0582nobodyさん04/12/23 13:33:13ID:???
>>580-581 責任もって一生面倒見てやれよ。
0583nobodyさん04/12/23 13:36:45ID:???
Let me try to be back to this place any day
0584nobodyさん04/12/23 22:16:01ID:???
>>577
リダイレクトはPHPじゃなくてシェルの機能。
PHPの変数が使えるわけがない。
0585nobodyさん04/12/24 03:29:30ID:???
>>577
"$command > $redirect"が文字列と解析されてexecに渡されるんだから、
$redirect の値は変化しないよ。プログラミング言語の構文解析を理解しよう。

0586nobodyさん04/12/24 07:25:48ID:???
なんだ?こいつら
0587nobodyさん04/12/24 09:14:28ID:???
sample1.php
<?php
$test=1;

include 'sample2.php';
sample($test);
?>

sample2.php
<?php
function sample($data){
global $sample;
$sample = $data;
//echo $sample; ←これは表示される
}
?>
<?php
echo $sample;
?>

sample1.phpで$testの値をsample2.phpに送り
sample2.phpのfunction sample(){}の外から
送られてきたデータを表示させたいのですが、上手く行きません
function内部でグローバル関数にはしているのですが・・・

そもそもこのようなことは可能なのでしょうか?
もし可能でしたらやり方を教えてください
0588nobodyさん04/12/24 12:44:13ID:???
>>587
その書き方だと

$test=1;
 ↓
echo $sample; ←この時点では$sampleに何も入ってない
 ↓
sample($test); ←ここで$sampleに代入が行われる

って処理順になるから無理
やりたいことが分からんけど、sample()で$sampleをreturnしてそれ拾ったらダメなのか?
0589nobodyさん04/12/24 12:52:00ID:???
>>587
globalを勘違いしてるな。

<?php
$hoge = 'fuga';
$hogehoge = 'fugafuga';
function sample($data)
{
    global $hoge;

    echo $hoge;
    echo "\n";
    echo $data;
}

sample($hogehoge);
?>

//実行結果
fuga
fugafuga
//ココまで

functionの外で定義されている変数を引数として渡さずに関数に渡す方法としてglobalがある、ということ。
だから、必要もないのにglobalを使うのは控えた方が良い。

ついでに言うとincludeの解釈も何かおかしい。これ以上は面倒くさいので他の人に任せるわ。
059058904/12/24 12:54:18ID:???
>>588
の方が簡潔でわかりやすかったね。
別の場所で釣ってくる
0591nobodyさん04/12/24 13:37:53ID:???
 PHPでサイトの管理が出来ると小耳に挟んだのですが、どうやってやるのでしょう?
アドレスを変数に代入しまくっておいてそれをナビゲーションバーなどの部分にincludeさせるとかでしょうか?

 PHPでサイトを管理するってのは良い事(=ラク)なのでしょうか。。。
0592nobodyさん04/12/24 14:04:44ID:???
管理という意味が分からない
059359104/12/24 14:49:54ID:???
>>592
すみません。(汗
具体的には全ページにリンクを貼ったり、最新の記事を表示させたり…などのことです。
「サイト構築」の方が正しい言い方でした。。。
0594nobodyさん04/12/24 15:38:44ID:???
>>593
出来合いのものではxoopsやphpnukeがそんな機能を持ってるけど、
一からそれらを作ろうとしたり、モジュール(機能クラス)を作るとなるとメンドクサイ。
ソースを公開しているものが多いので「CMS php」で検索してみるといいかも。
0595nobodyさん04/12/24 17:27:05ID:???
>>594
なるほど、便利そうなツールですね…。
なんとかレンタルサーバーで使えないものでしょうか(^_^;
0596nobodyさん04/12/24 18:05:28ID:???
>>595
レン鯖板逝ってテンプレ読め。
それでわからなければ諦めろ。お前には無理
0597nobodyさん04/12/25 15:31:41ID:zT6Tkwqi
BASIC認証のページにログインする際に、毎回IDとPASSを入力するのが
なにかと面倒なため、別サーバー上のPHPのスクリプトにアクセスすると
対象のページに自動的にログイン処理をするようにしたいのですが、
URLにIDとPASSを追記する方法でやってみたのですがうまくいきませんでした。
どうしたらいいでしょうか?よろしくお願いします。
0598nobodyさん04/12/25 17:34:45ID:???
>>597
IE使え
0599nobodyさん04/12/25 17:52:29ID:xF7q17T9
こういう出力をしてくれる関数はないの?

echo "<pre>";
print_r($hoge);
echo "</pre>";
0600nobodyさん04/12/26 00:50:51ID:???
>>599
ほらよ!
function myprint($hoge)
{
    echo "<pre>";
    print_r($hoge);
    echo "</pre>";
}
060159704/12/26 03:22:38ID:???
>>598
説明不足で申し訳ありませんでした。i-mode等、PC以外の端末からアクセスすることもあるため、
IEを使うという選択肢は選べなかったのです。
それと、色々試行錯誤したら自己解決してしまいました・・・。せっかく答えてもらったのに申し訳ないです。
0602HELPです。04/12/26 06:31:02ID:iF98WIAd
PHPとMYSQLを連携させて掲示板の様な物を作っているのですが
$_HTTPからの変数(文字列)は何事も無くデータベースに保存されるのですが。
テーブルのバックアップファイルを作成した後、それらを読み込んで
データベースに格納する際に文字化けしてしまいます。
文字コードの違いだと思うのですがどの様に変換すればちゃんとできるでしょうか?
文字化けの例: ソフト→ャtト
色々調べてSJISの”835c”が”5c”を抜かして認識されている様です(TT)
0603nobodyさん04/12/26 12:38:51ID:???
<?php
$test0 = 0;
$test1 = 1;
$test2 = 2;

for($i=0; $i<3; $i++){
echo $test(iの番号);
}
?>

上記のようなプログラムで
for文の中で変数$testの後ろにある番号とiの数を同じものを表示したいんですが
流石に「$test$i」と入れても都合よく「$test0」のようにはなってくれないので
いい打開策はありませんかね?

なんか、わかりにくい文章でスイマセン
0604nobodyさん04/12/26 12:42:32ID:???
<?php
$test[0] = 0;
$test[1] = 1;
$test[2] = 2;

for($i=0; $i<3; $i++){
echo $test[$i];
}
?>
0605nobodyさん04/12/26 12:52:55ID:???
可変変数を使ってみたり。
for($i=0; $i<3; $i++){
 $val = 'test'.$i;
 echo $$val;
}
0606nobodyさん04/12/26 18:22:23ID:???
なんかもう可変変数ネタはFAQ行きだな
質問内容の殆どが配列で出来る処理ばっかりだけど

>>605
こっちのがスマートじゃね?

for($i=0; $i<3; $i++){
 echo ${'test'.$i};
}
0607nobodyさん04/12/26 18:50:34ID:0Jc5OGQz
Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in C:\Apache Group\Apache2\htdocs\my.php on line 10
ってエラーが出て何が原因かさっぱり分からないです・・・
<html><body>
<?
mysql_connect(localhost,tanaka,secret);
mysql_select_db(ADDRESS_DB);
mysql_query("insert into
FRIENDS_T2(NAME_C,ADD_C,AGE_C,BLOOD_C)
values('$fullname','$address','$age','$blood')");
$result=mysql_query("select * from FRIENDS_T2");
$rows=mysql_num_rows($result);
if($rows==0){
print "該当のレコードがありません";
}
else{
while($row=mysql_fetch_array($result)){
print $row["NAME_C"];
print " ";
print $row["ADD_C"];
print " ";
print $row["AGE_C"];
print " ";
print $row["BLOOD_C"];
print "<br>";
}
}
?>下記の内容で登録しました<br>お名前:<? echo $fullname; ?><br>ご住所:<? echo $address; ?><br>年齢:<? echo $age; ?><br>血液型:<? echo $blood; ?><br>
<br>登録ありがとうございます<br>
</body></html>
HTMLのフォームを使ったのですが受け取ったはずの名前とかも表示されません分かる方いたらお願いします
0608nobodyさん04/12/26 19:03:40ID:???
mysql_connect()
接続に成功した場合は正のMySQLリンクID、失敗した場合にFALSEを返し ます
mysql_query()
クエリーが成功したかどうかを 表すためにTRUE(非ゼロ)またはFALSEを返します

フォームからの変数は、register_globals = on にしない限り、$_GETや$_POST。
060960704/12/26 19:49:10ID:0Jc5OGQz
>608
>フォームからの変数は、register_globals = on にしない限り、$_GETや$_POST。
これやりましたら変数を受け取ることができました
mysql_connect()は接続ができているようです
ただmysql_query()はFALSEを返してきてうまくできていないようです・・
また新しいエラーとして
Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in C:\Apache Group\Apache2\htdocs\my.php on line 16
と出ています・・
原因分かるようでしたらお願いします
0610nobodyさん04/12/26 19:58:19ID:Z2KqsJa+
正規表現について質問させて下さい。

$str="/uri/debug/index.html"; と文字列がある時に、/debug/ を
含まれない場合、真にしたいのですがどうすればよいのでしょうか?
(^/debug/) のようにしてもダメでした。^を使ってアンマッチする方法
がどうしてもわかりません。どうか宜しくお願い致します。
0611nobodyさん04/12/26 21:18:52ID:???
>>610
if (!(preg_match ("/\/debug\//", $str))) {

}
0612nobodyさん04/12/26 21:55:56ID:???
ファイルの拡張子を*.phpではなく*.htmlや*.htmのままでPHPスクリプトを実行させるには
どうしたらいいでしょうか?
0613nobodyさん04/12/26 22:03:27ID:???
>>612
【PHP】質問スレッドpart26【php】
http://pc5.2ch.net/test/read.cgi/php/1103636095/71,74
0614nobodyさん04/12/26 22:11:00ID:???
apacheの場合、特定の拡張子の時にサーバ内で特定の動作をさせるため仕組みがあって、
mod_mimeモジュールがこの役割を果たす。
ttp://httpd.apache.org/docs-2.0/ja/mod/mod_mime.html

PHPのマニュアルのインストールの項目に書かれている、
AddType application/x-httpd-php .php
ってのは、このmod_mimeの中の設定(ディレクティブ)の1つで、
phpという拡張子の時に特定の動作をさせることを示しているわけだ。
で、こいつの書式を上のURLから参照してみると、
AddType MIME-type extension [extension] ... となっとる。
どこに書けばいいかも書いてあるな。
サーバ設定ファイル, バーチャルホスト, ディレクトリ, .htaccess に書けることになる。
061561004/12/26 22:45:57ID:???
>>611
ありがとうございました。以下の様に!eregで出来ました。

!ereg("^/.+(/debug/)",$str)
0616nobodyさん04/12/26 23:42:00ID:???
注意: Perl互換の正規表現構文を使用するpreg_match()の 方が、多くの場合、ereg()よりも速く動作します。
061761204/12/27 00:01:19ID:???
>>614
どうもです(・∀・)!
ということは.htaccessに

AddType application/x-httpd-php .html
AddType application/x-httpd-php .htm

といった感じに追加していけばいいわけですね?
061861004/12/27 00:29:12ID:???
>>616
なるほど。ありがとうございます。

>>617
AddType application/x-httpd-php .html .htm
な感じで一行にまとめれますよ。
061961204/12/27 00:38:04ID:???
>>618
> AddType application/x-httpd-php .html .htm
> な感じで一行にまとめれますよ。

( ´∀`)ノ
0620nobodyさん04/12/27 13:56:51ID:???
Mojaviって「もじゃび」って発音して正しいんでしょうか?
0621nobodyさん04/12/27 14:27:13ID:???
もはび
062262004/12/27 15:54:17ID:???
Mojave(もはべ)から来たって話なんで、
「もはび」かなぁとも思ったんですが、
なんだか「もじゃび」って書いてあったりもして・・・
0623nobodyさん04/12/28 08:45:39ID:???

 タイムスタンプって何だ?ググッてもムズいメーリングリストとかしか出てこないんだが。
062462304/12/28 09:03:41ID:???
スマソ、書く場所が微妙に違った。
0625nobodyさん04/12/28 14:01:44ID:NN7ShV+K
indexページをお気に入りに入れていない場合、
リンクがindex以外のページにされている場合に、
強制的にindexに一度飛ばす操作をしたいのですが、
検索のしかたが悪いのかそれらしいものにひっかかれません。
くだらねえ質問誘導頼んます。
0626nobodyさん04/12/28 14:22:27ID:???
0からはじめようと思ってるのですが、何から手をつけていいのかわからないのです。
変数、定数、変数の参照、式と文、演算子、条件分岐、if文条件分岐、switch文、ループ文while、ループ文for、配列array、変数の受渡し
等を覚えればいいのですか?
これ等を駆使すればどんなスクリプトも作れますか?
0627nobodyさん04/12/28 14:35:04ID:???
>>625
全コンテンツがPHPで書かれてるのでなければ、
Apacheなりhttpdのお仕事だな、それ。

あとリファラーのチェックとか、トップのindexで
クッキー食わせてチェックとかにになるんだろうけど、
判断が危うい条件になりそう。
0628nobodyさん04/12/28 14:47:06ID:???
>>626
本屋へGo!!
0629nobodyさん04/12/28 15:56:51ID:64WbgjnW
他スレから誘導されてきますた

a
b
c
3つのチェックボックスがあって、
チェックを付けたやつだけ、
inputボタンを押した後に表示したいんですが、
どうすればいいでしょうか?

例:aとcにチェックを付けたら、次の画面で、
aとcを表示させる。

あと、perlだと、フォームで同じnameで複数項目入力させても
配列に格納されます?
perlのスクリプトだとどうもそうっぽいので。
phpじゃこれは無理でしょうか?
やってみますたが、むりっぽかったので
0630nobodyさん04/12/28 16:09:56ID:???
>>629
http://www.kondo-net.gr.jp/softca/php/
0631nobodyさん04/12/28 16:12:49ID:???
>>629
perlは自分で配列に入れないといけない。
hoge=a&hoge=c

PHPはフォームのnameに[]をつける
<input name=hoge[]
063262904/12/28 16:14:18ID:???
>>630-631

神キターーー!!
ありがとうございます!
極初心者なもんでこれで半日つぶしました汗
0633nobodyさん04/12/28 16:21:40ID:???
>>631
nameが同じならhoge=a\0cだろ
0634nobodyさん04/12/28 16:32:51ID:NN7ShV+K
ITmediaニュース:PHPのコード問題を突くSantyワームの亜種が出現
http://www.itmedia.co.jp/news/articles/0412/28/news006.html

新種。(((((;゚Д゚)))))
0635nobodyさん04/12/28 17:05:07ID:???
>>634
正直突かれるようなスクリプトを未だに書いてるのが…
サニタイズしろって。
参考:http://xoops.sourceforge.jp/wiki/xoops2/index?cmd=read&page=TECH%2FAgenda-X%20%A4%CE%C0%C8%BC%E5%C0%AD%CC%E4%C2%EA
0636nobodyさん04/12/28 17:53:38ID:???
ファイルマネージャを作成しているのですが、
新しいファイルを作成するのって
どのようにすればいいのでしょうか?
mkdirみたいなのねーでしょうか?
0637nobodyさん04/12/28 17:56:26ID:???
>>636
書き込めば作成できるだろ
063863604/12/28 18:16:45ID:???
>>637
fopenとかだと、パーミッション気にしなきゃならなくて
厳しくないでしょうか?
今、
一時的にchmodでアクセス権限777にして
書き込む方法思いついたのですが、セキュリティ上よろしくない気がしますのでございます
0639nobodyさん04/12/28 18:27:34ID:???
>>638
UNIXのファイルシステムについて学んで来い。
0640nobodyさん04/12/28 18:34:31ID:???
>>638
新しいファイルを作成したいんだろ?
まだファイルが存在しないのにchmodって何よ?
0641nobodyさん04/12/28 21:45:05ID:???
>>635
PHPプログラマがそんなの意識してるわけねーだろ
0642nobodyさん04/12/28 22:08:06ID:???
>>640
fopen wならファイル無い場合、勝手に作成されるよ?
0643nobodyさん04/12/29 06:58:13ID:???
クエリ実行関数
<?php
function query($sql1, $con){
$resultsql1=mysql_query($sql1, $con);
if ($resultsql1==false){
echo ("Perform Query01 failed !!");
exit();
}
return $resultsql1;
}
?>
を
require_once("./lib/query01.php");
という感じで引き出してるのですが、どうやっても
Perform Query01 failed !
が返ってきてしまいます。
(使いまわししてる他のページでは問題なし)

多分くだらない事が原因なんだろうけど、自分じゃ見つけることができません。
間違いがあったら教えてくだしあ…(涙)
0644nobodyさん04/12/29 07:22:15ID:???
>>643
どーもこーもmysql_queryがFALSE返してんだろ
PHP通さずにmysqlに同じSQL文投げても通るか確かめた?
■ このスレッドは過去ログ倉庫に格納されています