• 締切済み

リンクの制御と値を渡すには?

ショッピングカートを作っており商品の並び替えを実装させたく 新着順,価格の安い,価格の高い順でソートさせたく思っております。 基本的にphpとmysqlで行うのですがリンクの制御についてはjsに なるものかと思い方法について悩んでおります。 説明が難しいのですがやりたい事は以下の通りです。 1.デフォルトの並び順の時は並び替えのリンクはクリックできる状態 2.新着順で並び変えた場合、他の並び順になるまで新着順のリンクはクリックできない (他の並び順の場合も同様) 3.新着順であればflg=1、価格の安い順であればflg=2、価格の高い順であればflg=3 のようにphpに任意の値を渡したい この値によりphpで条件を設定しそれぞれのsql文で実行したいと 思っているのですがjsの部分が全くわからずなのですがどのように すればいいものでしょうか? 他の部分ではありますがjqueryを使用しておりこれを利用し簡単に 実装できないものかと探してみたのですが情報が見つかりませんでした。 絶対にjqueryを利用してという事ではないのですがおわかりになる方が いらっしゃいましたら宜しくお願い致します。

みんなの回答

  • fujillin
  • ベストアンサー率61% (1594/2576)
回答No.2

PEARはよく知りませんが… >hoge.com/products/2/1/1/のようにパラメーターが増えて >いってしまいます って、それが、予定の処理なのでしょうか? products/の後がPageで、その次の/の後はflagというように、規則性がないとどうなってしまうのでしょうか?? というか、hoge.com/products/2/はhoge.com/products/index.php?page=2に戻しているとか、あるいはhoge.com/products/2/1/1/はhoge.com/products/2/1/に戻るようにはなっていないのでしょうか? (サーバ側では、一つのphpで処理をしているのではないのでしょうか?) >phpでif,elseを用いてリンク制御すればクリアできそうな問題 >なのですがjsで制御できないものと思い質問させて頂きました。 もちろん、jsでも制御可能ですが、if,elseを用いて制御することに変わりはありません。(同じことをやるのですから) さらには、ブラウザの表示内容を書き換えてしまう(ページ移動する)のであれば、送信前のページのスクリプトで制御しても、その後に書き換えられてしまうので、新しい(phpから送る)ソース内にスクリプトがあって、そこにパラメータを渡してあげる必要が出てきます。それなので、phpで処理してしまったほうが簡単に思えるのですが?(javascript不要になりますし) phpからの表示が一部分のみ(フレームなどを用いて)の書き換えなどの場合であれば、書き換えのないメニュー(?)のリンク部分の処理等はjavascriptで行った方がよさそうには思えますけど。

  • fujillin
  • ベストアンサー率61% (1594/2576)
回答No.1

並び替えなどはサーバ側(phpなど)で行うのですよね? 結果を再表示するのでしょうから、通常のリンクにサーチ部分を指定することでデータを送信することが可能です。  http://www.yyy.zzz/aaa/bbb.php?flg=1 これだと、普通のリンクなのでjavascriptは不要。 ただし、ブラウザのアドレス欄にサーチ部分も表示されることになります。 (ご質問の内容の場合、表示されてもあまり問題なさそうですが) 表示されないようにするなら、hiddenのformを用意しておいて、スクリプトで これに値をセットしてsubmitする方法が簡単。  <form action="~~" method="post" id="form0">   <input type="hidden" name="flg">  </form> <script> var f=document.getElementById('form0'); f.elements('flg').value=2; f.submit(); </script> みたいな感じ。 Ajaxでやるのもないことはないけど、結果を再表示するのだから、わざわざ面倒な方法を使う必要もないでしょう。 並び替え用のリンクのクリックの可/不可もphp側で処理して送ればよいので、javascriptでやる必要もないでしょう。

dcx147
質問者

補足

お返事ありがとうございます。 >並び替えなどはサーバ側(phpなど)で行うのですよね? 予定としてはjsでphpに任意の値を送り値を判別し適切なsql文を 作成し並び替えはphpで行います。 ややこしいのですがPEARのページャーでページング処理をしておりurlが デフォルト:hoge.com/products/index.php 1ページ目:hoge.com/products/index.php?page=1 2ページ目:hoge.com/products/index.php?page=2 のようなurlになるのですがmod_rewriteで実際にブラウザに表示されるのは デフォルト:hoge.com/products/ 2ページ目:hoge.com/products/1/ 2ページ目:hoge.com/products/2/ のようなurlになります。 例えば<a href="flg=1">新着順</a>のようにそれぞれにパラメーターを つけるとhoge.com/products/2/1/のようなurlになるのですがこの状態で さらに新着順をクリックするとhoge.com/products/2/1/1/のように パラメーターが増えていってしまいます。 >並び替え用のリンクのクリックの可/不可もphp側で処理して送ればよいので、javascriptでやる必要もないでしょう。 確かにphpでif,elseを用いてリンク制御すればクリアできそうな問題 なのですがjsで制御できないものと思い質問させて頂きました。

関連するQ&A