【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辺り
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:???再度配列を一つのファイルに戻したいと考えています。
何かグッドな関数や方法があったらキボンヌ
0521nobodyさん
2005/12/17(土) 14:46:21ID:???PHPじゃないけどこれ。
ttp://www.ipa.go.jp/security/awareness/vendor/programming/
同じ事をPHPでもやればいい。
0523552
2005/12/17(土) 14:49:59ID:???確認してね。
0524nobodyさん
2005/12/17(土) 15:19:20ID:???ブラウザの戻るボタンで戻ると必ずフォームの値が残っているサイトが
あるような気がしますが、どのように実現してるのでしょうか
あるいは、こうしたフォームページでの入力値の
ブラウザ側での保持時間というのはこちらでコントロールできる
ものなんでしょうか
0525nobodyさん
2005/12/17(土) 15:25:25ID:???読み込ませて入力結果などを表示させるスクリプト使用なのですが
テストサイトでは何の問題もなく送信結果などが実行されていたのに
いざ先方のドメインサーバーにupしてみて試しに記入せず送信ボタン
押してみると*必須記入欄の未入力エラーとして実行されるべき
画面に以下の表示結果が出て困っています。
Warning: Invalid argument supplied for foreach() in /home1/○○○.ne.jp/WWW/sendmail.php on line 132
Fatal error: Call to undefined function: mb_convert_encoding() in /home1/○○○.ne.jp/WWW/sendmail.php on line 141
ちなみに上の方Warning: 〜とかかれた行は数字違いで同じ内容であと3っつ程ありますが略してます。
もちろんphp対応のサーバーです。
WWWというのが先方サーバーの先頭ディレクトリーなんです。
0527nobodyさん
2005/12/17(土) 15:30:30ID:Hbd/Rmjfincludeで読み込んだファイルは置換できません。
同じ「読み込む」なのに後者だけできないのはなぜですか
0529nobodyさん
2005/12/17(土) 15:45:39ID:???0530nobodyさん
2005/12/17(土) 15:50:44ID:???テンプレって何ですか?
あと、freadとincludeは”同じ「読み込み」”ではありません。
http://jp.php.net/manual/ja/function.fread.php
http://jp.php.net/manual/ja/function.include.php
どこが違うかは、日本語が理解できる人ならばマニュアルを読めばわかります。
0532nobodyさん
2005/12/17(土) 16:00:56ID:???みたいなものをPHPでも作ることって可能ですか?
0533nobodyさん
2005/12/17(土) 16:03:23ID:Hbd/Rmjfサンクス日本人なので今から理解してきます
0534nobodyさん
2005/12/17(土) 16:16:35ID:???うちのパソコンは優秀だから「どらえもん」と入力すると
「ドラえもん」とドラがカタカナの正しいドラちゃんが出てくる。
0535nobodyさん
2005/12/17(土) 16:30:27ID:???それってグッドなのか?
確かに見た目スマートでかっこよさげなコードになるけど、
普通にroopして1行ずつ書くほうが所要時間はやくね?
■ このスレッドは過去ログ倉庫に格納されています