前提・実現したいこと
PHPで下記のようなシステムを作っています。
・テキストボックスに検索する値を入力すると、一覧がDBからlike検索されて出てくる
・検索はselect文で行われ、一件ずつforeachで回して表示しています
そこで、javascriptを用いて、
aタグでリンクをクリックすればその値を別のテキストボックスに出力するようにしたいのですが、
phpの値を引数にするのは調べたところ一筋縄ではいかない様子です
試したこと
php
1 2 <?php 3if(isset($_POST['search'])){ 4 if($_POST['word']!=""){ 5 $sth = $pdo->prepare(" SELECT * from tracks where title like :word "); 6 $sth->bindValue(':word', '%'.$_POST['word'].'%', PDO::PARAM_STR); 7 8 $sth->execute(); 9 foreach($sth as $row) { 10 echo '<a href="javascript:void(0);" onclick="OnLinkClick();"> '.$row['title'].'</a>'; 11 echo $row['title']; 12 echo ' '; 13 if($row['grv']!=0){ 14 echo $row['grv']; 15 } 16 echo '<BR>'; 17 } 18 19 } 20} 21 ?> 22 23 24<form name="music"> 25<input type="text" name="txtbox" value=""> 26<?php 27 28$value="aaaa"; 29echo '<a href="javascript:void(0);" onclick="OnLinkClick();">内容を変更</a>'; 30?> 31</form> 32<script> 33function OnLinkClick(value) { 34document.music.txtbox.value=value; 35} 36</script> 37
ajaxやjson等を使うとできるなどとは一見して書いてありましたが、どうも理解ができず
forで回しているため、一件ずつ違う値をテキストボックスに入力する必要があります。
echoをうまく使って、引数に設定できないものでしょうか?
--追記
結局は>echo '<a href="javascript:void(0);" onclick="OnLinkClick();">内容を変更</a>';
のonlincclickの中に何をどうすれば
function内のvalueに値が行ってスクリプトが実行されるかが
分かればよく、その為にjavascriptやphp以外の別の何か(ajaxとかjquery等)
が必要なら実装難しそうだから別の方法にしようと思って質問した次第です。
もちろん動けばそれでいいのですがコードを直接お願いするのはどうかなとは思ったので・・・
当方プログラム経験も他人に質問する経験もあまりありませんのでテスト中のコード必要最低限は
乗せたと思うのですが足りなければ教えて下さい
---追記2
テキストボックスである必要はないですが、 最終的には、
3つの項目を”正確に”ユーザーが入力して、それをDBに格納する必要がある ってことなんですが、
値は部分一致で検索しないと表記ゆれがはげしく、IDもユーザーに知られてない通し番号なので、
フリーテキストにしてしまうと項目を特定できず、予期せぬエラーが発生しかねない と考えています。
その為、一度検索して、その値をコピーして見た目入力している風にしたいわけです。
(hidden属性にIDを登録したほうが確実でしょうが、それくらいのことは自分で出来そうなので)
ひとまず課題であるリストをaタグか何かでクリックでフォームをコントロールする際に、
先ほど出力したSQLのリストを使えないか、ということを疑問に思いました。
しかし、先ほども仰られたようにサーバーサイドとフロントサイドで
それぞれの処理分野が違うので 単に値を受け渡すだけでは動かない、と調べました。
併せて書かれていたことがajaxやjquery等の技術を使う実装で、
まったく未経験な分野の言語だったので、もっとシンプルに実装ができないか、
ということでこの質問に至りました。
(値を渡すくらいなら、echoで文字列出力して、それをそのまま引数として渡してしまったら出来るのではないかと思いましたが、エラーが出るか無反応になってしまうので)
<form name="addone"> <input type="text" name="title" value=""> <?php $value="tesuto"; ?> <?= $value ?> <a href="javascript:void(0);" onclick="OnLinkClick("<?= $value ?> ");">内容を変更</a> </form> <script> function OnLinkClick(value) { document.addone.title.value=value; } </script>
結果・・・内容を変更文字をクリックしても 変化起きず
aタグを次のように変更
<?= '<a href="javascript:void(0);" onclick="OnLinkClick(\" '. $value .' \");">内容を変更</a>' ?>
結果・・・変わらず
個人的には、新しい言語に触れる体力があまりないので、限定的でもいいのでjsとphpで終わらせてしまいたいですし、なにも要件さえ満たしていればそれこそこの形式じゃなくても大丈夫なんです。 長くなってしまいましたが、よろしくお願いします。

回答2件
あなたの回答
tips
プレビュー