【PHP】くだらねぇ質問はここに書き込みやがれpart9
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2005/09/03(土) 11:53:32ID:7OO4C5e5ここなら本スレで回答のないお前の下らない質問に回答があるかも知れません。
次スレは>>970あたりが建てて下さい
・過去スレ
【PHP】くだらねぇ質問はここに書き込みやがれ
http://pc5.2ch.net/test/read.cgi/php/1099322141/
【PHP】くだらねぇ質問はここに書き込みやがれpart2
http://pc5.2ch.net/test/read.cgi/php/1105218084/
【PHP】くだらねぇ質問はここに書き込みやがれpart3
http://pc5.2ch.net/test/read.cgi/php/1107780435/
【PHP】くだらねぇ質問はここに書き込みやがれpart4
http://pc8.2ch.net/test/read.cgi/php/1110697712/
【PHP】くだらねぇ質問はここに書き込みやがれpart5
http://pc8.2ch.net/test/read.cgi/php/1114787573/
【PHP】くだらねぇ質問はここに書き込みやがれpart6
http://pc8.2ch.net/test/read.cgi/php/1117945031/
【PHP】くだらねぇ質問はここに書き込みやがれpart7
http://pc8.2ch.net/test/read.cgi/php/1121100429/
【PHP】くだらねぇ質問はここに書き込みやがれpart8
http://pc8.2ch.net/test/read.cgi/php/1123431535/
0683nobodyさん
2005/09/16(金) 17:24:40ID:???http://www.php.net/manual/ja/ref.filesystem.php
0686nobodyさん
2005/09/16(金) 17:40:27ID:???ご回答ありがとうございます
配列に入れてみます
0688nobodyさん
2005/09/16(金) 18:06:04ID:???そのまま打って実行してみたのですが、エラーになってしまいます。
私の打ち間違いだと思うのですが、どこがおかしいか教えていただけないでしょうか?
<html>
<body>
<?php if(empty($_GET["yyyy"])): ?>
<form action="test41.php">
西暦<input type=text name=yyyy>年
<input type=submit>
</form>
<?php else:
$meiji=$_GET["yyyy"]-1866;
$taisyo=$_GET["yyyy"]-1911;
$syowa=$_GET["yyyy"]-1925;
$heisei=$_GET["yyyy"]-1988;
print "西暦{$_GET["yyyy"]}年は明治{$meiji}年、大正{$taisyo}年、<br>\n"
."昭和{$syowa}年、平成{$heisei}年となります。<br>\n;
endif;
?>
</body>
</html>
0689nobodyさん
2005/09/16(金) 18:13:25ID:???すいません、自己解決しました。
"を付け忘れてました。
どうも失礼しました。
0690nobodyさん
2005/09/16(金) 18:17:00ID:???今思うとすごい文法だな。
0691軟式PHP
2005/09/16(金) 18:23:50ID:???0693nobodyさん
2005/09/16(金) 19:07:54ID:???ソースが汚くてもそれで読者がPHPを理解できるようになれば
それであの本の役目は果たしてるだろ
0695nobodyさん
2005/09/16(金) 21:12:32ID:???0696nobodyさん
2005/09/16(金) 23:35:06ID:???$bunに代入しました。それで、$bunに特定の言葉が入っているか判断する(例えば「yahoo!」と言う文字が有るか無いかで次の処理を変える)
ようにしたいのですが、どうやったら良いかいまいち分かりません。
ifを使ってやると思うのですが、、、ヒントを頂けないでしょうか?
0698nobodyさん
2005/09/16(金) 23:47:15ID:???http://www.php.net/manual/ja/function.strpos.php
http://www.php.net/manual/ja/function.ereg.php
http://www.php.net/manual/ja/function.preg-match.php
0700z208.219-127-36.ppp.wakwak.ne.jprlo
2005/09/17(土) 00:53:05ID:ILTk3jyK0701nobodyさん
2005/09/17(土) 04:05:58ID:???修正データを書き込む箇所で、該当レコードの次のレコードが削除されてしまい、四苦八苦しました。
そこで、試しにレコード番号に−1をしたところ削除されないようになり正常動作しました。
しかし、なぜ−1になるかわかりません
【環境】winXPsp2 + apache2 + php5
$input = implode(",",array($recode,$renen,$remake)); //入力データ作成
$dfile = file($data_file); //既存ファイルの読み出し
$fp = fopen($data_file, "w"); //オープン
for($i=0; $i<sizeof($delfile); $i++){
list($dcode,$dnen,$dmake) = split( ",", $dfile[$i]);
if ($recode == $dcode) { //該当データか判断
$dfile[$i-1] = $input; //該当箇所の書き換え ←問題の箇所
}
fputs($fp,$dfile[$i]); //書き出し
}
fclose($fp);
該当レコードが0番目の場合
FPUTSで、レコード−1番にインプットが入って、fputsではレコード0を書き出している。
次に1を書き出して・・とやっていくと、−1は書き出されない計算になると思うのですが・・・
書いてることが支離滅裂になってきたけど、わかってください
とにかく気持ち悪いんです
0702↑続き (勘違いでした)
2005/09/17(土) 04:15:17ID:???−1すると、修正できませんが、直後のレコードも削除されません。
−1をとると修正はできますが、直後のレコードが削除されます。
どーすれば普通にできるんでしょうか?早く寝たい・・
原因は fput か for か どっちでしょうか?
0703nobodyさん
2005/09/17(土) 04:18:23ID:???0704nobodyさん
2005/09/17(土) 04:23:06ID:???>>701が言ってるように、書き出されないはずだよ。
他にヤバそうな所といえば、file()は改行コード付きで読み込まれるから、
$inputの最後に改行コードが無いとつじつまが合わない事になるくらいかな。
そのせいで実際のデータファイル内では1行に2レコード入っちゃってるんじゃないかな。
それを別の表示用のスクリプトで見ているから あたかも消えたように見えるとか。
0705701and702
2005/09/17(土) 04:29:37ID:???ありがとうございます!
それでした。
$inputの後ろの改行コードが無く、1行2レコードになってました。
こんな時間なのに、的確なチェックありがとうございました。
0706nobodyさん
2005/09/17(土) 07:43:35ID:7NQoGAMZ<?
ob_start("ob_gzhandler");
?>
<html>
<body>
<p>This should be a compressed page.
</html>
<body>
ちゃんと圧縮されているかどうか確認する方法はないでしょうか?
レスポンスヘッダに「圧縮した」という情報が付加されているのかと思い見てみたのですが、
それらしき情報はありませんでした。
0707706
2005/09/17(土) 07:48:14ID:7NQoGAMZContent-Encoding: gzip
がありました。
これがないということはちゃんと動作していないということでしょうか?
ZLib Support はenabled になっているのですが…。
0709nobodyさん
2005/09/17(土) 08:28:08ID:???・リクエストヘッダのAccept-Encodingの内容の確認
・それに応じて圧縮するか否か
・必要であればリスポンスヘッダ(Content-Encoding)の追加
telnetで確認するのなら、リクエストに
Content-Encoding: gzip, deflate を追加する時としない時とで比較すればよいかと。
0710nobodyさん
2005/09/17(土) 08:28:59ID:???今試してみたけどちゃんとヘッダー出してますよ
Date: Fri, 16 Sep 2005 23:26:50 GMT
Server: Apache/2.0.54 (Win32) PHP/5.1.0b2 mod_perl/2.0.0 Perl/v5.8.6
X-Powered-By: PHP/5.1.0b2
Content-Encoding: gzip
Vary: Accept-Encoding
Content-Length: 1212
Keep-Alive: timeout=15, max=92
Connection: Keep-Alive
Content-Type: text/html; charset=Shift_JIS
Content-Language: ja
200 OK
0712706
2005/09/17(土) 08:33:33ID:???もう一度試してみたらちゃんと出ました。
レスポンスも悪くないし、今まで何故使っていなかったのだろうという感じです。
0713z84.61-45-20.ppp.wakwak.ne.jprlo
2005/09/17(土) 09:11:42ID:mvdEHd470714nobodyさん
2005/09/17(土) 09:36:38ID:???エラーがあればきちんとエラー情報が表示されたんですが、
別の鯖に移ったら、エラー表示が出なくなりました。
具体的には、たとえば行末の「;」を忘れた時に普通はエラー表示されますよね?
それが、真っ白な画面が出るだけで、エラーメッセージが出ないのです・・・。
これはPHPの設定の問題でしょうか??
0715nobodyさん
2005/09/17(土) 09:54:12ID:???本番鯖でデバッグするのはあんまりよくないかと。
訪問者に余計な情報を表示しないというポリシーから表示しない事の方が多いんじゃないかな。
PHPの設定(php.ini)に、
エラーをレベル分けした時にどのレベルから出力するかというレベル分けの設定と、
画面やログファイルなどのどこに出力するかという出力先の設定があります。
この辺 ttp://www.php.net/manual/ja/ref.errorfunc.php
0716nobodyさん
2005/09/17(土) 11:00:24ID:???共有にしろ専有にしろ
0717nobodyさん
2005/09/17(土) 11:43:48ID:???暴走させても致命的なダメージはないのでは?
特に専鯖の場合はApacheリスタートでほとんど無問題と思う
まあやらない方がいいに決まってるんだけど
0718nobodyさん
2005/09/17(土) 12:10:32ID:???0719nobodyさん
2005/09/17(土) 12:55:28ID:???0720nobodyさん
2005/09/17(土) 14:41:15ID:???まぁ、>>714はローカルにテスト環境構築しろ。って事で
0721nobodyさん
2005/09/17(土) 15:24:20ID:???0722714
2005/09/17(土) 16:55:28ID:???本鯖と同じ仕様で、デバッグ専用の専鯖も一つ借りてるんです。最近はかなり安くなりましたし。
以前はいちいちローカルでテストしてましたが、Windowsマシンだし、あとメール環境の違いとか
cron絡みとか、PHPのバージョンの違いとかで微調整が面倒くさかったので。。
>>715
参考になりました。ありがとうございます。
0723nobodyさん
2005/09/17(土) 17:00:28ID:???0724nobodyさん
2005/09/17(土) 17:00:47ID:???脳内鯖?
0725nobodyさん
2005/09/17(土) 17:02:01ID:???0726nobodyさん
2005/09/17(土) 17:12:21ID:???0727nobodyさん
2005/09/17(土) 19:17:35ID:???ことは可能ですか?
例
1回目アクセス時 http://www.abc.co.jp/php=?410ulp
2回目アクセス時 http://www.abc.co.jp/php=?584ajok
3回目アクセス時 http://www.abc.co.jp/php=?kefop78
0733nobodyさん
2005/09/17(土) 21:59:53ID:???0734nobodyさん
2005/09/17(土) 22:37:33ID:???度々あるのですが、その際に、大文字、小文字、似たような意味を持つ英単語の
区別など、本来ならば問題にする価値もない部分まで気になってしまいます。
ぜひとも皆様のご意見を聞かせていただければと思い、質問させていただきました。
よろしくお願いします。
0735nobodyさん
2005/09/17(土) 22:43:40ID:???http://pc8.2ch.net/test/read.cgi/tech/1109330204/
0736nobodyさん
2005/09/17(土) 22:56:32ID:???うまく動いてるのに、変数名とかフィールド名が気に入らないだけの理由でプログラムに手を加えて、エロイ事になった漏れがやってきましたよ。
いろいろやってるうちに自分なりのパターンが出来てくると思う。
0737nobodyさん
2005/09/17(土) 23:13:50ID:???「Fatal error: Call to undefined function mb_language() in C:\○○○\mail.php on line 10」
とエラーが出てしまうので、10行目のコードを確認したのですが原因が分かりません。
どこが間違っているのでしょうか?
よろしくお願いします。
0738ソースです
2005/09/17(土) 23:14:31ID:???<html>
<head><title></title></head>
<body>
<h2>メール送信スクリプト</h2>
<form action="mail.php" method="past">
宛先:<input type="text" name="address"><br>
件名:<input type="text" name="subject"><br>
本文:<br><textarea name="message" rows="5" cols="30"></textarea><br>
<input type="submit" value="送信">
</form>
</body>
</html>
0739ソース2です
2005/09/17(土) 23:15:03ID:???<html>
<head><title></title></head>
<body>
<?php
$address = $_POST['address'];
$subject = $_POST['subject'];
$message = $_POST['message'];
$header = "Content-Type: text/plain;charset=iso-2022-jp";
mb_language("Japanese"); //10行目
if(mb_send_mail($address, $subject, mb_convert_encoding($message,"JIS", "EUC-JP"),$header)){
print("送信完了しました。");
}else{
print("エラー:送信に失敗しました");
}
?>
</body>
</html>
0740nobodyさん
2005/09/17(土) 23:15:22ID:???PHPで使えるDOMで、DTDを無視して読み込みが出来るできるラ
イブラリってありますか。
winのvc++で、某社のXMLライブラリを使って出来てはいるの
ですが、同じことをPHPでしたいです。
スレ違いだったら誘導願います。
0741nobodyさん
2005/09/17(土) 23:20:54ID:???致命的エラー: 定義されていない関数 mb_language() が C:\○○○\mail.php の10行目で呼び出されました。
なので、鯖のPHPがmb_language関数を使えるようになっていないのでしょう。
他のmb_*関係の関数(mb_send_mail、mb_convert_encoding)も使えないんじゃないかな。
phpinfo(); を実行した時に、mbstringの項目を見るとはっきりします。
対策は、その鯖の設定(場合によってはインストールから)を変更するしかないです。
鯖を管理している人に相談してみましょう。
0744nobodyさん
2005/09/17(土) 23:47:15ID:???ご丁寧な
説明ありがとうございます。
上の結果はサーバーではなく、ローカルで実行したときのものです。
説明が足りませんでした。すみませんorz
SMTPサーバーをlocalhostにしているのですが、それが原因でしょうか?
もしそうなら、SMTPサーバーはyahooメールやGmailのものでも代用可能なのでしょうか?
また、phpinfo(); を実行してmbstringという項目を探したのですが、見当たりませんでした。
バージョンは下記の通りです
PHP5.0.5
Apache/2.0.54 (Win32)
0745nobodyさん
2005/09/17(土) 23:57:42ID:???php_mbstring.dllをphpに組み込む。
インストールの説明をちっとも読んでないみたいだから、
googleで適当なサイトでも探していっぺん読んでこい。
0747nobodyさん
2005/09/18(日) 01:06:27ID:???今度は「Warning: mb_send_mail() [function.mb-send-mail]: Missing To: field in C:\○○○\mail.php on line 11」
と警告がでてしまいます。
エキサイトで翻訳してみたところ「警告: mb_は_メールを送ります。() function.mbはメールを送ります: 欠けているTo: Cの分野」
となりました。
欠けている、というのは・・
11行目のソースを見ても間違いが分かりません・・。
今度は何が原因なのでしょうか。
ご教授お願いします_| ̄|○
0748ソース
2005/09/18(日) 01:07:56ID:???<head><title></title></head>
<body>
<?php
$address = $_POST['address'];
$subject = $_POST['subject'];
$message = $_POST['message'];
$header = "Content-Type: text/plain;charset=iso-2022-jp";
mb_language("Japanese");
if(mb_send_mail($address, $subject, mb_convert_encoding($message,"JIS", "EUC-JP"),$header)){ //11行目
print("送信完了しました。");
}else{
print("エラー:送信に失敗しました");
}
?>
</body>
</html>
0749nobodyさん
2005/09/18(日) 01:21:06ID:???この辺りに詳しく書いてあるのでOSの事に注意しながら読んでみてください。
ttp://www.php.net/manual/ja/ref.mail.php
0750nobodyさん
2005/09/18(日) 02:08:40ID:???Missing TO: field
なんだからメール送信に必要な「TO:」が設定されてないですよ。
って事なんじゃないの?
0753nobodyさん
2005/09/18(日) 06:23:15ID:???0754736
2005/09/18(日) 06:55:49ID:???漏れだけじゃないんだ。ヨカタ
作っていくうちに関数と実際の機能がかけ離れて来たり、他の変数名とのいまいち、名前が粒ぞろいじゃなくて気に入らなくなったり。
で、そういうとき、藻前らはどう対処してますか?
一括置換で逝っちゃいますか?
失敗するともう訳解んなくなる。
0755nobodyさん
2005/09/18(日) 08:00:14ID:???0757nobodyさん
2005/09/18(日) 13:33:33ID:???0758nobodyさん
2005/09/18(日) 13:36:23ID:???ワラワラと出現する予感
0759nobodyさん
2005/09/18(日) 13:39:57ID:???0760nobodyさん
2005/09/18(日) 13:40:07ID:???0762nobodyさん
2005/09/18(日) 14:10:07ID:???変数f = 10.38 という値を最小フィールド幅10、小数点以下3桁表示させたいのですが、
printf("%10.3f", $f);
としても、最小フィールド幅が10になってくれません。
って、書きながら気が付いたんですけど、フィールド幅は変ってるけど、htmlのせいで
変ってないようになってたのか...orz
とすると、どうするのがベストなんでしょうか?
printf("<pre>%10.3f</pre>", $f);
何か違う気が...
0763nobodyさん
2005/09/18(日) 14:16:02ID:???IDや名前を送ってしまうと、アドレスバーにそれが表示されてしまいます
こんなんです→ id=onishi&name=大西
どうやったらこれを回避できるのでしょうか?
セッション管理というのを最近知ったのですが、それを使わないと出来ないので
0764763
2005/09/18(日) 14:16:52ID:???0767軟式PHP
2005/09/18(日) 14:43:24ID:???0768nobodyさん
2005/09/18(日) 14:48:40ID:???0771nobodyさん
2005/09/18(日) 14:57:14ID:???0772nobodyさん
2005/09/18(日) 15:15:55ID:???<form name="form">
<input type="hidden" NAME="name" value="大西">
</form>
としておいて、JavaScriptでform.submit();すれば送れるけれど。
どのみちHTMLソースを表示すれば見られるのは一緒なので、イヤならセッションかな。
その前に聞きたいんだが、何のためにnameを送るの?
データベースにidとnameを登録して、idからnameを引けば別に各ページへ引き渡す
必要はないと思うんだけど。
0775nobodyさん
2005/09/18(日) 15:42:38ID:???>その前に聞きたいんだが、何のためにnameを送るの?
名前だけ表示したいページがあるのですが、データベースから取得するのが
めんどくさかっただけです。。
ちゃんとデータベースから取得するようにしてみます。
0777nobodyさん
2005/09/18(日) 16:02:19ID:???0780nobodyさん
2005/09/18(日) 18:28:06ID:???入力フォームからのデータによってSQL文を生成し、それによってデータベースから結果を取得表示するのですが
検索結果件数取得をするためにはどうすれば、無駄がないでしょうか
無駄にコードが長いですがご容赦ください・・・ コード自体への突っ込みもあればよろしくお願いします。$loc=_SS($_POST["loc"]);
$type=_SS($_POST["type"]);
$phone=$_POST["phone"];
$shopname=_SS($_POST["shopname"]);
if($phone==NULL){//*1*************************************************************************************************************
$search="";
$search.="select shopname,pg from shop where ";
if($loc!=NULL){//*2
$search.= $loc." =loccd "; //LOCが入力されている
if($type!=NULL){
$search.=" and ".$type. " IN(typecd,typecd2,typecd3,typecd4,typecd5)";//LOC入力済みかつ、TYPE入力済み
if($shopname!=NULL){$search.=" and shopyomi LIKE '%" . $shopname . "%' ;";}//else{$search.=";";} 最後のせみころん不要?
}else{//LOC入力済みかつTYPE未入力
if($shopname!=NULL){$search.=" and shopyomi LIKE '%" . $shopname . "%' ;";}
}
}//*2
else{//LOC未入力 *3
if($type!=NULL){//LOC未入力かつTYPE入力済み
$search.=$type. " IN(typecd,typecd2,typecd3,typecd4,typecd5);";
}
}//*3
0781続き
2005/09/18(日) 18:29:43ID:???//*************************************************************************************************************
elseif($phone!=NULL){//*4
$search="select shopname,pg from shop where phone=" . $phone;
if($shopname!=NULL){$search.=" and shopyomi LIKE '%" . $shopname . "%' ;";}
}//*4*************************************************************************************************************
if($loc==NULL&&$type==NULL&&$phone==NULL){
if($shopname!=NULL){
$search="select shopname,pg from shop where shopyomi LIKE '%" . $shopname . "%' ;";
}else{
print("どれかひとつは選択してください");
exit();
}
}
$rs = mysql_query($search,$conn);
print($search);//生成されたSQL文の確認(デバッグ用表示)
以下 SQL結果の出力文
いいアイディアが浮かばないのが、count関数で出力すればいいんですが
SQL文が変化するのでどうしようか困っています。
0782nobodyさん
2005/09/18(日) 18:30:19ID:???0783nobodyさん
2005/09/18(日) 18:31:05ID:???■ このスレッドは過去ログ倉庫に格納されています