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

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

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

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

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

解決済

2回答

2366閲覧

cloneされた行の配列番号を連番にしたい

test1234

総合スコア8

PHP

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

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

0クリップ

投稿2021/08/11 05:54

編集2021/08/16 05:10

■input要素「suryo」のフォーカスが外れたら1行追加するプログラムなのですが、追加された行の配列番号が最終行(クローン元)と同じ番号になってしまいます。javascriptでcloneする際に追加された行分行番号をプラスし、連番にしたいです。お手数ですが、ご教示お願い致します。

■下記のように、クローン処理で追加した行の配列番号が連番になるようにしたいです。(追記)

php

1<tr> 2<td><input type='text' name='h_code[1]' class='h_code' value = '$h_code[1]' ></td> 3<td><input type='text' name='name[1]' class='name' value = '$name[1]' ></td> 4<td><input type='text' name='suryo[1]' class='suryo' value = '$suryo[1]' ></td> 5</tr> 6<!-- クローン追加x行目 --> 7<tr> 8<td><input type='text' name='h_code[2]' class='h_code' value = '$h_code[2]' ></td> 9<td><input type='text' name='name[2]' class='name' value = '$name[2]' ></td> 10<td><input type='text' name='suryo[2]' class='suryo' value = '$suryo[2]' ></td> 11</tr> 12<!-- クローン追加x行目 --> 13<tr> 14<td><input type='text' name='h_code[3]' class='h_code' value = '$h_code[3]' ></td> 15<td><input type='text' name='name[3]' class='name' value = '$name[3]' ></td> 16<td><input type='text' name='suryo[3]' class='suryo' value = '$suryo[3]' ></td> 17</tr> 18・・・・追加行数($count)分・・・・・ 19 20<!-- クローン追加x行目 --> 21<tr> 22<td><input type='text' name='h_code[$i]' class='h_code' value = '$h_code[$i]' ></td> 23<td><input type='text' name='name[$i]' class='name' value = '$name[$i]' ></td> 24<td><input type='text' name='suryo[$i]' class='suryo' value = '$suryo[$i]' ></td> 25</tr>

javascript

1 $('input.suryo').on('blur', function(){ 2 $('#tbl tbody tr:last-of-type').clone(true,true).find('input').val('').end().appendTo('#tbl tbody'); 3 });

■下記全文

php

1<?PHP 2$h_code=filter_input(INPUT_POST,'h_code',FILTER_DEFAULT,FILTER_REQUIRE_ARRAY); 3$name=filter_input(INPUT_POST,'name',FILTER_DEFAULT,FILTER_REQUIRE_ARRAY); 4$suryo=filter_input(INPUT_POST,'suryo',FILTER_DEFAULT,FILTER_REQUIRE_ARRAY); 5$count=is_array($h_code)?count($h_code):1; 6 7echo" 8<script> 9document.addEventListener('formdata',e=>{ 10 e.formData.append('focus',document.activeElement.name); 11}); 12</script> 13 14<script src='https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js'></script> 15<script> 16$(function(){ 17 $('input.suryo').on('blur', function(){ 18 $('#tbl tbody tr:last-of-type').clone(true,true).find('input').val('').end().appendTo('#tbl tbody'); 19 }); 20}); 21</script> 22 23<form method='POST'> 24<table id='tbl'> 25<thead> 26<tr><th>コード</th><th>名前</th><th>数量</th></tr> 27</thead> 28<tbody> 29"; 30 31for($i=0;$i<$count;$i++){ 32 33 echo " 34 <tr> 35 <td>".$i."<input type='text' name='h_code[]' class='h_code' value = '$h_code[$i]' ></td> 36 <td><input type='text' name='name[]' class='name' value = '$name[$i]' ></td> 37 <td><input type='text' name='suryo[]' class='suryo' value = '$suryo[$i]' ></td> 38 </tr> 39 "; 40 41} 42 43echo" 44 </tbody> 45</table> 46<input type='submit' value='保存'> 47</form> 48"; 49?>

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

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

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

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

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

Waki285

2021/08/11 05:56

PHPタグもつけたほうがよろしいかと。 (質問を編集してタグを付け加えることができます)
test1234

2021/08/11 05:58

失礼しました。追加いたしました。
int32_t

2021/08/11 07:34

質問内の画像は実際にやりたいことではない、ということですか? 何を連番にしたいのでしょうか?
test1234

2021/08/11 07:37

配列の番号です。例として$h_code[$i]の$iは追加した行分、配列の番号が0,1,2,3・・と続くはずですが、上記cloneで追加するとクローン元の配列番号が引き継がれてしまいます(画像の番号です)。それを追加した行数順に連番にしたいです。
int32_t

2021/08/11 08:59 編集

まだ何が連番になってほしいのか理解できません。 配列はPHPにだけ存在して、クライアントにはありませんよね? 「配列の番号」は「<td>".$i」で行の先頭につけているもの以外にクライアントには渡してないように見えるのですが。 クローン処理によって、どういうHTMLが追加されてほしいのか書いていただけますか?
test1234

2021/08/16 00:35 編集

質問文に追加したいHTMLを追記しました。nameとvalueをclone処理でも連番になるようにしたいです。
int32_t

2021/08/16 00:26

追加情報は質問文に追記してください。 クライアント側で項目を増やす話をしているのに「value = '$h_code[$i]' 」とPHPの変数名のようなものが出てくるのがおかしく感じます。ここはユーザに '$h_code[$i]' という値が入った <input> を見せたいのですか?
test1234

2021/08/16 00:33

>>ここはユーザに '$h_code[$i]' という値が入った <input> を見せたいのですか? はい、おっしゃる通りです。
guest

回答2

0

自己解決

下記を参考に解決しました。
https://www.flatflag.nir87.com/index-2026

投稿2021/08/19 07:04

test1234

総合スコア8

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

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

0

こういうのはCSSでやりましょう。

PHP:
<td>".$i."<input ...<td><input ... に修正

スタイルシートを追加:

css

1:root { 2 counter-reset: item -1; 3} 4 5#tbl tbody td:nth-of-type(1):before { 6 content: counter(item); 7 counter-increment: item; 8}

投稿2021/08/11 06:16

int32_t

総合スコア21695

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

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

test1234

2021/08/11 06:21 編集

あ、すみません、今表示している番号は仮で配列番号を表示しているだけで、あくまで配列番号を連番にしたいという意味です。なので、「<td>".$i."<input ...」の「".$i."」は何れ消します。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問