【PHP】質問スレッドpart31【php】
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2005/11/27(日) 00:07:12ID:eBvjdczp【基本ルール】
・新規質問の方は上げてください。age進行でお願いします。
・質問者は2回目以降、最初のレス番号を名前欄に入れてください。
・回答者は質問者に対して>>(アンカー)をつけてください。
・煽り・荒らしは放置。荒らしに反応した香具師も荒(ry
・解決しなくてもこたえてもらったら礼を。
【質問テンプレ】
・マニュアルを調べたか、google検索したか(調べたキーワード)
・タイトル(禁:教えてください!etc) 例:requireとinclude
・内容 例:requireとincludeはどう違うのですか?
・質問する際には環境も明記。
【その他諸注意】
・正規表現・PEAR・テンプレート(Smarty等)・フレームワークはそれぞれの該当スレへ
・SQLについての質問はデータベース板(PCカテゴリ)の各スレで
・オブジェクト指向については良スレがないから本を買え
・速さについては自分でベンチをとってここに書け(違う環境の人も調べてくれるかも)
【PHP マニュアル】
http://www.php.net/manual/ja/
※マニュアル上部の「search for」から検索を活用すべし(便利)。
過去スレ、関連リンク、FAQ等>>2-10辺り
0420nobodyさん
2005/12/11(日) 20:06:56ID:???class A {}
class C extends B {}
class B extends A {}
なら大丈夫だけど
class C extends B {}
class B extends A {}
class A {}
だとダメなところを見ると、たぶん2重に先読みはしてくれないってことだと思われ。
むしろ1クラス1ファイルで__autoload使って管理すれば無問題なんだけどね。
0421nobodyさん
2005/12/11(日) 20:48:17ID:???0423nobodyさん
2005/12/11(日) 21:13:58ID:???マニュアルには出来ないって書いてあるから
class A {}
class B extends A {}
class C extends B {}
こういう継承は出来ないと思っていた。出来るんだ。
0424nobodyさん
2005/12/11(日) 21:22:14ID:???0425nobodyさん
2005/12/11(日) 21:31:14ID:???親クラスを同時に2つ継承することはできないよ。
C++とかだと extends A,B ってな感じにやるやつね。
親・子・孫 ってな形はOKよん。
>>424
ググってみれば分かるけど、多重継承って言葉の使われ方の混乱スゴス。
親子孫形式を多段継承とかに統一されていればここまで酷くなかったのかなぁ。
0426nobodyさん
2005/12/11(日) 23:49:23ID:WymzfT31マニュアルは設定しか載ってなくてもっとサンプルが見たいのですが。
0428nobodyさん
2005/12/12(月) 09:51:03ID:mg3yvGfR今使ってるさくらサーバーでPHPのブログを導入しようと思っているのですが
FTPでファイルを転送して、初期設定をしたのですが
エラーメッセージが表示されて実行ができません。
何が悪いのでしょうか?
パーミッションは705で設定しました。
さくらインターネット
http://www.sakura.ad.jp/
導入しようとしたブログ
http://www.netmania.jp/cgi/blog3/
0429428
2005/12/12(月) 09:51:53ID:mg3yvGfRInternal Server Error
The server encountered an internal error or misconfiguration and was unable to complete your request.
Please contact the server administrator, support@sakura.ad.jp and inform them of the time the error occurred, and anything you might have done that may have caused the error.
More information about this error may be available in the server error log.
0430nobodyさん
2005/12/12(月) 09:58:45ID:???Exciteで訳したよ。
内部サーバーエラー
サーバは、内部エラーかmisconfigurationに出会って、あなたの要求を終了することができませんでした。
サーバアドミニストレータ、 support@sakura.ad.jp に連絡して、誤りを引き起こしたかもしれない誤りが発生した時、およびあなたがしたかもしれないものは何のそれらでも知らせてください。
この誤りに関する詳しい情報はサーバ障害記録で利用可能であるかもしれません。
0432nobodyさん
2005/12/12(月) 10:29:30ID:???つ[More information about this error may be available in the server error log.]
0433nobodyさん
2005/12/12(月) 12:19:35ID:???$arei=array("$var1",・・中略・・,"$var10");
これを再び10個の変数にするにはどうしたらいいんでしょう?
たとえばタブ区切りの文字列なら
list($var1,・・中略・・,$var10)=explode("\t",$arei);
でできますが、配列の中の変数をそれぞれ名前を付けて取り出す方法が
どーにも思いつかないです。
0434nobodyさん
2005/12/12(月) 12:26:02ID:???0436nobodyさん
2005/12/12(月) 13:11:25ID:???0437nobodyさん
2005/12/12(月) 14:15:49ID:???$arei=array("$var1",・・中略・・,"$var10");
この時点で、既に10個の変数として利用可能。
$arei[0] = $var1
$arei[1] = $var2
$arei[2] = $var3
$arei[3] = $var4
$arei[4] = $var5
$arei[5] = $var6
$arei[6] = $var7
$arei[7] = $var8
$arei[8] = $var9
$arei[9] = $var10
0439nobodyさん
2005/12/12(月) 15:02:57ID:???0440nobodyさん
2005/12/12(月) 15:11:13ID:???2.explodeが何を返すかよく判っていない。
3.listは変数に何かを入れる事は判るが、何をどのように入れているかは理解していない。
…かな?
0441433
2005/12/12(月) 16:19:08ID:???$var1とかは配列です。配列の中の配列が、$arei[0][1]みたいに扱うのがいやで
配列から配列を全部取り出したいんです。
0445nobodyさん
2005/12/12(月) 16:48:53ID:???そんな理由かよ
0447nobodyさん
2005/12/12(月) 23:38:20ID:???もっと廚でも使える鯖業者と再契約が必要。
0449nobodyさん
2005/12/13(火) 00:22:09ID:???PHP の思想だね
0450nobodyさん
2005/12/13(火) 10:37:41ID:???HTMLとか画像うpが精一杯。
PHPは業者にでも依頼しな。
0451nobodyさん
2005/12/13(火) 16:11:09ID:vrSu5coJこの文の意味がいまいちわからないのですが、
whileの()内って条件式ではないですよね?
(条件式なら $row==になるはずですよね)
$row = mysql_fetch_array($result);
while ($row) {
でもOKなんでしょうか?
0452nobodyさん
2005/12/13(火) 16:21:20ID:???if ($i=0; $i<mysql_num_rows($result); $i++){
}
ということだよ。
0453nobodyさん
2005/12/13(火) 16:30:44ID:???真である限りループしろって構文なんだから。
0454nobodyさん
2005/12/13(火) 16:34:46ID:???空文字列
null
false
それ以外全部 真
0455nobodyさん
2005/12/13(火) 16:37:39ID:???>$row = mysql_fetch_array($result);
>while ($row) {
これだと無限ループ
0456nobodyさん
2005/12/13(火) 16:44:08ID:???「$row = 〜」の部分はそれ自体も値を持つってことを理解しましょう。
$x = ($row = 〜); ってこともできますがな(←この場合のカッコはなくても同じ)。
while ($row = 〜)ってのは「$row = mysql_fetch_array(〜)」の部分全体がmysql_fetch_arrayの戻り値になる。
戻り値はマニュアルに書いてあるよね。
>>454
他にも
array()
"0"
なんてのもあるのがPHPクオリティ。
しかも
"\0"
は真なのもPHPクオリティ。
0457nobodyさん
2005/12/13(火) 17:31:10ID:???0459nobodyさん
2005/12/13(火) 17:35:02ID:???$row = mysql_fetch_array($result);
while ($row) {
処理
$row = mysql_fetch_array($result);
}
ならOK
0460nobodyさん
2005/12/13(火) 17:38:15ID:???$hoge = mysql〜(); //値を得る
if ($hoge == FALSE) break; // $hogeが空なら繰り返しを止める
# $hogeをごにょごにょ
}
これと同じ意味
0461nobodyさん
2005/12/13(火) 17:56:36ID:???while (A) { B }
(1) Aを評価
(2) Aが真ならBを実行後(1)に戻る、偽ならBを実行せず次のステートメントへ
おまいが勘違いしてるのは、(1)のAの評価の部分
Aは単純な変数である必要はなく、式そのものも評価対象に出来る
while ($hoge = func()){ ... } なら func() を実行して$hogeに代入された戻り値が評価対象になる
同様に、while (func()) { ... } なら func() の戻り値そのものが評価対象になる
while ($row = mysql_fetch_array($result)) { B } の場合
(1a) mysql_fetch_array($result)を実行
(1b) 戻り値が$rowに代入される
(2) $rowが真ならBを実行後(1a)に戻る、偽ならBを実行せず次のステートメントへ
0462nobodyさん
2005/12/13(火) 18:36:03ID:???>>454の言う
「数値(文字)の0」が偽になるんで、気をつけてないとヤバス。
0464nobodyさん
2005/12/13(火) 19:12:34ID:???ttp://www.deformedweb.co.uk/php_variable_tests.php
0465428
2005/12/13(火) 19:45:11ID:0K/So0+jオススメの鯖とかある?
0466nobodyさん
2005/12/13(火) 20:39:57ID:l7fxNabVのちに誰かのために役立つよ。俺は勉強させてもらってるよ。
0467nobodyさん
2005/12/14(水) 04:21:42ID:???0468nobodyさん
2005/12/14(水) 05:38:47ID:cm5ebMj8この一文の意味がよくわからないので
頭のイイ人おしえてください
0469nobodyさん
2005/12/14(水) 05:43:41ID:???これって相手の回線の太さも原因の1つですか?
0470nobodyさん
2005/12/14(水) 06:27:01ID:???そんな事より、その例のものは何でこの様に書かないんだろうね?
見ていて気持ち悪い。
$start = isset($page) ? $page : 0;
0471nobodyさん
2005/12/14(水) 06:29:26ID:???0475nobodyさん
2005/12/14(水) 13:17:30ID:nQISVs9q0476nobodyさん
2005/12/14(水) 13:19:26ID:???0477nobodyさん
2005/12/14(水) 14:32:51ID:4Y8+DJWgwhile (DBからのデータ) {
$id
$name
$category
}
$categoryが同じ場合「、」で区切って$nameを横に表示したいのです。
こんな感じに表示させたい
id category name、name
id category name
0478nobodyさん
2005/12/14(水) 14:35:39ID:???DBから、category を order にしてデータを取り出し、
ループ中で前カテゴリ名を保存する変数を容易する。
っていうか、同じ category なら、idも同じなのそれって。
0479477
2005/12/14(水) 19:20:14ID:???idはプライマリキーです、その方法でもやってみたんですがなんか途中で訳分かんなくなって止めました
とりあえず最初にカテゴリだけSelectしてwhile中にnameをselectって方法でいけました
0481nobodyさん
2005/12/14(水) 20:23:26ID:???0482nobodyさん
2005/12/14(水) 20:47:41ID:???DBがMySQLでバージョン4.1以降であれば、group_concatを使えばスッキリ書けるかもね。
他のDBならストアドで一時テーブルに書き出すとか。
categoryが重複した時、どのレコードのidを出力しているのか良く判らんが。。。
0483nobodyさん
2005/12/14(水) 20:52:18ID:WftevBRFftp_fopenみたいな関数があればいいんですが。
0484nobodyさん
2005/12/14(水) 21:22:53ID:???ただしLocalファイル
0485nobodyさん
2005/12/14(水) 22:17:34ID:???入力画面と確認画面を行ったり来たりしていると、
セッションが消えたり、古いセッション値が表示されたりします。
このような現象の対策はありますか?
バージョンはPHP 4.3.11です。
PHP 4.2.4では大丈夫でした。
■入力画面
session_start();
if ($_POST['hoge']) $SESSION['hoge'] = $_POST['hoge'];
header("Location: 確認画面");
■確認画面
session_start();
echo $_SESSION['hoge'];
0486nobodyさん
2005/12/14(水) 22:24:58ID:???<form>のターゲットを確認画面にすればいいのに。
>セッションが消えたり、古いセッション値が表示されたりします。
$_POST[hoge']が空の時の動作がないからでしょ。
0487nobodyさん
2005/12/15(木) 05:47:17ID:???無理なことは無理
あ き ら め ろ
0488nobodyさん
2005/12/15(木) 12:40:13ID:UeTwmalZブラウザの戻るボタンで行き来してるのなら
何が起きるかわからんと思ったほうがいいかも
0489485
2005/12/15(木) 14:06:50ID:???入力チェックが入るので、headerで飛ばしています。
>>487
同一人物ではありません。
>>488
戻るときはリンクで戻っています。
下記でも試してみましたが、b.phpとc.phpをリンクで行ったり来たりしていても、
「ほげ」が表示されたりしなかったりします。
どこが悪いのでしょうか?
■a.php
session_start();
$SESSION['hoge'] = "ほげ";
print $_SESSION['hoge'];
<a href="b.php">Bへ</a>
■b.php
session_start();
print $_SESSION['hoge'];
<a href="c.php">Cへ</a>
■c.php
session_start();
print $_SESSION['hoge'];
<a href="b.php">Bへ</a>
0490nobodyさん
2005/12/15(木) 14:25:45ID:???最終アクセス時間をセッションに入れといてそれから何秒たったら再パスワード入力画面に飛ばすとかしたらいいんじゃ
0491nobodyさん
2005/12/15(木) 16:31:20ID:???とりあえず
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta equiv="expires" content="0">
とか書いてる?
0492nobodyさん
2005/12/15(木) 18:33:48ID:???そんなことしてんの?
0493nobodyさん
2005/12/15(木) 18:42:01ID:???■a.php
session_start();
$SESSION['hoge'] = "ほげ";
print $_SESSION['hoge'];
<a href="b.php">Bへ</a>
--------------------------------------
とりあえず.......
$SESSION['hoge'] = "ほげ";
は
$_SESSION['hoge'] = "ほげ";
なのだが
誰か突っ込め
0495nobodyさん
2005/12/16(金) 20:00:21ID:FlVjXK6kCOOKIEを使った連続投稿禁止ができません。
if("hoge"==$_COOKIE['entry']){
print("連続投稿のため、しばらくたってから投稿してください。");
exit;
}else{
setcookie("entry", "hoge", time()+60);
}
何卒、よろしくお願いします
0496nobodyさん
2005/12/16(金) 20:03:21ID:???0499nobodyさん
2005/12/16(金) 20:32:59ID:???どうせクッキー蹴ってたりクッキー発行する前に何か吐いてたりするんでしょ
エラー表示を出してないだけな気ガス
0500nobodyさん
2005/12/17(土) 01:27:33ID:5Cdk6RwA戻り値にint(1)が帰ってきてエラーがおきています
このエラーの内容を知る方法ってありますか?
PHP 4.4.0
Java 1.4.2_10-b03
0502nobodyさん
2005/12/17(土) 01:47:31ID:???phpしか知らないの?
0507nobodyさん
2005/12/17(土) 05:03:10ID:???http://jp.php.net/manual/ja/ref.exec.php
ここ読んで好きなの選べ
0509nobodyさん
2005/12/17(土) 11:25:44ID:UrRJ5TVl初心者にお勧めのリファレンスってありますか?
0511nobodyさん
2005/12/17(土) 12:32:40ID:???0512nobodyさん
2005/12/17(土) 13:27:54ID:BoimMDuj以前は、経歴詐称常駐会社につとめていて、
ぼろぼろにされて、5ヶ月でやめた。Javaをやっていた。
全くのプログラム初心者なら話は別だが、他の言語を多少なりとも
やっていた人には、お奨めできるものがある。
一番、その言語に早く慣れたいなら、オライリーの一番簡単な本を読むのが
一番手っ取り早いし、安上がり。
PHPなら「始めてのPHP5」という本がある。
Perlなら「初めてのPerl」という本がある。ちなみにC++にも同シリーズは
ある。
JavaとCは知らん。。
0514nobodyさん
2005/12/17(土) 13:40:22ID:???でも、重宝するのが
http://www.amazon.co.jp/exec/obidos/ASIN/4798008850/250-0988500-3279408
だよな。やっぱ。初心者レベルから中級者くらいまでは、これが役に立つでしょ。
俺は、OracleとJavaのこのシリーズもってたけど、
かなり役立ったよ。
0515nobodyさん
2005/12/17(土) 13:42:03ID:???PostgreSQL&MySQLリファレンス。
MySQLとPostgreSQLの最初の設定とかはネットで調べるなり
本を買うなりしないとダメだけど、その後役に立つよ。
0516nobodyさん
2005/12/17(土) 14:04:05ID:???Perlだけでなく、Webアプリのための一般的なプログラミング知識も得られた。
PHP版もあるの?
0517php4(sax)でのxmlの処理
2005/12/17(土) 14:06:49ID:???決まった形式のxmlに変換して保存しようと思っています。
htmlタグが入力されたとき、
1:タグをエスケープしてxmlに変換
して保存してる訳ですが、そのログをxmlパーサで読むとき、
2:エスケープされたタグ文字が解釈されて"<"とかに戻る
ので、
3:タグ文字をエスケープし直してブラウザに出力
3回も変換処理が入っていて、なんだかものすごく無駄なことしてる気がするんですが、
うまい方法ないですかね。
cdata使うと、終端文字が入力できないし……
0518nobodyさん
2005/12/17(土) 14:08:49ID:???どうしても本がよければ「技術評論社刊:PHPポケットリファレンス」
これでOK
0519nobodyさん
2005/12/17(土) 14:32:55ID:nttpIBA6PHPでプログラムする際にセキュリティに関して詳しい本ってありますか?
0520nobodyさん
2005/12/17(土) 14:41:32ID:???再度配列を一つのファイルに戻したいと考えています。
何かグッドな関数や方法があったらキボンヌ
■ このスレッドは過去ログ倉庫に格納されています