【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カテゴリ)の各スレで
・オブジェクト指向については良スレがないから本を買え。理解できないならムリに使うな。
・速さについては自分でベンチをとってここに書け(違う環境の人も調べてくれるかも)
0781nobodyさん
2006/09/01(金) 17:40:18ID:???0782780
2006/09/01(金) 17:48:18ID:???<?php
$hikkoshi = array(
'くろねこ' => 'nya-n',
'ぞうさん' => 'pao-n',
'ありさん' => '.....',
'ぺりかん' => 'kua-toka?',
'ぷろれす' => '123da-!',
);
if (isset($hikkoshi['ぷろれす'])) {
echo 'ぷろれすで'.$hikkoshi['ぷろれす'].'お引越し';
}
if (isset($hikkoshi['かにさん'])) {
echo 'かにさんで'.$hikkoshi['かにさん'].'お引越し';
}
?>
0784nobodyさん
2006/09/01(金) 18:05:53ID:A37JvrK/POSTで送られてきた変数を↑の様に初期化できないのですか?
更新ボタンを押されるとPOST変数にあるデータが使われてしまい二重投稿みたいな事になっています。
0785nobodyさん
2006/09/01(金) 18:08:35ID:???それはフォームから上がってくるデータがあるから二重投稿になるわけで
$_POSTを消してもリロードするとまた値が入ります。クッキーや投稿内容で
判断するしかありませんね。
0787(^ω^)
2006/09/01(金) 18:15:47ID:???そうすると、SQLやBasic系とかでクマったことになるから、慣れて覚えるほうがいい予感。
>>784
書き込みが終わったら別のページにLocationするなり、本文が前と同じならエラーにするなり。
変数は1リクエストで一旦初期化されます。ブラウザが同じ内容をPOSTしている。
0788nobodyさん
2006/09/01(金) 18:32:26ID:???0789良心君 ◆lX/3zqtk/U
2006/09/01(金) 18:37:40ID:???急にいいスレになったな。。
0790nobodyさん
2006/09/01(金) 18:50:16ID:???Locationで飛ばしても、ブラウザの「戻るボタン」とかで戻られて
F5押されたりすると結局は二重投稿されちゃうよ。
0791nobodyさん
2006/09/01(金) 19:13:31ID:???0792nobodyさん
2006/09/01(金) 19:24:29ID:???つー決まり事てか勧告があるので、
大体のブラウザはダイアログを出すなどの処理をしている筈。
「わざと」されてるんじゃないの?
0793nobodyさん
2006/09/01(金) 19:53:50ID:???0794nobodyさん
2006/09/01(金) 19:53:52ID:???普通はセッションなり何なりで対策すると思うんだが
0795nobodyさん
2006/09/01(金) 20:00:16ID:???しないと無理でしょうね。
0796nobodyさん
2006/09/01(金) 20:03:17ID:???誤って二重投稿した時のことを聞いているように見えるが。
0797nobodyさん
2006/09/01(金) 20:32:00ID:???0798nobodyさん
2006/09/01(金) 20:43:37ID:AJEbbct5特定のレコードを引っ張り出して、
その前後一件のレコードを抽出するにはどういうコードを書けばいいでしょうか?
具体的に言うと、
select * from 食べ物テーブル where カテゴリー = 野菜 and id = 50;
とかやって、
そのすぐ前とそのすぐ後にくるカテゴリー野菜のレコードを抽出したいです。
idは削除されたりもするので、必ずしも連番ではないです。
よろしくおねがいします。
0799良心君 ◆lX/3zqtk/U
2006/09/01(金) 20:52:23ID:???select * from 食べ物テーブル where カテゴリー = 野菜 and id = 50;
select * from 食べ物テーブル where カテゴリー = 野菜 and id < 50 order by id limit 1;
select * from 食べ物テーブル where カテゴリー = 野菜 and id > 50 order by id limit 1;
でどうかしら。
0800798
2006/09/01(金) 20:58:08ID:AJEbbct5神様!ありがとうございます!
クエリの中で不等号使うのなんて初めて見ました。
心から感謝します。
0801nobodyさん
2006/09/01(金) 21:01:29ID:z1+HDMlP0807良心君 ◆lX/3zqtk/U
2006/09/01(金) 22:06:23ID:???でも、相対URLでも受け付けるクライアントがある。IE6は大丈夫。
http://jp2.php.net/header
0808nobodyさん
2006/09/01(金) 22:12:36ID:???0812nobodyさん
2006/09/01(金) 22:23:24ID:???言い訳が見苦しい。
「正確には〜」とか、典型的な自分の間違いを認められないタイプだね。
「でも〜」とか、全然理由になってないね。
0813nobodyさん
2006/09/01(金) 22:25:47ID:+4PrUNf20814nobodyさん
2006/09/01(金) 22:27:15ID:???0815良心君 ◆lX/3zqtk/U
2006/09/01(金) 22:44:59ID:???多くのクライアントでは相対パスも受け付けるし、
相対パスで書いた方が移植性は高まる。
自分が相対パスを使っていることを認識していれば問題はないと思うけど。
ここら辺は宗教論争だから、どうでもいい。
0816nobodyさん
2006/09/01(金) 22:52:21ID:???Docomo端末とか相対パス指定を受け付けないよ。
比較的メジャーな環境で受け付けないものがあるのに問題なし?
0817nobodyさん
2006/09/01(金) 22:59:31ID:???亀だけれど、ありがとう。
組み込み方すらわからない素人です...orz
調べたりしてある程度知識を頭に入れてからまた来ます。。。
ノシ
0819nobodyさん
2006/09/01(金) 23:06:49ID:???全然宗教論争でも何でもありませんが?
IE で動いたから大丈夫だろうって浅はかさが笑えるんですが。
移植性が高まれば RFC は無視でも良いですか。
これから出てくる IE 7 が RFC に従った実装をしてきたらどうしますか?
IE 7 が悪いんですとか言うんですか?
絶対 URI しか受け付けないブラウザで動かないと文句を言われたら
そのブラウザが悪いって言いますか?
「多くのクライアント」ってどれだけ調べたんですか?
RFC に書かれているものに対して、何が宗教論争ですか?
0820nobodyさん
2006/09/01(金) 23:11:15ID:???0821nobodyさん
2006/09/01(金) 23:12:11ID:???認識してるから相対は使わないわけですが。つか、君はちゃんと認識してんの?
君が認識してる「相対でも動くクライアントと動かないクライアント」を列挙してみてよ。
ひょっとして君の言う認識って「うちのシステムはIE6でしか動作保障しません」ってこと?
0823良心君 ◆lX/3zqtk/U
2006/09/01(金) 23:15:08ID:???すべてのクライアントに対して保証しているのか?
漏れはしない。現実的じゃないから。
君はすごいね、尊敬しちゃうよ。
0824nobodyさん
2006/09/01(金) 23:15:42ID:???RFCで定められた決まりごとなんだから従うべき。
移植性を気にするなら、
相対パスを入れると絶対パスに直してくれる関数を作って対応すればいいだけのこと。
(http://www.php.net/manual/ja/function.realpath.php のコメントにあるhtmlpathとか)
0826nobodyさん
2006/09/01(金) 23:18:49ID:???821じゃないが、少なくともRFCに従ってプログラムを組んでいるなら
動かないクライアントの方に非があることは明白。
そっちにバグ改修をリクエスト出来るね。
0827nobodyさん
2006/09/01(金) 23:18:58ID:???>すべてのクライアントに対して保証しているのか?
RFCやそのた標準規格に対応した状態にする。
そのあと(もしくは同時に)メジャーなクライアントの非標準準拠の動作をサポートする形でいくらかの修正を加える
0835良心君 ◆lX/3zqtk/U
2006/09/01(金) 23:26:39ID:???ここには初心者も多いと思うので後学のためと思って、
いましばらく聞いてちょんまげ。
まずどうしてIEやFirefoxがRCFに合わせないで相対URIでも受け付けるのか?
その方が便利だからさ。
次に、RFCに強制力はない。
最後に、圧倒的なシェアのIEとFirefoxに準拠してない、
R F C の 方 が 非 標 準 だ 。
と思うね。別にIEとFirefoxで動けばいいよ。
0837824
2006/09/01(金) 23:29:40ID:???スキーマの切り替えやホスト部分の取得方法で汎用性が減ると思ったが、
オプションの引数とか付ければいい話だったな。反省している。
0838nobodyさん
2006/09/01(金) 23:29:41ID:???0839nobodyさん
2006/09/01(金) 23:29:50ID:???> まずどうしてIEやFirefoxがRCFに合わせないで相対URIでも受け付けるのか?
> その方が便利だからさ。
違うね。お前みたいな RFC に従わないプログラムを書くしょぼいプログラマが多かったからだろ。
仕方ないから救済してもらってるんだよ。
0840nobodyさん
2006/09/01(金) 23:30:01ID:???公式な標準であるRFCを勝手に拡張したのであって、RFCの要件は満たしてる
だから最低限RFCの要件をアプリケーション側で満たす必要はあるだろ。
それから各独自拡張に対応するのは何ら問題ではない
0842nobodyさん
2006/09/01(金) 23:34:13ID:???0843nobodyさん
2006/09/01(金) 23:38:29ID:???テーブルタグが不完全でも補正して表示するとか、IEはその種の救済が多いよね。
相対Locationも一部のサーバで実際に返しちゃってたのがあったのよ。だから対応する。
ブラウザ側は頑張って「幅広い環境で対応するように」作ってくれてるのに
それに甘えて誤った作りを良しとしてんだから始末に終えない罠。
0844良心君 ◆lX/3zqtk/U
2006/09/01(金) 23:49:29ID:???変わる続ける規格に固執してどうすんの?
多くのブラウザで対応してるなら、規格外の動作してもいいじゃん。
それがデファクトスタンダードでしょ?
>>843 そもそもTABLEタグはNetscapeの独自拡張だけどね!
0845nobodyさん
2006/09/01(金) 23:57:34ID:???0846nobodyさん
2006/09/02(土) 00:01:17ID:???デファクトスタンダードに楽したいからという理由で甘えるようじゃ問題外
TABLEが独自拡張だったのは過去の話だろ。
0847nobodyさん
2006/09/02(土) 00:08:03ID:???少なくとも今話している規格は変わり続けていないんだけど。
baka
0849nobodyさん
2006/09/02(土) 00:17:05ID:???0850nobodyさん
2006/09/02(土) 00:23:06ID:???最近みた商品 2件 ○○○、XXX,
その他の関連商品 5件 ・・・・・・
などのようにしたいのですが、PHPで可能でしょうか?
0851nobodyさん
2006/09/02(土) 00:24:39ID:???0852良心君 ◆lX/3zqtk/U
2006/09/02(土) 00:24:59ID:???僕は楽な方を選ぶね。
ただ僕を攻撃するだけのためにそんなこと言ってるのなら、
すんごくくだらないと思うけどね。
0855nobodyさん
2006/09/02(土) 00:28:50ID:???可能です。
仕事でやってるならどう実装するか考えるのが仕事です。無理なら他の人に任せてください。
趣味でやってるなら気長に勉強しながらがんばって。応援してる。
その中で自分ではどうしても解決できないPHPに関する問題に突き当たったらまた質問してください。
0857850
2006/09/02(土) 00:35:54ID:???いろいろ調べてみます。
0858nobodyさん
2006/09/02(土) 00:38:10ID:???0859nobodyさん
2006/09/02(土) 01:40:01ID:???クッキーが現実的だろうな〜
もしくは何かの商品にアクセスする度にDBにいくつかレコードを持たせる
って言う手もあるな。
まぁ、会員登録とか必要になるだろうけど。
0860nobodyさん
2006/09/02(土) 01:47:05ID:???あなたの意見を尊重する方もおり、助かっている方もおります。
ただ、このスレが荒れる原因になるのでこのスレで
回答するときはコテつけるのはやめてください。
二度目の忠告です。
0861nobodyさん
2006/09/02(土) 02:40:34ID:PkweSmHd見つからないのでお願いします
print_rとかで配列の中身のぞいたときマニュアルだと
Array
(
[a] => apple
[b] => banana
[c] => Array
(
[0] => x
[1] => y
[2] => z
)
)
こんな見やすい形で表示されるっぽく解説されてるのですが
うちの環境だと、改行なしでひたすら並べて表示されてて
階層が深いと解読に多大な時間を要するのですが…
マニュアルみたいに表示される方法はあるのでしょうか?
お願いいたします
0864nobodyさん
2006/09/02(土) 02:55:36ID:PkweSmHd>>863
おわ!ソースではちゃんとでてたのか。
それを<pre>タグで囲むと…
しかもprint_rのマニュアルよく見たら<pre>ついてますねOTZ
失礼しました。ありがとうございます^^
0865nobodyさん
2006/09/02(土) 03:02:25ID:rL49M+5zApache2.055
PHP 5.1.5
WinXP Sp2
という環境にて運用しています。
連想配列を任意の順番で配置したいのですが、どうすればよいでしょうか。
$a = array();
$a['one'] = 'val_one';
$a['two'] = 'val_two';
$a['three'] = 'val_three';
$a['fore'] = 'val_fore';
としても
$a[0] のkeyに'one'が入ってくれません。
PHPドキュメントを読んで
array_push($a, array("one => val_one"));
こうすればできるかとも思ったのですが、だめでした。
どうかアドバイス頂けないでしょうか。宜しくお願い致します。
※特殊なキーソートルールに従って配列順をソートしたいので$a = array('one => val_one', 'two => val_two');のように固定値で設定することはできないのです。
0866nobodyさん
2006/09/02(土) 03:10:48ID:???そこは保障されないんじゃないかな?
連想配列=キー経由でデータアクセス
だから、そもそも順番に意味があるような
データを入れるのは適してないのでは?
$a=array();
$a[] = array('one', 'val_one');
$a[] = array('two', 'val_two');
とかじゃだめなの?
0867866
2006/09/02(土) 03:12:32ID:???※の注記ちゃんと読んでなかったよ。
0869866
2006/09/02(土) 03:25:02ID:???連想配列でも順番に入るような感じで例がのってましたね。
ちょっとあげあし取りになるかもだけど、
array("one => val_one");
ってダブルクォートの入り方がちがうよ。
あと質問よく読むと
>$a = array();
>$a['one'] = 'val_one';
>としても
>$a[0] のkeyに'one'が入ってくれません。
最後の行の文章がおかしくない?
foreachで$aをまわしたときに、'one'、'two'、...になってほしいってこと?
0870nobodyさん
2006/09/02(土) 03:27:43ID:???最終的に何がしたいのかよく分かんないんだけど、その格納の仕方で順番に配置できてるよ。
格納順に取り出す方法は
foreach($a as $v) {
echo $v;
}
とか
$list = array_values($a);
var_dump($list);
とか
while(list($k, $v) = each($a)) {
echo $v;
}
とかすんの。
$a[0]は「0番目の値」でなく「0というキーで格納した値」なので取り出せなくて当然。
もしも'val_one'を$a['one']と$a[0]の両方でアクセスしたいと言うなら、
$a[0] = 'val_one';
$a['one'] = 'val_one';
みたいにそれぞれ格納しないとダメ。
0871nobodyさん
2006/09/02(土) 03:38:53ID:???レス有り難うございます。
値を取り出すときは
foreach ($a as $key => $val) {
print "$key => $tmp <br >\n";
}
のような形で取り出し、$keyに"one" $valに"val_one"が入り
one => val_one
two => val_two
0872865
2006/09/02(土) 03:41:25ID:???上記の様な順番で出力させたかったのです。
>>870さんのレスを参考にもう一度やってみます。
fourとダブルクォートの入り方の指摘有り難うございました。
0873nobodyさん
2006/09/02(土) 04:50:50ID:???同じ配列に数値添字の値を加えて後の処理ができるのであれば
$a = array();
$a['one'] = 'val_one';
$a['two'] = 'val_two';
$a['three'] = 'val_three';
$a['fore'] = 'val_fore';
$a = $a + array_values($a);
print_r($a);
という方法もあるかな
0874nobodyさん
2006/09/02(土) 05:03:40ID:???ちょとみっともないけど、こんな感じでも
$a = array();
$a['one'] = 'val_one';
$a['two'] = 'val_two';
$a['three'] = 'val_three';
$a['fore'] = 'val_fore';
$b = array_keys($a);
print_r($b);
for ($i=0;$i<count($a); $i++)
echo $a[$b[$i]]."\n";
配列関連の関数をうまく使えばなにかと便利
何がしたいかわからないけど「特殊なソート」したいなら
コールバック関数が使えるソートが使えそうだけど・・
0875nobodyさん
2006/09/02(土) 12:13:07ID:???0876nobodyさん
2006/09/02(土) 13:11:58ID:???日本語が文字化けしてしまって、うまく変換できません。
文字化けは?n?l?E?}???C?_?[のようになってしまいます。
どう変換すべきなのか教えてください。
0878(^ω^) ◆shPHP/.kPI
2006/09/02(土) 13:22:46ID:???0879nobodyさん
2006/09/02(土) 13:25:01ID:DHuAFzD0その返ってきたメールについて処理したいのですが、一体どこに届いてるのかわからず、SMTP エラーメールの処理、等で一応ググったのですが、よくわかりませんでした。
いったい何から調べれば良いのか検討もつきません。メールの基礎から勉強すればわかることなんでしょうか?良ければヒントだけでもお願いします。
0880nobodyさん
2006/09/02(土) 13:28:27ID:???ページ自体をUTF-8で構成してるんで
$title = mb_convert_encoding($title,"UTF-8");
で変換してみましたが、文字化けは変わらないです。
0881nobodyさん
2006/09/02(土) 13:28:38ID:???■ このスレッドは過去ログ倉庫に格納されています