1 名前:● mailto:sage [2009/10/11(日) 21:18:54 ID:???] 質問者はまず>>1 を良く読むこと(必須!) 過去スレ、関連スレ、FAQなどは>>2-10 辺り 次スレは>>980 が立てる。10分以内に立たない場合、宣言してから立てたい人が立てること。 ◆前スレ 【PHP】下らねぇ質問はID出して書き込みやがれ 88 pc11.2ch.net/test/read.cgi/php/1253061577/ ◆質問用テンプレ 【OS名】vine linux 【PHPのバージョン】php5.26 【連携ソフトウェア】mysql 【質問内容】 ◆質問する時の注意 ・ スレを上げて自分のIDを表示させること。(メール欄に何も記述しない。専ブラのsageチェックを外す) ・ 己の行った操作、変更などを詳しく明記すること。 ・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。 ・ 質問者として、態度をわきまえること。 ・ 事前に関連リンクの公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。 (PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。) ◆質問後の注意 ・2回目以降は最初に質問した際のレス番号を入れて、偽者防止に必ずIDを表示させること。 ・解決しなくても回答をもらった場合はお礼を言うこと。 (荒らし、煽りは除く。煽られたときも、無闇に反論せずスルーすること。) ◆回答者への注意 ・誰にレスしているのか分からないと困るので、>>(アンカー)をつけて回答すること。 【その他諸注意】 ・SQL・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ
552 名前:nobodyさん [2009/10/24(土) 00:54:41 ID:BvPjRTUm] Fatal error: Call to undefined method SQLiteDatabase::close()
553 名前:nobodyさん mailto:sage [2009/10/24(土) 04:14:41 ID:???] そのクラスに閉じるメソッドが使われていなくて コンストラクトでオープンするようになっている場合 デスクトラクト時にそのクラス側で勝手に終了してくれてると考えるきでは?
554 名前:nobodyさん mailto:sage [2009/10/24(土) 04:18:45 ID:???] なんか日本語が変だった・・・ そのクラスに閉じるメソッドが定義されていなくて コンストラクターでオープンするようになっている場合 デスクトラクターで勝手に閉じてくれていると考えるべきでは? 実際にそのクラスの中身はみてないしどういうのもしらないが
555 名前:nobodyさん mailto:sage [2009/10/24(土) 04:28:53 ID:???] 何言ってんの?
556 名前:nobodyさん mailto:sage [2009/10/24(土) 04:43:06 ID:???] 分からないなら無理してレスしなくていいよ 教えてほしいならどこがどうわからないのかID出して質問してね
557 名前:nobodyさん mailto:sage [2009/10/24(土) 05:22:59 ID:???] >>555 554で言ったとおりどういうクラスかもしらないし中身もしらないけど(というよりSQLite使ったことない) class SQLiteDatabase { private DB接続ポインタ; function __construct(接続情報) { $this->DB接続ポインタ = sqliteオープン(接続情報);; } function query($sql) { return 結果を配列で返す($sql); } function __destruct() { sqliteクローズ($this->DB接続ポインタ); //$this->DB接続ポインタ = null; } } $obj = new SQLiteDatabase(接続情報); $res = $obj->query("SELECT * FROM hoge WHERE 1"); foreach ($res as $row) { echo $row."<br>"; } //ここでデストラクターが呼ばれて勝手に終了する たぶんこんな構造になってるんじゃないかと(間違ってるかもしれないけど) SQLite自体明示的に終了させる必要がないDBかもしれないしその辺の事情は知らない
558 名前:nobodyさん mailto:sage [2009/10/24(土) 05:24:18 ID:???] 下らんコード書く暇あったら確認しろよ
559 名前:nobodyさん mailto:sage [2009/10/24(土) 05:28:37 ID:???] >>558 そんなクラス見つからなかったんだけどなぁ 探し方が悪かったんだろうか よかったらリンクはってちょうだい
560 名前:nobodyさん mailto:sage [2009/10/24(土) 07:37:49 ID:???] そしてリンクをはらない>>558 であった
561 名前:nobodyさん mailto:sage [2009/10/24(土) 08:20:12 ID:???] >//ここでデストラクターが呼ばれて勝手に終了する $objがスコープ内にいるのにデストラクタが呼ばれちゃまずいだろ。
562 名前:nobodyさん mailto:sage [2009/10/24(土) 08:25:17 ID:???] >>561 <?php class Hoge { function Hoge() { echo "construct<br>\n"; } function a() { return array("a", "b", "c"); } function __destruct() { echo "destruct<br>\n"; } } $obj = new Hoge; foreach ($obj->a() as $value) { echo $value."<br>\n"; } ?>
563 名前:nobodyさん mailto:sage [2009/10/24(土) 08:44:46 ID:???] ほんとこのスレ初心者ばっかだなw
564 名前:nobodyさん mailto:sage [2009/10/24(土) 09:21:19 ID:???] www.php.net/manual/ja/function.sqlite-close.php しかし相変わらずだな。
565 名前:nobodyさん mailto:sage [2009/10/24(土) 09:29:15 ID:???] www.php.net/manual/ja/ref.sqlite.php これ見方がわからないんだけど SQLiteDatabase SQLiteResult SQLiteUnbuffered に定義されてる各メソッドはそのクラスのみで使えて 目次のとこに書かれてるのは共通に使えるメソッド? なんか無名関数のせいでマニュアルの見方がむずくなってきてる気がする・・・
566 名前:nobodyさん mailto:sage [2009/10/24(土) 09:34:01 ID:???] マルチパラダイムだから仕方ないがこれはひどい 明確に分ければいいのに
567 名前:nobodyさん [2009/10/24(土) 09:49:09 ID:o7jv7fS8] PHP、PEAR、Smartyはだいたい理解できました しかし、実際HTMLなどのクライアントサイド側との連携がいまいち良く分かりません 本やちょっとしたPHP解説のサイトなどはメソッドとかプロパティなどの説明で終わっているもので フォームなどの基本的な事は何処にでも書いてあるので分かるのですが、実践的なPHPとクライアントサイドとの連携したコードなど 書いてある書籍など自分の県では見つけられませんでした 実際にサイトを作る為のクライアント+サーバサイドを連携させたサンプルコードの載っているサイトや書籍は何かないでしょうか? 宜しくお願い致します
568 名前:nobodyさん mailto:sage [2009/10/24(土) 09:50:26 ID:???] Ajaxのことだろ Ajaxスレいってください
569 名前:nobodyさん mailto:sage [2009/10/24(土) 09:55:04 ID:???] jquery
570 名前:nobodyさん [2009/10/24(土) 10:02:54 ID:o7jv7fS8] えっ? Ajaxですか? Ajaxの事ではなく、例えばテンプレートとか実際に実装して作ったサンプルとかです 説明不足だったようです、すみません 例えば、Webデザインブックなどはいくらでも出ていますが、それらはただHTMLとCSSで実装しています まぁたまにJavaScriptなどもありますが 自分は、人がサイトにアップロードした画像をサイトに情報つきで載せてレイアウトも崩れないようにしたいとか (つまり$_FILESの概念はわかるけれどそれを実際クライアント側のコードにどのようにテンプレート内に実装・レイアウトしていくか)、 PEARによるログイン認証を行った後でそのログインしたユーザーのみが動的コンテンツを利用するためにはどのようにすればいいのか、 とかまぁ書けば色々と長くなりそうですが、そういう事です 自分側がただ作ったサイトを公開するだけではなく、ユーザーの参加できるようなサイトの作り方を、簡単でもいいので解説しているサイトや書籍が知りたいのです
571 名前:nobodyさん mailto:sage [2009/10/24(土) 10:05:27 ID:???] >>557 おいおいwあんまり>>555をいじめんなよw そんなの見せても>>555にはチンプンカンプンなんだぜwwwwwwww 今頃顔真っ赤にしてるだろうけど二度と出てこないよww
572 名前:nobodyさん mailto:sage [2009/10/24(土) 11:35:30 ID:???] >>571 そういうのは、実際に必要になった時に調べたり考えたりしてもいいと思う。 PHPで家計簿でも何でもいいんで作ってみれば、分かってくるんじゃないかな。 気力があるなら、人が作成したPHPのプログラムを落としてHTML部分がどうなってるか探してみるのが言いかと
573 名前:nobodyさん mailto:sage [2009/10/24(土) 11:39:51 ID:???] そりゃクライアント+サーバサイドの連携っていったら JavaScriptとPHPの連携っていってるようなものだからAjaxって答えが返ってくるのも無理もない MixiやYoutubeのようなSNSサービスをやりたいってことね セッションとか勉強するといいよ
574 名前:nobodyさん mailto:sage [2009/10/24(土) 11:55:49 ID:???] >>562 閉じタグとファイル終端は、直接関係無い。 タグ閉じただけじゃスコープ閉じないんだぜ。
575 名前:nobodyさん mailto:sage [2009/10/24(土) 11:58:58 ID:???] 日本語でおk
576 名前:nobodyさん mailto:sage [2009/10/24(土) 12:00:54 ID:???] でてこいよ>>555 wwwwwwwwwwwwwwwGOGOGOwwwwwwwwwwwwwwwwww
577 名前:nobodyさん [2009/10/24(土) 12:01:27 ID:o7jv7fS8] >>572 レスアンカーは自分(>>570 )にですよね? そうだと思って返答させて下さい >人が作成したPHPのプログラムを落としてHTML部分がどうなってるか探してみる こういうのはWebサイトで検索して、人が書いたサンプルコードを集めて学習しろという事なのでしょうか? それとも、自分は知らない(というかコードを読み取られると危険なのでそもそも出来ないのではと思うのですが)、ソース読み取りソフトとかあるのでしょうか? 例えばWebサイトであればIEのソース機能やFireFoxのFireBugのようなHTMLのコードを表示出来る様なソフトの事です >>573 あぁ、すみませんでした 自分の表現がおかしかったようです HTML+CSSにPHP(テンプレートやライブラリ含む)を組み込んで実装する、実際に運営する為の雛形コードを学習したかったのです
578 名前:nobodyさん mailto:sage [2009/10/24(土) 12:05:25 ID:???] >>570 単にフォームからのリクエストを処理するPHPのコード、ってんなら、 PHPの本で2〜3章かけて解説してるんじゃね? あとは自分の作りたいものに似てるの探して、コード読むべし。
579 名前:nobodyさん mailto:sage [2009/10/24(土) 12:05:29 ID:???] >HTML+CSSにPHP(テンプレートやライブラリ含む)を組み込んで実装する、 >実際に運営する為の雛形コードを学習したかったのです フレームワークのview部分とか見てみるといいかもしれない
580 名前:nobodyさん mailto:sage [2009/10/24(土) 12:10:51 ID:???] >>574 aaa<br> <?php >>562 のコード ?> bbb<br> でbbb<br>より後にdestructが現れるってことか? どっちみちDBクローズならそれでもいいだろ
581 名前:555 mailto:sage [2009/10/24(土) 12:11:40 ID:???] すいませんでした 無知を晒してしまいました ごめんなさい
582 名前:nobodyさん mailto:sage [2009/10/24(土) 12:22:14 ID:???] ちなみにスコープ閉じるってどうやるの? objにnullいれるだけ?
583 名前:nobodyさん mailto:sage [2009/10/24(土) 12:59:43 ID:???] >>580 その下にまた<?phpが出てくるとか、include/requireされてるとか。 >>582 $objはスコープから外れてないけど、インスタンスは ガベージコレクションで回収されるから、そのときに デストラクタが起動されるんだと思う。 PHPで明示的なスコープって言ったら関数かな。 ローカル(グローバルでない)変数のスコープは関数内でしょ。
584 名前:nobodyさん mailto:sage [2009/10/24(土) 13:03:20 ID:???] >>281 いやだからそれは俺が振られた理由になってねえよ なんで会社の休憩時間にイタリアフルコース頼まないといけないんだよ
585 名前:nobodyさん mailto:sage [2009/10/24(土) 13:16:46 ID:???] フラれたのか、ま、元気だせ、応援してるから。
586 名前:nobodyさん mailto:sage [2009/10/24(土) 13:56:20 ID:???] 要らないもんはunsetしちゃおうぜ
587 名前:552 [2009/10/24(土) 14:16:10 ID:BvPjRTUm] 結局クラスを自作して対応しました。 class sqlite{ var $_result = array(); var $_pointer = null; var $_message = null; function connect($dbfile){ return $this->_pointer = sqlite_open($dbfile,0666,$this->_message); } function close(){ sqlite_close($this->_pointer); } function exec($que){ return sqlite_exec($this->_pointer,$que,$this->_message); } function array_query($que){ return sqlite_array_query($this->_pointer,$que,$this->_message); } function get_escape($str){ return sqlite_escape_string($str); } function get_result(){ return $this->_result; } function get_pointer(){ return $this->$_pointer; } function get_message(){ return $this->$_message; } }
588 名前:nobodyさん mailto:sage [2009/10/24(土) 14:37:03 ID:???] >>587 オブジェクト指向スタイル用意されてる意味ねーw
589 名前:nobodyさん mailto:sage [2009/10/24(土) 14:57:50 ID:???] fscanfがおかしいです
590 名前:nobodyさん mailto:sage [2009/10/24(土) 18:28:54 ID:???] なるほどね、凸者さんの判断次第ってことか。 あと、ヤンデレこえぇwww
591 名前:nobodyさん mailto:sage [2009/10/24(土) 18:29:35 ID:???] 誤爆
592 名前:nobodyさん mailto:sage [2009/10/24(土) 19:04:29 ID:???] どうしてもnewで作ってclose()したいんだ、という強い意志が感じられます。 若いっていいね。
593 名前:nobodyさん mailto:sage [2009/10/24(土) 19:35:19 ID:???] >どうしてもnewで作ってclose()したいんだ、という強い意志が感じられます。 はずかしいから黙ってて
594 名前:nobodyさん mailto:sage [2009/10/24(土) 20:43:07 ID:???] newで作ったらdeleteを使いたくなるよね。 で、ダミー関数であるdeleteが登録されてるせいで、 delete($classA)とか書いてもしばらく気がつけない
595 名前:nobodyさん mailto:sage [2009/10/24(土) 20:45:44 ID:???] え?
596 名前:nobodyさん mailto:sage [2009/10/24(土) 20:47:28 ID:???] え?
597 名前:nobodyさん mailto:sage [2009/10/24(土) 21:14:45 ID:???] これ何のスレだっけ
598 名前:nobodyさん mailto:sage [2009/10/24(土) 21:21:53 ID:???] 質問じゃない時はsageで書きやがれスレ
599 名前:nobodyさん [2009/10/24(土) 22:35:42 ID:aM0DiAaq] 【OS名】Windows xp 【PHPのバージョン】php5.2.10 【連携ソフトウェア】mysql 【質問内容】 心理テストのようなサイトを作ろうとしています。 何人がその答えを選んだかの集計と、 それとは別に選んだ答えがどのような性格をあらわすのかを表示できるようにしたいです。 チェックボタンを選んだ状態で「あなたはこんな人」のようなラジオボタンで そのページに遷移させたいです。 どのようにしたらいいのでしょうか? アバウトな質問でごめんなさい。
600 名前:nobodyさん mailto:sage [2009/10/24(土) 22:39:54 ID:???] >>599 で、何ができないの?PHP?本買え
601 名前:nobodyさん mailto:sage [2009/10/24(土) 22:39:57 ID:???] >>599 そのまんまじゃね?何が問題なんだ?
602 名前:nobodyさん mailto:sage [2009/10/24(土) 22:40:40 ID:???] 全部作らせる気かww 最近の若者は安易だなぁ
603 名前:nobodyさん [2009/10/24(土) 22:45:01 ID:aM0DiAaq] くだらなすぎてごめんなさい・・・
604 名前:nobodyさん mailto:sage [2009/10/24(土) 22:45:53 ID:???] くだらないというか何が(どこが)できないのかが分からんのだよ
605 名前:nobodyさん [2009/10/24(土) 22:50:44 ID:aM0DiAaq] アンケートのページで「投票」を押したらその選んだ結果によって違うページに飛ばしたいです。 例えば赤を選んだら赤色を好きな人の性格について書いてあるページで、 青を選んだら青色が好きな人の性格について書いてあるページです。 アバウトすぎてごめんなさい。
606 名前:nobodyさん [2009/10/24(土) 22:51:31 ID:aM0DiAaq] 今こんな感じで書いているところです。。 <html> <head><title>心理テスト</title></head> <body> <h1>メンタル編</h1> <p>あなたがいつか天国へ旅立つとしたら、何色の石をお守りにしたいですか? <?php // スクリプト名取得 $script = basename(__FILE__); // メンバー名配列 $member = array("", "赤いルビー", "ピンクのローズクォーツ", "ゴールド", "イエロートパーズ", "緑のヒスイ", "青のラピスラズリ", "紫水晶", "白の水晶"); // 投票がある場合 if ($_POST['COLOR'] > 0) { // 投票者番号 $no = $_POST['COLOR']; // MySQLに接続 $db = mysql_connect("localhost", "root", "root"); // DB選択 mysql_select_db("graduation", $db); // insert文実行 mysql_query("insert into ninki values(null, {$no}, now())", $db); // DB切断 mysql_close($db); } ?>
607 名前:nobodyさん [2009/10/24(土) 22:52:32 ID:aM0DiAaq] <p><font color="red"><?= $msg ?></font></p> <form method="POST" action="<?= $script ?>"> <p><input type="radio" name="COLOR" value="1">赤いルビー</p> <p><input type="radio" name="COLOR" value="2">ピンクのローズクォーツ</p> <p><input type="radio" name="COLOR" value="3">ゴールド</p> <p><input type="radio" name="COLOR" value="4">イエロートパーズ</p> <p><input type="radio" name="COLOR" value="5">緑のヒスイ</p> <p><input type="radio" name="COLOR" value="6">青のラピスラズリ</p> <p><input type="radio" name="COLOR" value="7">紫水晶</p> <p><input type="radio" name="COLOR" value="8">白の水晶</p> <p><input type="submit" value="投票"></p> </body></html> こんな感じです。 ごめんなさい。
608 名前:nobodyさん mailto:sage [2009/10/24(土) 22:56:06 ID:???] >>607 switch($COLOR){ case 1 処理&リダイレクト1 break; case 2 処理&リダイレクト2 break; case 3 処理&リダイレクト3 break; ..... } あとaction="<?php echo $script ?>"はまずくね? それだったらaction=""で空でいいと思うよ
609 名前:nobodyさん mailto:sage [2009/10/24(土) 22:58:11 ID:???] case 1: ね":"を忘れずに
610 名前:nobodyさん [2009/10/24(土) 23:01:10 ID:aM0DiAaq] >>608 >>609 やってみます 情けない質問に答えてもらってありがとうございます
611 名前:nobodyさん mailto:sage [2009/10/24(土) 23:05:20 ID:???] 情けない質問wwww
612 名前:nobodyさん [2009/10/24(土) 23:24:44 ID:TvoLhocc] switch内のbreak;のインデントってたまに悩むけどどうしてますか? 俺はcaseからインデントつけて位置に書いてるけど そうすると最後でインデントが2つ一気になくなってしまう違和感がある >>608 みたいに書くとcase処理内な感じがしない違和感
613 名前:nobodyさん mailto:sage [2009/10/24(土) 23:34:28 ID:???] >>612 その書き込みエスケープされただけだお case $a: break; が多いけどおれも結構曖昧だ
614 名前:nobodyさん mailto:sage [2009/10/24(土) 23:35:29 ID:???] 逆だ case $a: break;
615 名前:nobodyさん mailto:sage [2009/10/24(土) 23:41:58 ID:???] switch ($a) { case 0: do_something(); break; case 1: do_something(); break; default: do_something(); break; } どの言語の解説でもたいていこうなってるしこれがスタンダードじゃないかね
616 名前:nobodyさん mailto:sage [2009/10/24(土) 23:42:52 ID:???] 下らねぇ回答はID出さないでここに書き込みやがれ 90
617 名前:nobodyさん mailto:sage [2009/10/25(日) 00:28:25 ID:???] 次スレの季節か
618 名前:nobodyさん mailto:sage [2009/10/25(日) 00:56:35 ID:???] switch文で気になったのでメモ switch('a'){ case 'a'; //末尾が ; } と switch('a'){ case 'a': //末尾が : } は等価
619 名前:nobodyさん [2009/10/25(日) 05:29:05 ID:TWuysydg] $test = " 1c 2c 3c!"; $search = "/([^0-9])([0-9])c([^0-9])/"; $replace = "$1c$2$3"; echo preg_replace($search, $replace, $test); これで、期待する出力は c1 c2 c3! 実際の出力は c1 2c c3! 質問は、 ・なぜこのような動作になるのでしょうか? ・どうすれば解決できるでしょうか? 後、欲しいアイデアとして ・"1c 2c 3c"のように、先頭にスペースを入れなくても"c1 c2 c3"に変える正規表現を教えてほしい (ただし"11c"のような形の場合は変化させないでほしい)
620 名前:nobodyさん mailto:sage [2009/10/25(日) 05:53:15 ID:???] explodeで配列にわけて substrで文字を抜き出したのを結合すえばええ
621 名前:nobodyさん mailto:sage [2009/10/25(日) 10:22:02 ID:???] 認定回答者採用試験は今日までですので頑張って回答してください
622 名前:nobodyさん mailto:sage [2009/10/25(日) 11:14:26 ID:???] >>619 $test = "1c 2c 3c!"; $search = "/([^| ][0-9]{1})c/"; $replace = "c$1";
623 名前:nobodyさん mailto:sage [2009/10/25(日) 13:01:49 ID:???] トリもIDも出さずに試験官気取りとな?
624 名前:nobodyさん mailto:sage [2009/10/25(日) 13:03:49 ID:???] >>623 お前鬱病だろ
625 名前:nobodyさん mailto:sage [2009/10/25(日) 21:45:40 ID:???] phpでシングルトンって意味あるの? リクエスト終わったらメモリ開放されるんでしょ?
626 名前:nobodyさん mailto:sage [2009/10/25(日) 22:19:54 ID:???] 2行目は正解。 1リクエストの中だけでも必要なときはあるさ。
627 名前:nobodyさん [2009/10/25(日) 22:38:37 ID:Ltpwqrvc] mod_rewriteを使ってクリックカウントをとりたいのですが 以下のようにするとcount.phpにリダイレクトできるのですが、 count.phpからLocationで飛ばすとループしているのか404NotFoundになってしまいます。 どうすれば正常にできますか? 例:www.example.com/img/abc01.jpg をクリックしてcount.phpを介してカウント www.example.com/img/abc01.jpgのまま表示する //サーバー側 RewriteEngine on RewriteRule ^/img/abc([0-9]+).(*)$ /img/count.php?id=$1&extension=$2 //count.php側 header("Location: www.example.com/img/abc$id.$extension ");
628 名前:nobodyさん mailto:sage [2009/10/25(日) 22:42:08 ID:???] readfile使えばいいと思うよ
629 名前:627 [2009/10/25(日) 22:54:09 ID:Ltpwqrvc] >>628 やってみましたがだめでした・・・。
630 名前:nobodyさん mailto:sage [2009/10/25(日) 23:07:22 ID:???] count.phpがabc01.jpgを出力するんだぜ。
631 名前:nobodyさん mailto:sage [2009/10/25(日) 23:15:10 ID:???] リライトログ見てみたら?吐いてなかったら吐かせて
632 名前:627 [2009/10/26(月) 00:20:09 ID:8+sjsIrs] >>630-631 アドバイスありがとうございます。 何とか解決できたみたいです。 /img/を物理ディレクトリ、URL表示部分を新規に/img2/として(抽象ディレクトリ) リライトしたらできるようになりました。
633 名前:627 [2009/10/26(月) 00:33:00 ID:8+sjsIrs] >>628 readfileも必要だったみたいです。 ありがとうございました。
634 名前:nobodyさん mailto:sage [2009/10/26(月) 05:27:50 ID:???] 質問させてください。 <html> <body> <?php include("./hoge.php");?> </body> </html> で閲覧に問題はないのですが、 ソースを見ると <html> <body> <html><body></body></html> </body> </html> と2度使われ重複している状態です。 hoge.phpには<html><body></body></html>などの記述はしておりません。 問題の箇所等ご指摘願います。
635 名前:nobodyさん mailto:sage [2009/10/26(月) 05:31:55 ID:???] hoge.phpの中身書くのがいやなら簡略化したもの書いてくれないと それだけではなんともいえない
636 名前:nobodyさん mailto:sage [2009/10/26(月) 05:40:09 ID:???] >>635 ありがとうございます。 hoge.phpの中身はモバイル版AdSenseコードのみです。
637 名前:nobodyさん [2009/10/26(月) 05:48:48 ID:n4efgg6U] 質問です。MagpieRSSを使っています。 日付順に取得記事をソートしたいのですが、うまくいきません。 アドバイスお願いします。 $rssurl = array (); $rssurl[] = "mainichi.pheedo.jp/f/mainichijp_flash "; $rssurl[] = "rss.asahi.com/f/asahi_newsheadlines "; foreach ($rssurl as $pre) { $url = $pre; $rss = fetch_rss($url); $title = $rss->channel['title']; $title = mb_convert_encoding($title, "shift_jis", "auto"); $url = $rss->channel['link']; $rss->items = array_slice($rss->items, 0, 1); foreach ($rss->items as $item ) { $day = date('n/j',strtotime(substr($item['dc']['date'],0,10))); $time = date('H:i',strtotime(substr($item['dc']['date'],11,8))); $date = "$day $time"; $rdf = $item[link]; $article = $item[title]; $article = mb_convert_encoding($article, "shift_jis", "auto"); $linkstr = "$date $rdf $article $url $title<br>\n"; $rssarray["{$date}"] = $linkstr; krsort($rssarray); echo "$linkstr";
638 名前:nobodyさん mailto:sage [2009/10/26(月) 05:52:16 ID:???] >>637 $linkstrは全て想定通りになってるの?
639 名前:nobodyさん [2009/10/26(月) 05:55:31 ID:n4efgg6U] >>638 はい、順序以外は期待通りの実行結果です。
640 名前:nobodyさん mailto:sage [2009/10/26(月) 06:00:30 ID:???] じゃkrsortの問題ですね どんな$linkstrを入れるとどのようなソート結果になるか例を出してもらえますか? ちなみに第二引数にソートフラグを指定して挙動を変えることができる www.php.net/manual/ja/function.sort.php 今回の場合は全て文字列だから関係ないかもしれないけど
641 名前:nobodyさん [2009/10/26(月) 06:09:43 ID:n4efgg6U] RSSの取得を下のようにしたとして $rssurl[] = "mainichi.pheedo.jp/f/mainichijp_flash "; $rssurl[] = "mainichi.jp/rss/etc/mantan.rss "; $rssurl[] = "mainichi.jp/rss/etc/enta.rss "; $rssurl[] = "mainichi.jp/rss/etc/sports.rss "; 10/26 05:00 ■URL ■人事:法務省(26日) ■URL ■毎日jp-ニュース速報(総合) 10/25 21:00 ■URL ■注目アニメ紹介:「空中 ■URL ■毎日jp-まんたんウェブ 10/25 22:14 ■URL ■the GazettE ■URL ■毎日jp-エンタメ 10/25 23:10 ■URL ■横浜:巨人・尾花コーチ ■URL ■毎日jp-スポーツ (長いので削ってます) このような結果が出ます。 日付でソートをかけているつもりですが、まったくされていません。 $rssurl配列の上から順に表示されています。
642 名前:nobodyさん mailto:sage [2009/10/26(月) 06:10:21 ID:???] >>636 echoで文字列を出力してるのか? それともただアドセンス部分のHTMLだけ書いてるのか? 試してみたがhtml bodyタグが加わることはない サーバかPHPの設定かもしれないがどの設定項目かはわからんわ PHP使えるレン鯖が2つ以上あるなら両方で試してみ ローカルに環境作るのが一番いいけど
643 名前:nobodyさん mailto:sage [2009/10/26(月) 06:11:55 ID:???] >日付でソートをかけているつもり 使う関数まちがってるんじゃね? krsortって逆順ソートだよ
644 名前:nobodyさん mailto:sage [2009/10/26(月) 06:15:55 ID:???] 日付だから逆順であってんでねーの?
645 名前:nobodyさん mailto:sage [2009/10/26(月) 06:17:41 ID:???] いやいや ただ単にキーを逆順にするソートってこと ユーザー定義のソートをしたいのならusort()とかじゃないと
646 名前:nobodyさん [2009/10/26(月) 06:18:06 ID:n4efgg6U] $rssurl[] = "mainichi.jp/rss/etc/mantan.rss "; //まんたんウェブ $rssurl[] = "mainichi.jp/rss/etc/enta.rss "; //エンタメ $rssurl[] = "mainichi.pheedo.jp/f/mainichijp_flash "; //ニュース速報(総合) $rssurl[] = "mainichi.jp/rss/etc/sports.rss "; //スポーツ 10/25 21:00 ■URL ■注目アニメ紹 ■URL ■毎日jp-まんたんウェブ 10/25 22:14 ■URL ■the GazettE ■URL ■毎日jp-エンタメ 10/26 05:00 ■URL ■人事:法務省( ■URL ■毎日jp-ニュース速報(総合) 10/25 23:10 ■URL ■横浜:巨人・尾 ■URL ■毎日jp-スポーツ 例がわかりにくかったので書き直しました。
647 名前:645 mailto:sage [2009/10/26(月) 06:19:49 ID:???] あ、ごめん。 よくよんでなかったw >日付でソートをかけているつもりですが、まったくされていません。 ってかいてたからてっきり データ見る限りだとkrsortでよさそうだね
648 名前:645 mailto:sage [2009/10/26(月) 06:20:38 ID:???] とか書いた瞬間にデータの日付ルールが変わった件
649 名前:nobodyさん [2009/10/26(月) 06:22:04 ID:n4efgg6U] usortにしたらエラーがでました。 Warning: Wrong parameter count for usort() in C:\WWW\php.php on line 30 >>648 26日が真上だと日付でソートされているように見えたので… 配列順に表示されるだけでソート機能が働いていないというのが今回の悩みです。。。
650 名前:nobodyさん mailto:sage [2009/10/26(月) 06:25:26 ID:???] >usortにしたらエラーがでました。 マニュアルみようぜ www.php.net/manual/ja/function.usort.php krsort($rssarray);を usort($rssarray);にかえただけじゃだめ 第2引数入れないと
651 名前:nobodyさん mailto:sage [2009/10/26(月) 06:26:20 ID:???] それぞれどんな$linkstrなの?
652 名前:nobodyさん [2009/10/26(月) 06:34:30 ID:n4efgg6U] >>650 すいません、ありがとうございます。 試している最中ですが、cmpの設定に少し時間がかかりそうなので結果が遅れます。 >>651 $day 記事の更新日 $time 記事の更新時間 $date 上記二つを合わせた文字列 $rdf 記事のURL $article 記事のタイトル $url 配信元のURL $title 配信元のタイトル です。