質問編集履歴
4
現在の問題点をより詳細に書きました。
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を利用しました。
title
CHANGED
File without changes
|
body
CHANGED
@@ -153,38 +153,10 @@
|
|
153
153
|
###補足情報
|
154
154
|
現在、ローカル開発環境でサイトを作っているので、サイトをそのまま見せることはできません。曖昧な部分が多いと思いますが、宜しくお願いします。
|
155
155
|
|
156
|
-
###修正2016/12/
|
156
|
+
###修正2016/12/31 16:56
|
157
|
-
|
158
|
-
|
157
|
+
Ajaxを使ってコードを書き直してみました。また、ファイルをjsとphpに分けました。今まで出ていたデータベースエラーはなくなりましたが、まだうまくいきません。以下がそのコードです。
|
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
|
-
|
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
|
-
<!
|
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リスト</
|
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
|
-
|
280
|
+
</body>
|
240
|
-
<
|
281
|
+
</html>
|
282
|
+
```
|
283
|
+
|
284
|
+
```php
|
241
|
-
|
285
|
+
function add_my_ajaxurl() {
|
242
|
-
$memo = filter_input(INPUT_POST,'memo');
|
243
|
-
|
286
|
+
?>
|
244
|
-
<script type="text/javascript" >
|
245
|
-
|
246
|
-
|
287
|
+
<script>
|
247
|
-
|
288
|
+
var ajaxurl = '<?php echo admin_url( 'admin-ajax.php'); ?>';
|
248
|
-
|
289
|
+
</script>
|
249
|
-
|
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 =
|
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
|
-
|
317
|
+
while ( bp_members() ) : bp_the_member();
|
318
|
+
|
319
|
+
global $wpdb,$bp;
|
320
|
+
$MyUserID = $bp->loggedin_user->id;
|
269
|
-
|
321
|
+
$memo = filter_input(INPUT_POST, 'memo');
|
270
|
-
if(!memo) return;
|
271
|
-
<?php
|
272
|
-
|
273
|
-
|
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
|
-
|
329
|
+
'%d',
|
330
|
+
'%s',
|
331
|
+
'%s'
|
280
|
-
)
|
332
|
+
)
|
281
333
|
);
|
282
|
-
|
283
|
-
?>
|
284
|
-
|
334
|
+
die();
|
335
|
+
endwhile ;
|
336
|
+
endif;
|
337
|
+
}
|
285
|
-
|
338
|
+
add_action( 'wp_ajax_SaveMyToDo', 'SaveMyToDo' );
|
286
339
|
|
340
|
+
|
287
|
-
|
341
|
+
function DeleteMyToDo(){
|
288
|
-
|
289
|
-
|
342
|
+
if ( bp_has_members( bp_ajax_querystring( 'members' ) ) ) :
|
343
|
+
while ( bp_members() ) : bp_the_member();
|
290
|
-
|
344
|
+
global $wpdb,$bp;
|
345
|
+
$MyUserID = $bp->loggedin_user->id;
|
291
|
-
|
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
|
-
|
352
|
+
die();
|
353
|
+
endwhile ;
|
299
|
-
|
354
|
+
endif;
|
300
|
-
|
301
|
-
|
355
|
+
}
|
302
|
-
</script>
|
303
|
-
</body>
|
304
|
-
</html>
|
305
|
-
|
356
|
+
add_action( 'wp_ajax_DeleteMyToDo', 'DeleteMyToDo' );
|
306
|
-
|
357
|
+
|
307
|
-
<?php endif ; ?>
|
308
358
|
```
|
2
修正2016/12/30 23:34 HTMLが2度表示される問題が解決しました。
title
CHANGED
File without changes
|
body
CHANGED
@@ -153,12 +153,10 @@
|
|
153
153
|
###補足情報
|
154
154
|
現在、ローカル開発環境でサイトを作っているので、サイトをそのまま見せることはできません。曖昧な部分が多いと思いますが、宜しくお願いします。
|
155
155
|
|
156
|
-
###修正
|
157
|
-
2016/12/30
|
156
|
+
###修正2016/12/30 23:34
|
158
|
-
|
157
|
+
|
159
|
-
まだデータベースからうまく情報を取り出せません。
|
160
|
-
しかし、「保存」ボタンを押した時に"user_id"と"meta_key"は正しく保存されるようになりました。(ただし、meta_valueは必ずnullになります。)
|
161
|
-
|
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
|
-
|
244
|
+
<script type="text/javascript" >
|
245
|
+
|
245
|
-
|
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
|
-
|
276
|
+
'meta_key' => 'ToDoList',
|
275
|
-
|
277
|
+
'meta_value' => $memo,
|
276
278
|
),
|
277
|
-
array(
|
278
|
-
|
279
|
+
array('%d', '%s', '%s'
|
279
280
|
)
|
280
281
|
);
|
281
282
|
|
1
2016/12/30 22:44 mizさんの回答を受けてコードを修正しました。詳しくは最後の「修正」をみてください。
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
|
+
```
|