質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

Q&A

2回答

1289閲覧

jquery 連番のidを取得する

kpg

総合スコア23

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

0グッド

0クリップ

投稿2019/10/07 02:52

いいねボタンを押したらいいね数が増える機能を実装しております。

いいねボタンがidが連番で並んでいるのですが、連番になっているidをjqueryで取得する場合、

どうすればいいかわからず詰んでいます。

PHP

1<div class="icon_cow" style="margin:0;"> 2 <input class="likeButton" type="image" src="<?php echo ROOT_PATH; ?>images/PFClogo_ushi.jpg" onclick="" 3 style="margin:0; width:24px; height:24px; margin:0; margin-left:3px; border:none;"> 4 <input type="hidden" name="auto_id" value="<?php echo $value['auto_id']; ?>"> 5 <?php foreach($driversId as $id) ?> 6 <input type="hidden" name="voter_id" value="<?php echo $id; ?>"> 7 <input type="hidden" name="submitter_id" value="<?php echo $value['driver_id']; ?>"> 8 <i class="far fa-thumbs-up"></i> 9 <?php 10 try { 11 $dbh = new PDO('mysql:host='.DB_HOST.';dbname='.DB_NAME, DB_USER, DB_PASSWORD, $options); 12 $dbh->query('SET NAMES utf8'); 13 14 // m_like_masterからauto_idに紐づいたlike_idの数をカウントし取得。 AS counted を引数にしています 15 $sql = "SELECT COUNT(like_id) AS counted FROM m_like_master 16 WHERE auto_id= " . $value['auto_id']; 17 18 $stmt = $dbh->prepare($sql); 19 $stmt->execute(); 20 $countResult = $stmt->fetch(PDO::FETCH_ASSOC); 21 $current_like_count = $countResult['counted']; 22 23 $dbh = null; 24 25 } catch (PDOException $e) { 26 exit('顧客データベース接続失敗。'.$e->getMessage()); 27 } ?> 28 <!-- いいね数の表示 --> 29 <p id="like_result<?php echo $i; ?>" class="like_result"><?php echo $current_like_count; ?></p> 30

上記のコードで、<p id="like_result<?php echo $i; ?>" がidが連番で並んでいます。

jQeury

1let likeButton = $(".likeButton").each(function(i){ 2 $(this).attr('id','likeButton' + (i+1)); 3}); 4 5let likeResult = $('#like_result').each(function(i){ 6 $(this).attr('id', 'like_result' + (i + 1)); 7 }); 8 9 10likeButton.on('click', function(e){ 11 console.log(e) 12 let $_parent = $( this ).closest( '.icon_cow' ); 13 $.ajax({ 14 type: 'POST', 15 url: "sales_report_like_done_ajaxPost.php", 16 data: { 17 auto_id : $_parent.find("input[name=auto_id]").val(), 18 voter_id : $_parent.find("input[name=voter_id]").val(), 19 submitter_id : $_parent.find("input[name=submitter_id]").val(), 20 } 21 }); 22 likeResult.text( Number(likeResult.text()) + 1 ); 23 console.log(likeResult); 24 return false; 25}); 26 27

どうぞよろしくお願いします。

補足情報(FW/ツールのバージョンなど)

・バージョン
PHP 7.1.23
mysql 5.6.43

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yambejp

2019/10/07 02:55

> いいねボタンがidが連番で並んでいる について連番状態がどうなっているかHTMLで提示ください また取得したものをどうしたいのか記載ください。 仮に1,2と4,5があったら連番が2つ存在しますが、そういう ことが無いことは保証されるのでしょうか?
kpg

2019/10/07 03:12

yambejp様 htmlでは、#like_result1, #like_result2, #like_result3という風になっています。 jqueryで#like_resultの数字にプラス1するという処理をしたいです。 連番が2つ存在することはないです。 よろしくお願いします。
yambejp

2019/10/07 03:25 編集

10以上になることは無いですか? その場合でも#like_result1、#like_result10のように桁あわせを しないのでしょうか?(桁をあわせると#like_result01になる) > jqueryで#like_resultの数字にプラス1 それって普通クライアント側ではなく サーバーサイドの出力時にする処理では? (実際phpで$iを出力してますよね?)
kpg

2019/10/07 03:25

10以上になることはあります。 今見たところ、10以上は#like_result10, #like_result11 となっています。
guest

回答2

0

like_resultの数字にプラス1

PHP

1<?php echo $i; ?> 2↓↓↓ 3<?php echo ($i+1); ?>

ではダメですか?

sample

javascript

1<script> 2$(function(){ 3 $('[id^=like_result]').map(function(){ 4 return parseInt($(this).attr('id').replace(/^like_result/g,'')); 5 }).get().sort((x,y)=>-x+y).forEach(x=>$('#like_result'+x).attr('id','like_result'+(x+1).toString())); 6}); 7</script> 8 9<p id="like_result9">test9</p> 10<p id="like_result10">test10</p> 11<p id="like_result11">test11</p>

投稿2019/10/07 03:26

編集2019/10/07 03:41
yambejp

総合スコア114843

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kpg

2019/10/07 03:33

すいません、私の記述が足りていませんでした。 like_resultに当てている $i はもともと $i = 1 から始めています。 また、念の為いただいた方法でもしてみたのですがダメした。。。 consoleでは w.fn.init() と表示されています。
yambejp

2019/10/07 03:42 編集

結局何をどうしたいのかわからないですね・・・ 一応sampleつけときました
guest

0

いいね数を増やすときに、いいねボタンに対応するp要素を取得したい感じですかね?
クラスlike_resultがいいね数の表示要素に付いているように見えるので、下記のコードで取れると思います。

js

1$('.like_result').each(function(i){ 2 $(this).attr('id'); 3}); 4

投稿2019/10/07 03:44

zushi0905

総合スコア683

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問