
こんにちは。php+mysqlで検索サイトを作っているんですが、初心者であり、スクリプトの書き方で困ってます。
「まず検索されたデータをweb上に表示させる。
表示された表のヘッダ部分(各名称)をクリックすると、表示されたものがソートされる。」
以前、各名称をクリックすることでソートさせるやり方が、掲載されていたのですが、一度検索条件によって出されたものに対しては、どのようにスクリプトを書けばよいのでしょうか?どなた様か教えていただけませんか?
もうひとつ、これはいろいろ調べたことなんですが、表示された表のヘッダ部分を固定させて、ボディ部分だけをスクロールさせることは難しいのでしょうか?
分かりにくい質問ですみません。宜しくお願い致します。
No.5ベストアンサー
- 回答日時:
$sql= "create temporary table tmp select * from honda where (model like '$model%') having (model like '%$grade%')";
$sql= "select * from tmp where (model like '$model%')
having (model like '%$grade%')";
$rst = mysql_query($sql,$con);
これだと tmptable を作るためのクエリーがないので当然エラーになります。
変数に入れただけでは実行されないので、SQL文を実行してください。
$sql= "create temporary table tmp select * from honda where (model like '$model%') having (model like '%$grade%')";
$rst = mysql_query($sql,$con);
$sql= "select * from tmp where (model like '$model%')
having (model like '%$grade%')";
$rst = mysql_query($sql,$con);
ご回答有難うございました。そんな簡単なところでつまづいていたのですね。
お恥ずかしい。
#5さんはもちろん、皆さんのアドバイスを参考にさせて頂いて、ようやく頭に描いてたスクリプトが出来上がりました。
本当に有難うございました。
No.4
- 回答日時:
再ソートですが、簡単なSQLであればソートの度にorder指定を変えて再検索する方法で良いと思います。
もしSQLが重く、ソートを変更する度に実行するのが辛ければ、表示用のテーブルを作ってそこにselect結果を一旦保存、条件に応じてorder byでソートして表示するのが良いと思います。表示用のテーブルを作る方法は再ソートのためだけでなく、複雑なSQLを使ってページングをする際、ページが変わる度に重いSQLの実行を避ける為だったり、頻繁に件数が増えるため、ページが切り替わる度にSQLを実行すると表示されないレコードが発生してくる(ページを切り替える度に件数が変わると、ページングの位置も変わり抜けるレコードが出てくる)のを防ぐなど、SQLで得たデータ以外の別の要素でのソートが必要な場合などの色々な目的で、割とよく使う手法です。
他のテーブルのselectの内容をそのまま別のDBに挿入する場合はinsert into xxx select aaa,bbb,ccc from yyyy where~の構文でできます。
データ件数が少なければ、結果をフィールド毎の配列に入れて、array_multisort関数で配列をソートします。こちらの方が手軽ですね。
No.3
- 回答日時:
こんにちは。
(1)<a href=file2.php?flag=1>などでフラグを立てて
if文かswicthで分岐させて
select * from * order by *
などで。
DBを使いたくないのならjavascriptでも出来無い事もないですが、
猥雑になると思います。
http://www.openspc2.org/reibun/javascript/
(2)フレームの事ですか?
htmlで簡単にできます。
下記リンクご参考に。
http://www.tagindex.com/html_tag/frame/index.html
No.2
- 回答日時:
・ソートについて
Mysqlで表示された検索結果は、PHPで表示されてPHPの処理が終わればMysqlの処理も終了します。
つまり、一度検索条件で出されたとしても、その検索結果からさらに絞り込むと言うことはできません。
やるのでしたら、今やった検索処理+新たな検索処理をする、と言うことです。
つまり、Mysqlのorder by 句のソート項目が変更される、where句がいくつか増えるまたはtmptableを使用するということをするようになると思います。
・表示
ヘッダ部分を固定してボディー部分をスクロールさせる手としては、フレームで分けてしまう手があります。
ただし、上下ともサイズ固定をしておかないと表がずれます。
この回答への補足
ご回答有難うございます。
tmptable の使用ですが、tmptable を作成してそれを表示させるには2度クエリを発行しなければならないですよね(create文とselect文?)、
そこは普通に
$sql= "create temporary table tmp select * from honda where (model like '$model%') having (model like '%$grade%')";
$sql= "select * from tmp where (model like '$model%')
having (model like '%$grade%')";
$rst = mysql_query($sql,$con);
と二つならべるんですか?これは勿論エラーでましたけど。
すいませんが、その辺について教えてください。
No.1
- 回答日時:
PHPだと、一度WEB上に表示した(DBから取得してきた)データを、DBに再度接続せずにソートするのはできなかったと思います。
(.NETなら非接続での方法があるので別ですが)
なので、再度DBに対して検索する必要があるかと思います。
>表示された表のヘッダ部分を固定させて、ボディ部分だけをスクロールさせる
ボディ部分とヘッダ部分のHTMLをまずわけ、
ボディ部分を
<div style="height:200px;width:200px;overflow:auto;">
ここにボディ部分を入れる
</div>
とすれば、スクロールされます。
スタイルシートがきく環境で、だけですが。
heightとwidthを変えればよいです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Chrome(クローム) Chromeのアドレスバーに履歴等を表示させないようにしたい 2 2022/09/08 14:20
- Chrome(クローム) Chromeでgooglemap検索等結果が他国になってしまう 1 2022/10/05 12:18
- Access(アクセス) AccessVBAで降順にするテーブル作成クエリを使用して作成したテーブルを削除し同一のテーブル作成 1 2023/01/06 11:17
- Excel(エクセル) VLOOKUP が機能しない、その原因は何 ? 8 2022/10/19 12:06
- その他(インターネット接続・インフラ) 電話番号についてわかる方 1 2022/05/30 20:59
- X(旧Twitter) カギをかけているツイッターの検索について教えてください。 2 2022/11/07 17:22
- Word(ワード) Wordで作った「表の罫線を部分的に削除したい」 4 2023/07/24 07:00
- Visual Basic(VBA) ユーザーフォーム「frm_基本❶」を立ち上げると新規で入力する行数を右下のNoとして表示しています。 1 2023/03/16 19:02
- Access(アクセス) Access 複数条件検索の設定が上手く行きません 1 2022/07/22 20:37
- Windows 10 Windows PC 「スタート」の表示 1 2022/05/14 14:27
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
PHPからデータベースに接続した...
-
教えて下さい。
-
insert1つの処理でもトランザ...
-
like検索の複数キーワードで、...
-
PHPよりMySQLの操作のコードの...
-
JAVA SQLServerException 列名 ...
-
C# で発生したException.Messag...
-
VB.NET エラーになる箇...
-
ResultSetインターフェイスでの...
-
phpでmysqlを検索、計算
-
Pro*Cの構文エラー
-
実行時エラー3131 FROM 句の構...
-
phpMyadminとPHP上からの違い?
-
php データ削除
-
mySQLで結果が無いときの処理
-
テーブルにINSERTができません...
-
MySQLでデータベースにデータin...
-
phpのデータベースを使用したsq...
-
ズブの素人です。mysqlについて...
-
VBAをつかってクエリの情報を抽...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
insert1つの処理でもトランザ...
-
<VB.NET>INSERT文でDBにデータ...
-
JAVA SQLServerException 列名 ...
-
Pro*Cの構文エラー
-
VBA ACCESS SQL...
-
PHP&MySQLでの文字列+数列の一...
-
【初歩】配列の格納データ数だ...
-
mysqliを使ってデータベースを...
-
配列で受け取った値がUPDATEで...
-
MySQLのINSERT時にたまに重複に...
-
一度検索されたものに対するソ...
-
cakePHPでSQLが実行できない。
-
PHP4とORACLE接続について
-
phpでforeach ($stmt as $row)...
-
phpmyadminにタグを格納するには
-
zendframework
-
データベースに存在するデータ...
-
データに「,」があると「"」で...
-
Q&Aサイトを作成していてURLの...
-
PHP+PDO+MYSQL で実行されたSQ...
おすすめ情報