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

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

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

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

PHP

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

HTML

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

解決済

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

pechiper
pechiper

総合スコア17

MySQL

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

PHP

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

HTML

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

2回答

0評価

0クリップ

10182閲覧

投稿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; ?> 以下省略 コード

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

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

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

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

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

まだ回答がついていません

会員登録して回答してみよう

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

ただいまの回答率
87.20%

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

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

質問する

関連した質問

同じタグがついた質問を見る

MySQL

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

PHP

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

HTML

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