開発環境
- OS X Lion - Apple(OS)
- Apache (Web Server)
- PHP (サーバーサイドプログラミング言語、スクリプト言語)
- BBEdit - Bare Bones Software, Inc.(Text Editor)
『初めてのPHP5』 (David Sklar 著、 桑村 潤 翻訳、 廣川 類 翻訳、 オライリー・ジャパン、2005年、ISBN978-4-87311-257-2)の11章(XMLのパースと生成)11.4(演習問題)4を解いてみる。
4.
HTML、PHPのソースコード(BBEdit)
<?php require 'formhelpers.php'; if(array_key_exists('_submit_check', $_POST)){ if($errors = validate_form()){ show_form($errors); } else { process_form(); } } else { show_form(); } function show_form($errors=''){ if($errors){ print "エラー<ul><li>"; print implode("</li><li>", $errors); print '</li></ul>'; } $defaults = array(); if(array_key_exists('_submit_check', $_POST)){ $defaults = $_POST; } print '<form method="POST" action="' . $_SERVER['PHP_SELF'] . '">'; print '検索用語: '; input_text("search_q", $defaults); input_submit("submit", "submit"); print '<input type="hidden" name="_submit_check" value="1" />'; print '</form>'; } function validate_form(){ $errors = array(); if(!strlen($_POST['search_q'])){ $errors[] = "検索語を入力してください"; } return $errors; } function process_form(){ $xml = simplexml_load_file('http://news.yahoo.com/rss/'); print '検索結果<ul>'; foreach($xml->channel->item as $item){ if(stristr($item->title, $_POST['search_q'])){ print '<li><a href="' . $item->link . '" >' . htmlentities($item->title) . '</a></li>'; } } print '</ul>'; print '<a href="' . $_SERVER['PHP_SELF'] . '">戻る</a>'; } ?>
ちなみにJavaScriptの場合。
コード(BBEdit)
<script> function clicked(){ var search_q = $('#t0').val(); $.ajax(option); var option = { type:"GET", url: "http://news.yahoo.com/rss/", dataType:"html", success: function(xhr, text_status){ var search_q = $('#t0').val(); var ol = $(document.createElement('ol')); var links = []; var titles = []; $(xhr).find('channel > item > link').each(function(){ links.push($(this).text()); }); $(xhr).find('channel > item > title').each(function(){ titles.push($(this).text()); }); for(var i = 0; i < links.length; i++){ if(titles[i].indexOf(search_q) >= 0){ var li = $(document.createElement('li')); var a = $(document.createElement('a')); a.attr('href', links[i]); a.append(titles[i]); li.append(a); ol.append(li); }; } $('#d0').html(""); $('#d0').append(ol); }, error: function(exhr, text_status, error){ $('#d0').html(''); $('#d0').append('<p>エラー!</p>') }, complete: function(xhr, text_status){ $('#d0').append("<p>終了</p>"); } } $.ajax(option); } function f(e){ var e = e ? e : window.event; if(e.keyCode === 13) clicked(); } </script> <label>検索用語: <input id="t0" type="text" value="" onkeydown="f()" /></label> <input id="btn0" type="button" value="検索" onclick="clicked()" /> <div id="d0"> </div>
ここに表示
0 コメント:
コメントを投稿