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

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

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

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

PHP

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

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

解決済

2回答

12280閲覧

a hrefのリンク先へのパラメータの受け渡し方法

pechiper

総合スコア17

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

PHP

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

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

0クリップ

投稿2016/04/14 08:24

編集2016/04/15 13:40

いつもお世話になっております。今回はa hrefのリンク先に
パラメータの受け渡し方を教えていただきたいと思っています。
どうか宜しくお願い致します。

次ページのリンクを踏むとlocalhost/省略/t_list2.php?p=1&address=名古屋&area_id=Array&chk=1
というurlに進みます。
addressの値は正常に受け渡していると思うのですが、area_idが=Arrayになっていて数値になっていないのが
原因かと思っています。
どうしたら受け渡しが出来るでしょうか?

検索ボタンを押したら下記のSQL文が実行されるのですが、
SELECT id,rental_name,price,city,ward,address,photofilename,area_id FROM rental WHERE 1 = 1 AND address LIKE ? AND area_id in (?,?,?,?,?) LIMIT 6 OFFSET 0

次へ→を押すと
SELECT id,rental_name,price,city,ward,address,photofilename,area_id FROM rental WHERE 1 = 1 LIMIT 6 OFFSET 5
このようにAND検索が消えてしまいます。
ということはパラメータが拾えてないということですよね?

お手数ですがお時間の余裕のある方ご教授頂けたらと思います。
何卒宜しくお願い致します。

以下コードです。

<html> <head> <meta charset="utf-8" /> <title>不動産サイト</title> <link rel="stylesheet" type="text/css" href="../common/style.css"/> <!--■■■■■フォーム完全クリア■■■■■--> <script> function resetValue(f){ for (var i=0;i<f.length;i++){ if(f[i].type=="text") f[i].value=""; if(f[i].type=="select-one") f[i].selectedIndex=0; if(f[i].type=="checkbox") f[i].checked=false; } } </script> <!--■■■■■フォーム完全クリアEND■■■■■--> </head> <body> <!--■■■■■ページリンク作成②■■■■■--> <?php //actionのページ指定 $self_page = "./t_list2.php"; //値確認 if(isset($_POST['area_id'])) { $area_id = $_POST['area_id']; print("$area_id<br>\n"); } if(isset($_POST['address'])) { $address = $_POST['address']; print("$address<br>\n"); } //POSTの処理 $address = isset($_REQUEST['address']) ? htmlspecialchars($_REQUEST['address']) : ""; $area_id = isset($_REQUEST['area_id']) ? $_REQUEST['area_id'] : ""; $submit = isset($_REQUEST['submit']) ? $_REQUEST['submit'] : ""; $search_task = isset($_REQUEST['search_task']) ? $_REQUEST['search_task'] : ""; ?> <!--■■■■■ENDページリンク作成②■■■■■--> <div id="main"> <form name="search" action="<?=$self_page;?>" method="post" > <table class="check_t"> <tr> <th>マンション名</th> <td><input type="text" name="rental_name" value="<?php print( htmlspecialchars( $_POST["rental_name"] ,ENT_QUOTES ) ) ?>" size="20"></td> </tr> <tr> <th>価格帯</th> <td> <input type="text" name="price_min" value="<?php print( htmlspecialchars( $_POST["price_min"] ,ENT_QUOTES ) ) ?>" size="8"> - <input type="text" name="price_max" value="<?php print( htmlspecialchars( $_POST["price_max"] ,ENT_QUOTES ) ) ?>" size="8"><br /> </td> </tr> <tr> <th>住所</th> <td><input type="text" name="address" value="<?php print( htmlspecialchars( $_POST["address"] ,ENT_QUOTES ) ) ?>" size="20"></td> </tr> <tr> <th>名古屋市</th> <td> <?php //チェックボックスのフォーム表示用SQL(名古屋市、物件1~16)///////////////////////////////// //var_dump($_SESSION['area_id']); /*$area_id = $_POST['area_id']; var_dump($area_id);*/ $dsn = 'mysql:dbname=xxxxx;host=localhost'; $user = 'xxxxx'; $password = 'xxxxx'; $db = new PDO($dsn, $user, $password); $db->query('SET NAMES utf-8'); $sql = "SELECT area.area_id,area.ward, Count(id) AS cnt FROM area LEFT JOIN rental ON rental.area_id = area.area_id GROUP BY area.area_id ORDER BY area_id ASC"; $condition = array(); $stmt = $db->prepare( $sql ); $stmt->execute( $condition ); $db = null; $rows = $stmt->fetchAll(); $i = 1; foreach($rows as $row ){ if( $i >= 0 && $i <= 16){ echo '<li class="num'.$i.'count_li"> <input type="checkbox" name="area_id[]" value="'.$i.'"' ?> <?php if (isset($_POST['area_id']) and in_array($i,$_POST['area_id'])) print ' checked'; ?>/> <?php echo ''.$row['ward'].''.'('.$row['cnt'].')'.'</li>' ?> <?php } $i++; } ?> </td> </tr> <tr> <th>愛知県 - その他の地域</th> <td> <?php //チェックボックスのフォーム表示用SQL(愛知県内名古屋市以外、物件17~19)//////////////////// require_once "checkbox/checkbox17-19.php"; ?> </td> </tr> <tr> <!--こだわり未完成--> <th>こだわり条件</th> <td> <input type="checkbox" name="pid[]" value="1" <?php if (isset($_REQUEST['pid']) and in_array('1',$_REQUEST['pid'])) print 'checked'; ?>/> 新築 <input type="checkbox" name="pid[]" value="2" <?php if (isset($_REQUEST['pid']) and in_array('2',$_REQUEST['pid'])) print 'checked'; ?>/> 南向き <span class="space4"><input type="checkbox" name="pid[]" value="3" <?php if (isset($_REQUEST['pid']) and in_array('3',$_REQUEST['pid'])) print 'checked'; ?>/> セキュリティ充実<br></span> <input type="checkbox" name="pid[]" value="6" <?php if (isset($_REQUEST['pid']) and in_array('4',$_REQUEST['pid'])) print 'checked'; ?>/> システムキッチン <input type="checkbox" name="pid[]" value="7" <?php if (isset($_REQUEST['pid']) and in_array('5',$_REQUEST['pid'])) print 'checked'; ?>/> ペット可 <input type="checkbox" name="pid[]" value="4" <?php if (isset($_REQUEST['pid']) and in_array('6',$_REQUEST['pid'])) print 'checked'; ?>/> 市街地が近い<br /> <input type="checkbox" name="pid[]" value="5" <?php if (isset($_REQUEST['pid']) and in_array('7',$_REQUEST['pid'])) print 'checked'; ?>/> 内装リフォーム </td> </tr> </table> <input type="submit" name="submit" value="検索" class="Btn-gray button"> <input type="button" value="リセット" class="Btn-reset button" onClick="resetValue(this.form)"> </form> <!--■■■■■ページリンク作成②■■■■■--> <?php if($submit == "検索"){ //仮に全ての値、例えばaddress,area_id,rentalnameなど全てがissetされていなかったら$search_taskはoff //それ以外はonにする $mess=""; $search_task = "off"; if($address=="" $mess="*キーワードを入力してください。"; $sql = "SELECT id,rental_name,price,city,ward,address,photofilename,area_id FROM rental WHERE address AND 0"; }else{ $search_task = "on"; $mess=" "; } echo "<p style='font-size:11pt; color:red;'>".$mess."</p>\n"; } //データの表示 $p = isset($_GET['p']) ? intval($_GET['p']) : 0; $chk = isset($_GET['chk']) ? $_GET['chk'] : 0; $limit = 5; $v_page = $limit + 1; $offset = $p * $limit; $sql = "SELECT id,rental_name,price,city,ward,address,photofilename,area_id FROM rental WHERE 1 = 1 "; if($search_task == "on" || $chk==1){ echo "<h1>検索結果</h1>"; //if issetで値$address,$area_id,$priceなどの存在確認//▼▼最終的にOFFSETは一番最後の$sql.=に記述 if(isset($_POST["address"])){ $sql = $sql. "AND address LIKE ? "; $condition[]="%".addcslashes($address, '\\_%')."%"; } if(isset($_POST["area_id"])){ $sql = $sql. " AND area_id in (".implode(",",array_fill(1,count($area_id),"?")).") "; $condition=array_merge($condition,$area_id); } $sql = $sql. " LIMIT $v_page OFFSET $offset "; //////////////DB接続/////////////////////////////// $db = new PDO("mysql:host=xxxxx; dbname=xxxx; charset=utf8", "xxxxx", "xxxxx", array( PDO::ATTR_EMULATE_PREPARES => false ) ); $stmt = $db->prepare($sql); $stmt->execute($condition); $rows = $stmt->fetchAll(); } print_r($sql); //var_dump($address); if(count($rows) > $limit){ array_pop($rows); $next_num = $p+1; //ここで$chk==1であるか判断 //ここで$pが何ページ目にあるか判断 $pager_next = "<a href='{$self_page}?p={$next_num} &amp;address={$address}&amp;area_id={$area_id}&amp;chk=1'>次へ→</a>"; }else{ $pager_next = "次へ→"; } if($p > 0){ $prev_num = $p-1; //ここで$chk==1であるか判断 //ここで$pが何ページ目にあるか判断 $pager_prev = "<a href='{$self_page}?p={$prev_num} &amp;address={$address}&amp;area_id={$area_id}&amp;chk=1'>←前へ</a>"; }else{ $pager_prev = "←前へ"; } $pager_str = "<p style='text-align:center;color:#bbbbbb'> {$pager_prev} {$pager_next}</p>"; echo $pager_str; $i=0; foreach($rows as $row){ $address = htmlspecialchars($row["address"]); $mean = str_replace(" / ", "\n", $row["mean"]); $mean = nl2br(htmlspecialchars($mean)); echo "<h4 style='margin:0; background:#eeeeee;'>$address</h4>\n"; echo "<div style='margin:2px 6px 18px 6px;'>$mean</div>"; $i++; } if($i<1){ echo "<p style='margin:0 0 0 20px; font-cloro:red'> 検索結果がありません。</p> "; } echo $pager_str; //DBから切断する $db = null; ?> 以下省略 コード

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

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

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

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

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

guest

回答2

0

ベストアンサー

php

1$pager_next = "<a href='{$self_page}?p={$next_num} 2 &amp;address={$address}&amp;area_id={$area_id}&amp;chk=1'>次へ→</a>";

$area_id は配列なので どうにかして &area_id={$area_id} の部分を

&area_id[]=1&area_id[]=2;&area_id[]=3

のような文字列に変換してやってください。

投稿2016/04/14 09:43

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

pechiper

2016/04/14 12:09

早速ご回答いただきありがとうございます。なんとか調べてみようと思います。
pechiper

2016/04/26 22:50

返事が遅くなり申し訳ございません。 ようやく解決できました。 回答してくださったお二方に対して本当に感謝致します! 誠にありがとうございました! お二方の意見を参考にしながらいろいろネット検索して参考になるサイトを見つけたので 無事解決となりました。 ```if (is_array($area_id)) { foreach($area_id as $val) { $keynavi .= "&amp;area_id[]=$val"; } } コード ``` このように受ければarrayと表示されずにきちんとした配列で表示されるようになりました。 JSONを使う方法はまだ試しておりませんが、興味深いので試してみたいと思っております。 この度は本当にありがとうございました!
guest

0

面倒なのでDBから引いた配列をhtmlspecialchars(json_encode($db))でパラメータに入れる手もあります。getの文字列長に入るか分かりませんが。
受け取ったら$ret = json_decode($_GET['xxx'],true)でそっくり元に戻ります。

投稿2016/04/15 00:45

編集2016/04/15 00:46
pochi0701

総合スコア210

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

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

pechiper

2016/04/15 11:15

ご回答いただき誠にありがとうございます! 只今、最初にいただいた回答の意味を基礎的なことも含めて確認中なので時間が掛かっています。 回答まで数日間掛かるかもしれません。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問