お世話になっております。
何処かで見かけたような気がするのですが
ログインID作成時などで入力したテキストボックスの横に
「既に登録済みです」のような感じで即反映する仕組みに憧れて
探しまわってみたのですが参考になりそうなものが見つけられませんでした。
記憶違いで、確認ボタンのようなものを押した様な気もするのですが
上記のような仕組みは可能でしょうか?
また、固定文では無く入力した文字が含まれる物を表示させる事は可能か
教えていただけたら幸いです。
よろしくお願い致します!
追記1:
空いた時間で試行錯誤しており遅くなってしまいましたが
非同期通信で値の取得について質問させて下さい。
メインphp <script type="text/javascript"> $(document).ready(function(){ $("#artname").keypress(function(ev) { if ((ev.which && ev.which === 13) || (ev.keyCode && ev.keyCode === 13)) { return false; } }); $(document).on('keyup',function(e){ var val = $("#artname").val(); //入力値を取得 $.ajax({ type: "POST", url: "pre.php", data: "artname="+val, beforeSend: function(){ $("#message").html('<img src="何かしらのgif" />'); }, success: function(xml){ $(xml).find("item").each(function(){ var check = $(this).find("check").text(); if( check == 1 ){ $("#message").html('チェック有り').css({"color":"red"}); } else { $("#message").html('チェック無し').css({"color":"blue"}); } }); } }); }); }); </script> 判定側php <?php header("Content-type: application/xml"); echo '<?xml version="1.0" encoding="UTF-8" ?> ' . "\n"; $account = htmlspecialchars($_POST['artname'] , ENT_QUOTES , "UTF-8"); $array = array('aaa','bbb'); $hit = preg_match($account, $array); if($hit){ } if(!$hit){ }); endif; echo '<rss>'."\n"; echo ' <item xml:space="preserve">'."\n"; echo ' <check>'.$check.'</check>'."\n"; echo ' </item>'."\n"; echo '</rss>'."\n";
判定側で
$hit = array_search($account, $array);
if( $hit !== false ) :
$check = true;
であれば機能していたのですが、部分一致が最終目標で
preg_matchを自分なりに調べて当てはめてみたのですが
何処がダメなのか分からなくなってしまいました。。
助言いただけたらと思いますので、よろしくお願い致します。
追記2(完成理想)
入力した文字をDBと照合させて、含む文字列を表示させたい。
例:【入力】ツァ → モーツァルト
モツァレラ
現状の中途半端なコードになってしまい恐縮ですが
取り出した文字列をどう処理すればいいのかというお手本をいただけないでしょうか。。
pre.php <?php $pdo = new PDO('mysql:dbname=article;host=localhost','root',''); $stmt = $pdo->query('SET NAMES utf8'); $stmt = $pdo->prepare("SELECT * FROM art WHERE a_name=:a_name"); $flag = $stmt->execute(); if($flag == false){ echo "SQLエラー"; }else{ $result = $stmt->fetch(); $account = filter_input(INPUT_POST,'artname'); $array = array_column($result,'a_name'); $hit = in_array($account,$array)!==false; if($hit){ print 1; }else{ print 0; }; exit; ?>
mein.php <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script> <script> $(function(){ $('#artname').on('keyup',function(e){ var val = $(this).val(); $.ajax({ type: "POST", dataType:"text", url: "pre.php", data: {artname:val}, }).done(function(data){ if(data==="1"){ $("#message").text('データ有り').css({"color":"red"}); } else { $("#message").text('データ無し').css({"color":"blue"}); } }); }); }); </script> <input type="text" name="artname" id="artname"><span id="message"></span>
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/01/18 08:49
2019/01/24 00:53
2019/01/24 00:54
2019/01/24 02:45
2019/01/24 02:50
2019/01/24 05:01
2019/01/24 05:08
2019/01/24 05:32
2019/01/24 05:32
2019/01/24 08:25