質問編集履歴

4

コードを追記

2019/01/24 08:42

投稿

redkick
redkick

スコア17

test CHANGED
File without changes
test CHANGED
@@ -165,3 +165,121 @@
165
165
  何処がダメなのか分からなくなってしまいました。。
166
166
 
167
167
  助言いただけたらと思いますので、よろしくお願い致します。
168
+
169
+ --------------------------------------------------------------------------
170
+
171
+ 追記2(完成理想)
172
+
173
+
174
+
175
+ 入力した文字をDBと照合させて、含む文字列を表示させたい。
176
+
177
+ 例:【入力】ツァ → モーツァルト
178
+
179
+            モツァレラ
180
+
181
+
182
+
183
+ 現状の中途半端なコードになってしまい恐縮ですが
184
+
185
+ 取り出した文字列をどう処理すればいいのかというお手本をいただけないでしょうか。。
186
+
187
+
188
+
189
+ ```
190
+
191
+ pre.php
192
+
193
+ <?php
194
+
195
+ $pdo = new PDO('mysql:dbname=article;host=localhost','root','');
196
+
197
+ $stmt = $pdo->query('SET NAMES utf8');
198
+
199
+ $stmt = $pdo->prepare("SELECT * FROM art WHERE a_name=:a_name");
200
+
201
+ $flag = $stmt->execute();
202
+
203
+
204
+
205
+ if($flag == false){
206
+
207
+ echo "SQLエラー";
208
+
209
+ }else{
210
+
211
+
212
+
213
+ $result = $stmt->fetch();
214
+
215
+
216
+
217
+ $account = filter_input(INPUT_POST,'artname');
218
+
219
+ $array = array_column($result,'a_name');
220
+
221
+ $hit = in_array($account,$array)!==false;
222
+
223
+ if($hit){
224
+
225
+ print 1;
226
+
227
+ }else{
228
+
229
+ print 0;
230
+
231
+ };
232
+
233
+ exit;
234
+
235
+ ?>
236
+
237
+ ```
238
+
239
+ ```
240
+
241
+ mein.php
242
+
243
+ <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
244
+
245
+ <script>
246
+
247
+ $(function(){
248
+
249
+ $('#artname').on('keyup',function(e){
250
+
251
+ var val = $(this).val();
252
+
253
+ $.ajax({
254
+
255
+ type: "POST",
256
+
257
+ dataType:"text",
258
+
259
+ url: "pre.php",
260
+
261
+ data: {artname:val},
262
+
263
+ }).done(function(data){
264
+
265
+ if(data==="1"){
266
+
267
+ $("#message").text('データ有り').css({"color":"red"});
268
+
269
+ } else {
270
+
271
+ $("#message").text('データ無し').css({"color":"blue"});
272
+
273
+ }
274
+
275
+ });
276
+
277
+ });
278
+
279
+ });
280
+
281
+ </script>
282
+
283
+ <input type="text" name="artname" id="artname"><span id="message"></span>
284
+
285
+ ```

3

修正追記

2019/01/24 08:42

投稿

redkick
redkick

スコア17

test CHANGED
File without changes
test CHANGED
@@ -33,6 +33,8 @@
33
33
  非同期通信で値の取得について質問させて下さい。
34
34
 
35
35
 
36
+
37
+ ```
36
38
 
37
39
  メインphp
38
40
 
@@ -144,6 +146,8 @@
144
146
 
145
147
  echo '</rss>'."\n";
146
148
 
149
+ ```
150
+
147
151
 
148
152
 
149
153
  判定側で

2

コードを追記

2019/01/24 04:59

投稿

redkick
redkick

スコア17

test CHANGED
File without changes
test CHANGED
@@ -19,3 +19,145 @@
19
19
  教えていただけたら幸いです。
20
20
 
21
21
  よろしくお願い致します!
22
+
23
+
24
+
25
+ --------------------------------------------------------------------------
26
+
27
+ 追記1:
28
+
29
+
30
+
31
+ 空いた時間で試行錯誤しており遅くなってしまいましたが
32
+
33
+ 非同期通信で値の取得について質問させて下さい。
34
+
35
+
36
+
37
+ メインphp
38
+
39
+ <script type="text/javascript">
40
+
41
+ $(document).ready(function(){
42
+
43
+
44
+
45
+ $("#artname").keypress(function(ev) {
46
+
47
+ if ((ev.which && ev.which === 13) || (ev.keyCode && ev.keyCode === 13)) {
48
+
49
+ return false;
50
+
51
+ }
52
+
53
+ });
54
+
55
+
56
+
57
+ $(document).on('keyup',function(e){
58
+
59
+
60
+
61
+ var val = $("#artname").val(); //入力値を取得
62
+
63
+
64
+
65
+ $.ajax({
66
+
67
+ type: "POST",
68
+
69
+ url: "pre.php",
70
+
71
+ data: "artname="+val,
72
+
73
+ beforeSend: function(){
74
+
75
+ $("#message").html('<img src="何かしらのgif" />');
76
+
77
+ },
78
+
79
+ success: function(xml){
80
+
81
+ $(xml).find("item").each(function(){
82
+
83
+ var check = $(this).find("check").text();
84
+
85
+ if( check == 1 ){
86
+
87
+ $("#message").html('チェック有り').css({"color":"red"});
88
+
89
+ } else {
90
+
91
+ $("#message").html('チェック無し').css({"color":"blue"});
92
+
93
+ }
94
+
95
+ });
96
+
97
+ }
98
+
99
+ });
100
+
101
+ });
102
+
103
+ });
104
+
105
+ </script>
106
+
107
+
108
+
109
+ 判定側php
110
+
111
+ <?php
112
+
113
+ header("Content-type: application/xml");
114
+
115
+ echo '<?xml version="1.0" encoding="UTF-8" ?> ' . "\n";
116
+
117
+
118
+
119
+ $account = htmlspecialchars($_POST['artname'] , ENT_QUOTES , "UTF-8");
120
+
121
+ $array = array('aaa','bbb');
122
+
123
+ $hit = preg_match($account, $array);
124
+
125
+ if($hit){
126
+
127
+ }
128
+
129
+ if(!$hit){
130
+
131
+ });
132
+
133
+ endif;
134
+
135
+
136
+
137
+ echo '<rss>'."\n";
138
+
139
+ echo ' <item xml:space="preserve">'."\n";
140
+
141
+ echo ' <check>'.$check.'</check>'."\n";
142
+
143
+ echo ' </item>'."\n";
144
+
145
+ echo '</rss>'."\n";
146
+
147
+
148
+
149
+ 判定側で
150
+
151
+ $hit = array_search($account, $array);
152
+
153
+ if( $hit !== false ) :
154
+
155
+ $check = true;
156
+
157
+ であれば機能していたのですが、部分一致が最終目標で
158
+
159
+ preg_matchを自分なりに調べて当てはめてみたのですが
160
+
161
+ 何処がダメなのか分からなくなってしまいました。。
162
+
163
+ 助言いただけたらと思いますので、よろしくお願い致します。

1

途中送信のため追記致しました。

2019/01/24 02:44

投稿

redkick
redkick

スコア17

test CHANGED
File without changes
test CHANGED
@@ -15,3 +15,7 @@
15
15
  上記のような仕組みは可能でしょうか?
16
16
 
17
17
  また、固定文では無く入力した文字が含まれる物を表示させる事は可能か
18
+
19
+ 教えていただけたら幸いです。
20
+
21
+ よろしくお願い致します!