【PHP】下らねぇ質問はここに書き込みやがれ 27
■ このスレッドは過去ログ倉庫に格納されています
00011様
2006/08/23(水) 00:54:52ID:uM5Jzzy0まず読め→【PHP マニュアル】http://www.php.net/manual/ja/
PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。
過去スレ、関連スレ、FAQなどは>>2-10辺り
◆質問する場合の注意
1. 自分のIDを表示させること。(メール欄に何も記述しないでください)
2. サーバーのOS、WebサーバーとPHPの種類やバージョン等を明記すること。
3. 己の行った操作、変更などを詳しく明記すること。
4. エラーメッセージはそのまま表記すること。「エラーが出ます」では絶対分かりません。
5. 質問者としても態度をわきまえること。
6. 事前に公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。
◆質問後の注意
・質問者は必ずIDを表示させてください。(メール欄に何も記述しないでください。)
・2回目以降は最初に質問した際のレス番号を名前欄に入れてください。
(逆に回答者は質問者に対して>>(アンカー)をつけて答えてください。)
・解決しなくても回答をもらった場合はお礼を言う。
(荒らし、煽りは除く。逆に煽られたときも、無闇に反論せずスルーすべし)
【その他諸注意】
・正規表現・PEAR・テンプレート(Smarty等)・フレームワークはそれぞれの該当スレへ
・SQLについての質問はデータベース板(PCカテゴリ)の各スレで
・オブジェクト指向については良スレがないから本を買え。理解できないならムリに使うな。
・速さについては自分でベンチをとってここに書け(違う環境の人も調べてくれるかも)
0011nobodyさん
2006/08/23(水) 11:28:09ID:???flush 現在のバッファ(例:送信バッファ1)を出力する「だけ」
ob_flush 現在のバッファ(例:送信バッファ1)を次のバッファ(例:送信バッファ2)に送ってあげる
0012nobodyさん
2006/08/23(水) 11:32:04ID:o70kg/ueまだ意味がわかりません・・・
0013nobodyさん
2006/08/23(水) 12:27:52ID:???これをphpのサイトに組み込んだらひろゆき激怒しますか><;
それとも使っていいものなのですか?
微妙にスレ違いですね、スミマセン><;
0014nobodyさん
2006/08/23(水) 13:12:46ID:???・SQLについての質問はデータベース板(PCカテゴリ)の各スレで
↑↑↑ これは大きな間違い!!
PHPとデータベースには密接な関連があり、不可分の話題。
また、この板の説明でも「Oracle, PostgreSQL, MySQL といった
データベースの話などをテーマにしています」とある。
0015nobodyさん
2006/08/23(水) 13:18:50ID:???0016nobodyさん
2006/08/23(水) 13:31:24ID:???2.PostgreSQLからデータを引っ張ってきてデータ入れて
3.PDFでアクセス制限付でDLさせたい
です。これ、全部フリーで出てるパッケージとかで実現できますか?
今まではExcelのXMLでやってたのですが、PDFとかでプロテクトしたいらしいです。
いろいろ調べてみてSpreadsheet_Excel_Writerだと、修正ができないらしいので。
一番いいと思う方法を教えてください。
0017軟式PHP
2006/08/23(水) 14:34:59ID:???接続周りなどの質問はいいけどSQL自体の質問をこのスレでやられても困るとオモ。
まぁ答えてくれる優しい人はいるけどさ。
>>16
グラフ付きってのがやっかいかもなぁ。。
しかもグラフ付きのテンプレートってなんやろ。
001816
2006/08/23(水) 15:26:35ID:???予めExcelファイルでテンプレートとしてグラフも設定しておいて、
売上の年月を指定するだけで、対象のデータが各セルに入力されて
そのセルを参照しているグラフも更新されると。
で、そのデータを末端社員にいじらせたくないからPDFに変換しろと。orz
Spreadsheet_Excel_Writerで生成から初めてもいいんだけど、
細かい違いしかないのに数が30以上あるからできるなら
テンプレートはExcelでつくりたいんだけど。
やっぱり無理ぽ?
0019nobodyさん
2006/08/23(水) 15:29:49ID:pJ32ImL5<?xml version="1.0" encoding="utf-8"?>
という記述をすると、<? 〜 ?>の構文がphpの構文と判別してしまいエラーが表示されるのですが・・・
対策はありますか?
0020nobodyさん
2006/08/23(水) 15:43:22ID:???マニュアル嫁
http://www.php.net/manual/ja/language.basic-syntax.php
002219
2006/08/23(水) 15:56:24ID:pJ32ImL5d
002619
2006/08/23(水) 22:01:43ID:oL3ygScs0027nobodyさん
2006/08/23(水) 22:05:15ID:???とりあえずそんなに重くは感じていないので、このままでいこうと思います
0028nobodyさん
2006/08/23(水) 22:15:17ID:???なんか涙が出ます。外注がんがれ
>>26
formタグは、nameは書けてもvalueは書けないことになってるんだけど
どうやって値を送るの?
0029あぼーんさん
2006/08/23(水) 23:19:35ID:???私はこうしている。
<?php echo '<' . '?xml version="1.0" encoding="utf-8"?' . '>'; ?>
関係無いけれど、Webプログラム板でp2の「ソースコード修正」機能を使って
シングルクオーテーションを書くと「?」に化ける。
003119
2006/08/23(水) 23:33:52ID:oL3ygScsformの内容が修正ならname=editとして、スクリプト側で$_POST['edit']が真なら修正の処理を施す...のような感じです。
しかし、formタグのname属性は互換性のためだけに対応したということなので、使用が推奨されているかどうかが分からないのです。
0033nobodyさん
2006/08/24(木) 00:08:02ID:???それは普通、formタグじゃなくてinputタグのhiddenかsubmitにつけないか?
formにnameをつけたところで送信されてこないと思うんだが。
0034nobodyさん
2006/08/24(木) 00:24:10ID:???「確実に」破棄するには、session.gc_divisorを「1」(すなわちgc起動の確率を100%)にすればいいの?
また逆に、デフォルト設定のままでは、session.gc_maxlifetimeで指定した秒数を過ぎていても、
100分の1または1000分の1の確率でしかそのセッションファイルは削除されない・・・ってことだよね?
0035nobodyさん
2006/08/24(木) 00:58:58ID:???そのまま使える祝日リストはどこかにないでしょうか?
0036nobodyさん
2006/08/24(木) 01:12:18ID:???class HOGE{
var $a = '1';
function HOGE2(){
$b = '2';
}
上のようなクラスを作成した場合、
クラス外では $a や $b を使ってしまってもいいのでしょうか?
というのも今までクラスを使ったことが全く無いのですが、
既に使っている変数を別の場所で違う用途で再度使用してしまう、
というミスをかなりの頻度でやってしまいます。
0037nobodyさん
2006/08/24(木) 01:16:40ID:???アルゴリズムで祝日判定は原理的には不可能だったような…
春分の日/秋分の日って確か目安があるだけで
正確な日は前年に閣議決定で官報発表じゃなかったっけ。
ただ、過去の経緯的には天文計算通りの日付で発表されてるんで、
100%ではないけどまずズレない祝日は計算できるはず。
(ただ、元が天文計算なので段々ずれていき、何十年か先までは通用しない)
0038nobodyさん
2006/08/24(木) 01:20:30ID:???$aはクラス内で$this->aまたはクラス外で$HOGE->aとした場合にのみ使えて、それ以外の$aとは完全に別。
$bはfunction HOGE2内でのみ有効でクラス内であってもそれ以外のメソッドのものとは別。
クラス以前に関数を使ったこともない人?
関数も知らないでクラスを使うのはいかがなものかと思いますが。
0039nobodyさん
2006/08/24(木) 02:35:23ID:???0040nobodyさん
2006/08/24(木) 02:55:27ID:???0041nobodyさん
2006/08/24(木) 03:16:06ID:???対応って・・・w
0042nobodyさん
2006/08/24(木) 03:44:21ID:+80+UMkuif文ではうまく出来るんだけど。
もしかしてswitch文では '+' や '-' は文字列では無く「代数演算子」扱いにされちゃう……というヲチじゃないよね?
0044nobodyさん
2006/08/24(木) 04:08:00ID:+80+UMkuswitch ($hoge) {
case "+" :
echo "加算";
breake;
case "-" :
echo "減算";
breake;
default :
echo "どらちゃん、おやつよ!!";
}
おかしいなぁ。「どらちゃん、おやつよ!!」と出力されちゃう。
004645
2006/08/24(木) 04:13:38ID:???「加算減算どらちゃん、おやつよ!!」
じゃないか?「加算」も「減算」も全部出てる。
breakeのとこで文法エラーにならない原因は不明。
0047nobodyさん
2006/08/24(木) 04:15:13ID:+80+UMkuおぉ、私はなんと下らないミスをしていたのでしょう……
中学生レベルの英語だ。
>つーかこれ、どういう挙動になってるんだろう。
すみません、ソースそのまま書いちゃうとアレなんで
ちょっと改編しておきました。
ママ: 「ドラちゃん、おやつよー」
ドラえもん: 「はーい」
004845
2006/08/24(木) 04:15:32ID:???それで何の結果も及ぼしてないのね。
0049nobodyさん
2006/08/24(木) 04:21:20ID:???どら&のび: わーい!
0050nobodyさん
2006/08/24(木) 06:53:33ID:???0051nobodyさん
2006/08/24(木) 08:36:08ID:???"hiden"属性を使わない方法はありますでしょうか?
//これが現在のアホアホなソースです
<form method="post" action="test731.php">
<TABLE border="1"><TBODY><TR><TD>番号:</TD><TD>
<?php
session_start();
if($_SESSION['number']){
$cbr = $_SESSION['numer'];
print($cbr);}
?>
</TD></TR><TR><TD><input type="submit" value="DBへ"></TD><TD></TD></TR></TBODY></TABLE>
<?php
$zzr = $_POST['cbr'];
$MySQL['HOST'] = 'localhost';
$MySQL['USER'] = 'root';
$MySQL['PASSWORD'] = '******';
$MySQL['DATABASE'] = 'test';
mysql_connect($MySQL['HOST'],$MySQL['USER'],$MySQL['PASSWORD'])
or exit('mysqlへ接続できませんでした');
mysql_select_db($MySQL['DATABASE']);
mysql_query("insert into hoge value(null , '$zzr')");
?>
</form>
0052nobodyさん
2006/08/24(木) 08:52:44ID:???セッションで受け取ってるなら、DBへの登録もセッションから受け取ってやればいいじゃない。
何でhiddenが必要なのかの方が分からん。
0053nobodyさん
2006/08/24(木) 09:00:01ID:???submit経由「DBへボタンを押す」で、フォーム内の値を変数に置き換える方法
をhiddenしか思い浮かばなかったです
どうすればいいんだろ・・・
0054nobodyさん
2006/08/24(木) 09:05:35ID:???いや、フォーム内の値を置き換えるなら確かにhiddenが必要だろうが、
そもそも置き換える必要あんのかそれ?ってことよ。
一体何をしようとしてるのかもうちょっと具体的なコードで示してくれ。
少なくとも>>51にはhiddenなんてないわけだし、hiddenで何をしようとしてるのかが全く分からん。
0055nobodyさん
2006/08/24(木) 09:17:15ID:???了解しました
//他ページから受け取った値を変数($cbr)に格納し、ブラウザに表示
<?php
session_start();
if($_SESSION['number']){
$cbr = $_SESSION['numer'];
print($cbr);}
?>
//変数($cbr)をhidden属性のテキストフォームに格納
<input type = "hidden" name ="nsr" value="<php print($cbr); ?>">
//ボタン経由で$_POSTにデータを格納
<input type="submit" value="DBへ">
//$_POSTのデータをDBへ登録
//略
こんな感じで一旦、hiddenを利用してみる方法です
0056nobodyさん
2006/08/24(木) 09:22:57ID:???POST後のプログラムを
<?php
session_start();
if($_SESSION['number']){
$zzr = $_SESSION['numer'];
$MySQL['HOST'] = 'localhost';
$MySQL['USER'] = 'root';
$MySQL['PASSWORD'] = '******';
$MySQL['DATABASE'] = 'test';
mysql_connect($MySQL['HOST'],$MySQL['USER'],$MySQL['PASSWORD'])
or exit('mysqlへ接続できませんでした');
mysql_select_db($MySQL['DATABASE']);
mysql_query("insert into hoge value(null , '$zzr')");
}
?>
とセッションでデータを引渡すようにするだけだと思うんだが
これだと何か問題があるのか?
0059nobodyさん
2006/08/24(木) 09:49:25ID:???そうなんです、思い出しましたw
<input type="hidden" name="mode" value="regist">
これの意味がわからなかったから、思考停止になっていました
しかし、、、これってどのような役割をしてくれるのでしょうか・・・
0060nobodyさん
2006/08/24(木) 09:50:52ID:X79pe6wS考えてわからないなら試してvar_dumpでもしてみれ
0065nobodyさん
2006/08/24(木) 10:21:39ID:???その通りです
大まかな流れはわかったつもりなんですが、ちょっとした応用もできないアホです。。。
フォーム内のセッションで受け取った値を変数に格納しているのに
POSTに値が入らないからDBに送られなかったら、2重の処理させたり
しっちゃかめっちゃかです
スクリプトを1から練り直します
0066nobodyさん
2006/08/24(木) 10:50:54ID:???結論として、INPUTボタンを連打していただけでしたorz
素直に「登録しますた」画面を飛ばせばよかた
0067nobodyさん
2006/08/24(木) 12:01:33ID:???また登録されたりしてねw
0068nobodyさん
2006/08/24(木) 12:06:39ID:???QueryがTRUEかFALSEかで飛ばすページを分けさせようとすると、うまくいかん
うんもー前に進まん(><;
0069nobodyさん
2006/08/24(木) 13:15:51ID:???0070nobodyさん
2006/08/24(木) 13:57:47ID:???requireを使用してきました。
そろそろ functionとclassを覚えていこうと思っているのですが、
require(include) と比べて function のメリット、
function と比べて class のメリット、
の2点がイマイチつかめません。
それぞれ教えてもらえないでしょうか?
function に関しては引数を設定できる、というあたりでしょうか?
0073nobodyさん
2006/08/24(木) 14:57:03ID:???一応、処理が問題なされているソース貼る
hidden使わないソースに修正お願いしまつ
<?php
session_start(); //前ページからセッションを受け取る
if($_SESSION['zz']){$aa = $_SESSION['zz'];}
if($_POST['db']){ //フォームに値があるならば
$gg = $_POST['ff']; //hiddenに埋まっている値を変数に格納
$MySQL['HOST'] = 'localhost'; $MySQL['USER'] = 'root'; $MySQL['PASSWORD'] = '*******'; $MySQL['DATABASE'] = 'test';
mysql_connect($MySQL['HOST'],$MySQL['USER'],$MySQL['PASSWORD'])or exit('mysqlへ接続できませんでした');
mysql_select_db($MySQL['DATABASE']);
$hh = mysql_query("insert into hoge value(null , '$gg')"); //MySQL5にオートインクリ込みで送信
if($hh =="true"){ //MySQL5からTRUEが帰ってきた場合
header('Location: test3.php'); //「登録完了しまつた」ぺージへ飛ぶ
session_destroy();
}else{
header('Location: test1.php'); //最初のページに戻り、セッションは破棄しない
}
}?>
<form method="post" action="test2.php">
<TABLE border="1"><TBODY><TR><TD>番号:</TD>
<TD><?PHP print($aa); ?> //セッション情報をブラウザに表示
<input type ="hidden" name ="ff" value="<?php print($aa); ?>"> //セッション情報をhiddenで埋め込み
</TD></TR><TR><TD><input type="submit" name="db" value="DBへ">
</TD><TD></TD></TR></TBODY></TABLE></form>
0074nobodyさん
2006/08/24(木) 15:18:33ID:BibIZoi3require に比べて、function は明示的な変数の有効範囲を設定できる
[foo_req.php]
$a = 10000;
[foo.php]
$a = 10;
var_dump($a);
require('foo_req.php);
var_dump($a);
こんなコードを実行すると、2回目の var_dump() で $a の値が変更されているのが
確認できるだろう
単純な処理のうちはこれでもいいが、複雑になってくると不具合を作る原因になる
0075nobodyさん
2006/08/24(木) 15:59:01ID:???//フォームに値があるならば
//hiddenに埋まっている値を変数に格納
↓
//フォームに値があるならば
//セッションの値を変数に格納
なんのためのセッションだ
0076nobodyさん
2006/08/24(木) 16:04:19ID:???GETで値を渡してあげればいいじゃん。
<form method="post" action="hoge.php?id=2&nullpo=true">
<input ...
0077nobodyさん
2006/08/24(木) 16:28:50ID:???ですよね
と思いつつ、修正したら、あっさり解決しました
あぁ hiddenから開放された
みなさん スペシャルサンクス
これから郵便番号AJAX始めますorz
0078nobodyさん
2006/08/24(木) 16:45:06ID:???HTML覚える→PHP覚える→セッション覚える→DB覚える
をしたほうがいいと思う。フォームすら満足に使えないのに、時間の無駄。
0079nobodyさん
2006/08/24(木) 17:02:10ID:???踏み台となって他人に迷惑をかけたり、
素人が作ったと認識できない別の素人が利用して、さらに踏み台が増殖したりすることだ。
つまり素人はじっくり修行してから公開しろってこった。
まじめに修行する気のない素人は消えろカス
0080nobodyさん
2006/08/24(木) 17:05:23ID:???0081nobodyさん
2006/08/24(木) 17:09:20ID:???0082nobodyさん
2006/08/24(木) 17:12:00ID:???一応、骨格は作れそうです
ただエラー制御やセキュアな環境にするためには、まだまだです
しかし、、、UIを作り上げるための時間が残り少なく・・・
お叱りはごもっとも
また叱ってください!!
0084nobodyさん
2006/08/24(木) 17:27:26ID:wCBGqZdjPOSTのほうがマシとかあるの?
関係ない?
0085nobodyさん
2006/08/24(木) 17:32:03ID:???ど素人でもなんとなく意味もわかればいじられるかもしれないし。
まぁどちらかと言えばGETが悪いってくらいで、あんま変わらんじゃね?
0086nobodyさん
2006/08/24(木) 17:33:26ID:???0087nobodyさん
2006/08/24(木) 17:36:42ID:wCBGqZdj0088nobodyさん
2006/08/24(木) 17:37:17ID:???0089nobodyさん
2006/08/24(木) 17:44:08ID:wCBGqZdj0091nobodyさん
2006/08/24(木) 18:42:42ID:???0092nobodyさん
2006/08/24(木) 18:50:13ID:???0093nobodyさん
2006/08/24(木) 18:52:41ID:???//結果:100000000001
$kore = 1000000000000 + 1;
//結果:1E+12
12桁を超えるとこんなになっちゃうんですが、どうしたらよいのでしょうか?
0094nobodyさん
2006/08/24(木) 19:20:33ID:???乱用しないために
htmlspecial(); というグローバル関数があったと思うが
この中に変数入れまくればいいんじゃまいか?
0095nobodyさん
2006/08/24(木) 19:21:11ID:???ttp://www.php.net/manual/ja/language.types.integer.php
0096nobodyさん
2006/08/24(木) 19:21:22ID:???みたいな感じで一定の件数ごとにページを切り替えるようにしたいのですが
どこか説明しているHPなどありますでしょうか?
ググり方が悪いのか思った通りのページがhitしません。
0098nobodyさん
2006/08/24(木) 19:47:02ID:???表示するページをlist.phpとする。
このページは引数に指定された所から50件表示するページ。
http://hoge.net/list.php?start=1
みたいに引数を読み込んで動作する。
で、この場合、1から50件表示する。
(表示はループで出す)
んで、ページの中に
<http://hoge.net/list.php?start=51>NEXT</A>
と、次のページの開始位置を入れたリンクを設定する。
こうすると51番目から50件表示される。
ちなみに次のページでは、前のページに戻るためのリンクも入れておく。
<http://hoge.com/list.php?start=1>BACK</A> ←1番から50件出すってこと。
009970
2006/08/24(木) 19:59:41ID:???レスサンクスです、
function の classと比較してのメリットはなんでしょうか?
昨日 本で読んで、軽くプログラムを作っただけでは
クラスがfunction()と比較して
どういう場合に有効活用できるのかがあまり理解できませんでした。
継承とかはあとあとの修正時に便利そうだなとは感じましたが。
クラスは部品、という説明がよくありますが、
結局functionも部品ですよね?
どこが大きなメリットなんでしょう。
0100nobodyさん
2006/08/24(木) 20:16:36ID:???実際使ってみた方が理解早いと思うけどね・・・
例えるならfunctionはCPUやメモリ、ビデオカード、M/Bだ。
で、クラスはPC。
一台のPCを用意するときはパーツ用意してきて自作しても良いが、
10台20台となると同じPC一気に購入してきた方が楽っしょ。
つまり、そう言うことだ。
0101nobodyさん
2006/08/24(木) 20:19:34ID:X79pe6wS定義したものがclass。
0102nobodyさん
2006/08/24(木) 20:23:42ID:???厳密な意味でのオブジェクト指向のプログラミングはそれ専門の本などを
調べてもらうとして簡単な例をあげる
関数
function foo($a) {
$a =+ 100;
return $a;
}
function bar($a) {
$a += 200;
return $a;
}
$a = 0;
$a = foo($a);
$a = bar($a);
print($a);
0103nobodyさん
2006/08/24(木) 20:23:55ID:???function foo() {
$this->a += 100;
}
function bar() {
$this->a += 200;
}
$obj->a = 0;
$obj->foo();
$obj->bar();
print($a);
いまは $a しか foo() bar() の中で利用していないが、これが複数に
なると関数だと記述するのがめんどうになったり、
処理内容を変更したときに変更箇所が広域にわたってしまうことがある
クラスでまとめてしまうと、処理がクラスの中で閉じられるので、
そういったわずらわしさが軽減される。
0107nobodyさん
2006/08/24(木) 20:45:38ID:???クッキーに保存されなくて困ってます。。
よろしくお願いします。
0108nobodyさん
2006/08/24(木) 21:11:54ID:???$a = "1\t2\t3\t4\t5";
これを区切り文字\tで区切って
whileとかで1つずつ表示するにはどうしたらよいのでしょうか?
0110nobodyさん
2006/08/24(木) 21:17:53ID:???$b = explode("\t", $a);
foreach($b as $value){
echo $value;
}
■ このスレッドは過去ログ倉庫に格納されています