teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

4

現在の問題点をより詳細に書きました。

2016/12/31 09:01

投稿

SoraSue
SoraSue

スコア30

title CHANGED
File without changes
body CHANGED
@@ -154,7 +154,8 @@
154
154
  現在、ローカル開発環境でサイトを作っているので、サイトをそのまま見せることはできません。曖昧な部分が多いと思いますが、宜しくお願いします。
155
155
 
156
156
  ###修正2016/12/31 16:56
157
- Ajaxを使ってコードを書き直してみました。また、ファイルをjsとphpに分けました。今まで出ていたデータベースエラーはなくなりましたが、まだうまくいきません。以下がそのコードです。
157
+ Ajaxを使ってコードを書き直してみました。また、ファイルをjsとphpに分けました。今まで出ていたデータベースエラーはなくなりましたが、まだ
158
+ データベースからデータを取得・削除したり、データベースに入力されたデータを追加したりできません。以下がそのコードです。
158
159
  ```javascript
159
160
  <!DOCTYPE HTML>
160
161
  <html>

3

ファイルをjavascriptとphpに分けて、ajaxを利用しました。

2016/12/31 09:01

投稿

SoraSue
SoraSue

スコア30

title CHANGED
File without changes
body CHANGED
@@ -153,38 +153,10 @@
153
153
  ###補足情報
154
154
  現在、ローカル開発環境でサイトを作っているので、サイトをそのまま見せることはできません。曖昧な部分が多いと思いますが、宜しくお願いします。
155
155
 
156
- ###修正2016/12/30 23:34
156
+ ###修正2016/12/31 16:56
157
-
158
- HTMLが2回表示される問題はwhileープの位置変えるこで解決しました。教えくださっmizさん、ありがございます。
157
+ Ajaxを使ってコードを書き直してみました。またファイルをjsphpに分けました。今まで出データベースエラーはなくなました、まだまくせん。以下がそのコードです。
159
- 以下が変更したコードです。whileループを<script>の前に持って行きました。
160
- ```php
161
- <?php
162
- ini_set( 'display_errors', 1 );
163
- if ( bp_has_members( bp_ajax_querystring( 'members' ) ) ) :
164
- while ( bp_members() ) : bp_the_member();
165
-
166
- global $wpdb;
167
- global $bp;
158
+ ```javascript
168
- $wpdb->show_errors();
169
- $wpdb->print_error();
170
- /*$wpdb->get_results(
171
- "SELECT id, user_id, field_id, value, last_updated FROM $wpdb->bp_xprofile_data WHERE field_id = 1 AND user_id IN (1)"
172
- );*/
173
- //$wpdb->query( "SELECT user_id, meta_key, meta_value FROM $wpdb->usermeta "
174
- // . "WHERE meta_key IN ('total_friend_count','bp_latest_update') AND user_id IN (1,3)"
175
- //$MyUserID = $bp->loggedin_user->id;
176
- /*$prepared_sql = $wpdb->prepare(
177
- ”INSERT INTO $wpdb->usermeta
178
- ( user_id, user_key, user_value )
179
- VALUES ( %d, %s, %s )“,
180
- $MyUserID,
181
- $userkey,
182
- $uservalue
183
- );*/
184
-
185
- ?>
186
-
187
- <!doctype html>
159
+ <!DOCTYPE HTML>
188
160
  <html>
189
161
  <head>
190
162
  <meta charset="UTF-8">
@@ -221,88 +193,166 @@
221
193
 
222
194
 
223
195
  </style>
196
+ <script type="text/javascript" src=jquery1.10.1.min.js></script>
197
+ <script type="text/javascript" >
198
+
199
+ (function () {
200
+ function MakeLi(){
201
+
202
+
203
+
204
+ $.ajax({
205
+ type: 'POST',
206
+ url: ajaxurl,
207
+ data: {
208
+ 'action' : 'GetMyToDo',
209
+
210
+ },
211
+ success: function( response ){
212
+ var MyToDoList = response;
213
+ var MyToDo = MyToDoList.split(",");
214
+ $.each(MyToDo, function() {
215
+ $(".ToDo_Ul").prepend("<li class='todo'>" + this + "</li>");
216
+ });
217
+ },
218
+
219
+
220
+ });
221
+
222
+
223
+ };
224
+ MakeLi();
225
+
226
+ $('#save').click(function(){
227
+ var memo = $('#memo').val();
228
+ if(!memo) return;
229
+ $.ajax({
230
+ type: 'POST',
231
+ url: ajaxurl,
232
+ data: {
233
+ 'action' : 'SaveMyToDo',
234
+
235
+ },
236
+ success: function( response ){
237
+ }
238
+
239
+
240
+ });
241
+ MakeLi();
242
+ $('memo').val('');
243
+
244
+ });
245
+
246
+ $('.ToDo_Ul').on('click', '.todo', function(){
247
+ $.ajax({
248
+ type: 'POST',
249
+ url: ajaxurl,
250
+ data: {
251
+ 'action' : 'DeleteMyToDo',
252
+
253
+ },
254
+ success: function( response ){
255
+ }
256
+
257
+
258
+ });
259
+ MakeLi();
260
+ });
261
+
262
+ }());
263
+ </script>
224
264
  </head>
225
265
  <body>
226
-
227
266
  <div id="container">
228
- <h2 class="ExplainToDo">続くToDoリスト</h4>
267
+ <h2 class="ExplainToDo">続くToDoリスト</h2>
229
268
  <h6 class="ExplainToDo">*クリックするとそのタスクは消えます。</h6>
269
+ <form action="bp-custom.php" method="post">
230
270
  <textarea id="memo" name="memo"></textarea>
231
271
  <p>
232
272
  <input type="button" id="save" value="保存">
233
273
  <input type="button" id="clear" value="全消去">
234
274
  </p>
275
+ </form>
235
276
  <ul class="ToDo_Ul">
236
277
 
237
278
  </ul>
238
279
  </div>
239
- <script type="text/javascript" src=jquery1.10.1.min.js></script>
280
+ </body>
240
- <?php while ( bp_members() ) : bp_the_member();
281
+ </html>
282
+ ```
283
+
284
+ ```php
241
- $MyUserID = bp_displayed_user_id();
285
+ function add_my_ajaxurl() {
242
- $memo = filter_input(INPUT_POST,'memo');
243
- ?>
286
+ ?>
244
- <script type="text/javascript" >
245
-
246
- $(function () {
287
+ <script>
247
-
288
+ var ajaxurl = '<?php echo admin_url( 'admin-ajax.php'); ?>';
248
- function MakeLi(){
289
+ </script>
249
- <?php
290
+ <?php
291
+ }
292
+ add_action( 'wp_head', 'add_my_ajaxurl', 1 );
293
+
294
+ function GetMyToDo(){
295
+ if ( bp_has_members( bp_ajax_querystring( 'members' ) ) ) :
296
+ while ( bp_members() ) : bp_the_member();
297
+
298
+ global $wpdb,$bp;
299
+ $MyUserID = $bp->loggedin_user->id;
250
300
  $MyToDo = $wpdb->get_results("
251
301
  SELECT meta_value
252
302
  FROM $wpdb->usermeta
253
- WHERE user_id = $MyUserID
303
+ WHERE user_id = '".$MyUserID."'
254
- AND meta_key = ToDoList
304
+ AND meta_key = 'ToDoList'
255
305
  ", ARRAY_A );
256
306
  $MyToDoList = join(",",$MyToDo->meta_value);
257
-
307
+ echo $MyToDoList;
308
+ die();
309
+ endwhile ;
310
+ endif;
311
+ }
312
+ add_action( 'wp_ajax_GetMyToDo', 'GetMyToDo' );
258
313
 
259
- ?>
260
- var MyToDoList = "<?= $MyToDoList?>";
261
- var MyToDo = MyToDoList.split(",");
262
- $.each(MyToDo, function() {
263
- $(".ToDo_Ul").prepend("<li class='todo'>" + this + "</li>");
264
- });
265
- }
266
- MakeLi();
267
314
 
315
+ function SaveMyToDo(){
316
+ if ( bp_has_members( bp_ajax_querystring( 'members' ) ) ) :
268
- $('#save').click(function(){
317
+ while ( bp_members() ) : bp_the_member();
318
+
319
+ global $wpdb,$bp;
320
+ $MyUserID = $bp->loggedin_user->id;
269
- var memo = $('#memo').val();
321
+ $memo = filter_input(INPUT_POST, 'memo');
270
- if(!memo) return;
271
- <?php
272
-
273
- $wpdb->insert($wpdb->usermeta,
322
+ $wpdb->insert($wpdb->usermeta,
274
- array(
323
+ array(
275
- 'user_id' => $MyUserID,
324
+ 'user_id' => '".$MyUserID."',
276
325
  'meta_key' => 'ToDoList',
277
- 'meta_value' => $memo,
326
+ 'meta_value' => '".$memo."'
278
- ),
327
+ ),
328
+ array(
279
- array('%d', '%s', '%s'
329
+ '%d',
330
+ '%s',
331
+ '%s'
280
- )
332
+ )
281
333
  );
282
-
283
- ?>
284
- MakeLi();
334
+ die();
335
+ endwhile ;
336
+ endif;
337
+ }
285
- $('memo').val('');
338
+ add_action( 'wp_ajax_SaveMyToDo', 'SaveMyToDo' );
286
339
 
340
+
287
- });
341
+ function DeleteMyToDo(){
288
-
289
- $('.ToDo_Ul').on('click', '.todo', function(){
342
+ if ( bp_has_members( bp_ajax_querystring( 'members' ) ) ) :
343
+ while ( bp_members() ) : bp_the_member();
290
- <?php
344
+ global $wpdb,$bp;
345
+ $MyUserID = $bp->loggedin_user->id;
291
- $wpdb->delete( $wpdb->usermeta,
346
+ $wpdb->delete( $wpdb->usermeta,
292
- array( 'user_id' => $MyUserID,
347
+ array( 'user_id' => '".$MyUserID."',
293
348
  'meta_key' => 'ToDoList',
294
- 'meta_value' => this
349
+ 'meta_value' => '".this."'
295
- ),
350
+ ),
296
351
  array( '%d', '%s', '%s') );
297
- ?>
298
- MakeLi();
352
+ die();
353
+ endwhile ;
299
- });
354
+ endif;
300
-
301
- }
355
+ }
302
- </script>
303
- </body>
304
- </html>
305
- <?php endwhile ; ?>
356
+ add_action( 'wp_ajax_DeleteMyToDo', 'DeleteMyToDo' );
306
- <?php else : ?>
357
+
307
- <?php endif ; ?>
308
358
  ```

2

修正2016/12/30 23:34  HTMLが2度表示される問題が解決しました。

2016/12/31 08:13

投稿

SoraSue
SoraSue

スコア30

title CHANGED
File without changes
body CHANGED
@@ -153,12 +153,10 @@
153
153
  ###補足情報
154
154
  現在、ローカル開発環境でサイトを作っているので、サイトをそのまま見せることはできません。曖昧な部分が多いと思いますが、宜しくお願いします。
155
155
 
156
- ###修正
157
- 2016/12/30 22:44
156
+ ###修正2016/12/30 23:34
158
- mizさんの回答を受けてコードを修正しました。
157
+
159
- まだデータベースからうまく情報を取り出せません。
160
- しかし、「保存」ボタンを押した時に"user_id"と"meta_key"は正しく保存されるようになりました。(ただし、meta_valueは必ずnullになります。)
161
- また、html全体上下に2回表示されるようになりました。つまり、ToDoリストのテキストボックスやボタンなどが全2個表示れています。
158
+ HTMLが2回表示される問題は、whileループの位置を変えることで解決しました。教えくだったmizさん、ありがとうございます。
159
+ 以下が変更したコードです。whileループを<script>の前に持って行きました。
162
160
  ```php
163
161
  <?php
164
162
  ini_set( 'display_errors', 1 );
@@ -175,8 +173,6 @@
175
173
  //$wpdb->query( "SELECT user_id, meta_key, meta_value FROM $wpdb->usermeta "
176
174
  // . "WHERE meta_key IN ('total_friend_count','bp_latest_update') AND user_id IN (1,3)"
177
175
  //$MyUserID = $bp->loggedin_user->id;
178
- $MyUserID = bp_displayed_user_id();
179
- $memo = filter_input(INPUT_POST,'memo');
180
176
  /*$prepared_sql = $wpdb->prepare(
181
177
  ”INSERT INTO $wpdb->usermeta
182
178
  ( user_id, user_key, user_value )
@@ -241,8 +237,14 @@
241
237
  </ul>
242
238
  </div>
243
239
  <script type="text/javascript" src=jquery1.10.1.min.js></script>
240
+ <?php while ( bp_members() ) : bp_the_member();
241
+ $MyUserID = bp_displayed_user_id();
242
+ $memo = filter_input(INPUT_POST,'memo');
243
+ ?>
244
- <script type="text/javascript" >
244
+ <script type="text/javascript" >
245
+
245
- $(function () {
246
+ $(function () {
247
+
246
248
  function MakeLi(){
247
249
  <?php
248
250
  $MyToDo = $wpdb->get_results("
@@ -271,11 +273,10 @@
271
273
  $wpdb->insert($wpdb->usermeta,
272
274
  array(
273
275
  'user_id' => $MyUserID,
274
- 'meta_key' => 'ToDoList',
276
+ 'meta_key' => 'ToDoList',
275
- 'meta_value' => $memo,
277
+ 'meta_value' => $memo,
276
278
  ),
277
- array(
278
- '%d', '%s', '%s'
279
+ array('%d', '%s', '%s'
279
280
  )
280
281
  );
281
282
 

1

2016/12/30 22:44 mizさんの回答を受けてコードを修正しました。詳しくは最後の「修正」をみてください。

2016/12/30 14:44

投稿

SoraSue
SoraSue

スコア30

title CHANGED
File without changes
body CHANGED
@@ -151,4 +151,157 @@
151
151
  SELECT id, user_id, field_id, value, last_updated FROM WHERE field_id = 1 AND user_id IN (1)
152
152
  ```
153
153
  ###補足情報
154
- 現在、ローカル開発環境でサイトを作っているので、サイトをそのまま見せることはできません。曖昧な部分が多いと思いますが、宜しくお願いします。
154
+ 現在、ローカル開発環境でサイトを作っているので、サイトをそのまま見せることはできません。曖昧な部分が多いと思いますが、宜しくお願いします。
155
+
156
+ ###修正
157
+ 2016/12/30 22:44
158
+ mizさんの回答を受けてコードを修正しました。
159
+ まだデータベースからうまく情報を取り出せません。
160
+ しかし、「保存」ボタンを押した時に"user_id"と"meta_key"は正しく保存されるようになりました。(ただし、meta_valueは必ずnullになります。)
161
+ また、html全体が上下に2回表示されるようになりました。つまり、ToDoリストのテキストボックスやボタンなどが全て2個表示されています。
162
+ ```php
163
+ <?php
164
+ ini_set( 'display_errors', 1 );
165
+ if ( bp_has_members( bp_ajax_querystring( 'members' ) ) ) :
166
+ while ( bp_members() ) : bp_the_member();
167
+
168
+ global $wpdb;
169
+ global $bp;
170
+ $wpdb->show_errors();
171
+ $wpdb->print_error();
172
+ /*$wpdb->get_results(
173
+ "SELECT id, user_id, field_id, value, last_updated FROM $wpdb->bp_xprofile_data WHERE field_id = 1 AND user_id IN (1)"
174
+ );*/
175
+ //$wpdb->query( "SELECT user_id, meta_key, meta_value FROM $wpdb->usermeta "
176
+ // . "WHERE meta_key IN ('total_friend_count','bp_latest_update') AND user_id IN (1,3)"
177
+ //$MyUserID = $bp->loggedin_user->id;
178
+ $MyUserID = bp_displayed_user_id();
179
+ $memo = filter_input(INPUT_POST,'memo');
180
+ /*$prepared_sql = $wpdb->prepare(
181
+ ”INSERT INTO $wpdb->usermeta
182
+ ( user_id, user_key, user_value )
183
+ VALUES ( %d, %s, %s )“,
184
+ $MyUserID,
185
+ $userkey,
186
+ $uservalue
187
+ );*/
188
+
189
+ ?>
190
+
191
+ <!doctype html>
192
+ <html>
193
+ <head>
194
+ <meta charset="UTF-8">
195
+ <title></title>
196
+ <style type="text/css">
197
+ #container{
198
+ margin: 0 auto;
199
+ width: 60%;
200
+ }
201
+ #memo{
202
+ width: 100%;
203
+
204
+ }
205
+ .content{
206
+ float: left;
207
+ width: 90%;
208
+ word-wrap: break-word;
209
+
210
+ }
211
+
212
+ h6{
213
+ color: red;
214
+ }
215
+ li{
216
+ list-style: decimal;
217
+ }
218
+ .MainWelcome{
219
+
220
+
221
+ }
222
+ .ExplainToDo{
223
+ text-align: center;
224
+ }
225
+
226
+
227
+ </style>
228
+ </head>
229
+ <body>
230
+
231
+ <div id="container">
232
+ <h2 class="ExplainToDo">続くToDoリスト</h4>
233
+ <h6 class="ExplainToDo">*クリックするとそのタスクは消えます。</h6>
234
+ <textarea id="memo" name="memo"></textarea>
235
+ <p>
236
+ <input type="button" id="save" value="保存">
237
+ <input type="button" id="clear" value="全消去">
238
+ </p>
239
+ <ul class="ToDo_Ul">
240
+
241
+ </ul>
242
+ </div>
243
+ <script type="text/javascript" src=jquery1.10.1.min.js></script>
244
+ <script type="text/javascript" >
245
+ $(function () {
246
+ function MakeLi(){
247
+ <?php
248
+ $MyToDo = $wpdb->get_results("
249
+ SELECT meta_value
250
+ FROM $wpdb->usermeta
251
+ WHERE user_id = $MyUserID
252
+ AND meta_key = ‘ToDoList’
253
+ ", ARRAY_A );
254
+ $MyToDoList = join(",",$MyToDo->meta_value);
255
+
256
+
257
+ ?>
258
+ var MyToDoList = "<?= $MyToDoList?>";
259
+ var MyToDo = MyToDoList.split(",");
260
+ $.each(MyToDo, function() {
261
+ $(".ToDo_Ul").prepend("<li class='todo'>" + this + "</li>");
262
+ });
263
+ }
264
+ MakeLi();
265
+
266
+ $('#save').click(function(){
267
+ var memo = $('#memo').val();
268
+ if(!memo) return;
269
+ <?php
270
+
271
+ $wpdb->insert($wpdb->usermeta,
272
+ array(
273
+ 'user_id' => $MyUserID,
274
+ 'meta_key' => 'ToDoList',
275
+ 'meta_value' => $memo,
276
+ ),
277
+ array(
278
+ '%d', '%s', '%s'
279
+ )
280
+ );
281
+
282
+ ?>
283
+ MakeLi();
284
+ $('memo').val('');
285
+
286
+ });
287
+
288
+ $('.ToDo_Ul').on('click', '.todo', function(){
289
+ <?php
290
+ $wpdb->delete( $wpdb->usermeta,
291
+ array( 'user_id' => $MyUserID,
292
+ 'meta_key' => 'ToDoList',
293
+ 'meta_value' => this
294
+ ),
295
+ array( '%d', '%s', '%s') );
296
+ ?>
297
+ MakeLi();
298
+ });
299
+
300
+ }
301
+ </script>
302
+ </body>
303
+ </html>
304
+ <?php endwhile ; ?>
305
+ <?php else : ?>
306
+ <?php endif ; ?>
307
+ ```