• 締切済み

ページングでhiddenの値が伝わらない

ページングリンクの値の受け渡しについて。 <?php $pid = $_GET['pid']; $countRe=$num_rows; pager($_GET["pid"],$countRe); function pager($pid,$countRe){ if($pid=="") $pid=1; $maxPage=ceil($countRe/10); if($maxPage==1 or $maxPage<$pid) return false; if($pid>10){ $startPage=$pid-9; $startMore="<a href=\"$PHP_SELF?pid=".($startPage -1)."\">&lt; PREV</a>"; }else{ $startPage=1; } if($pid+10<$maxPage){ $endPage=$pid+10; $endMore=" <a href=\"$PHP_SELF?pid=".($endPage+1)."\">NEXT &gt;</a>"; }else{ $endPage=$maxPage; } $page_footer=""; for($i=$startPage;$i<=$endPage;$i++){ $page_footer.=" ".(($pid==$i)?"<span style='font-Size:120%'>$i</span>":"<a href=\"$PHP_SELF?pid=$i\">$i</a>"); } $page_footer=$startMore.$page_footer.$endMore; print $page_footer."<br>"; } ?> このようなソースなんですが、どうしたらリンク先にhiddenの情報が送れますか?? このページで <input type="hidden" name="usersearch" value="<?php print_r($_POST['usersearch']) ;?>"> として、値を受け取り、ページIDのリンクをクリックした際も、このページで表示します。 このページがa.phpだとしたらリンク先はa.php?pid=1と言ったような具合です。

  • PHP
  • 回答数3
  • ありがとう数0

みんなの回答

  • shimix
  • ベストアンサー率54% (865/1590)
回答No.3

この質問単独では、回答者に内容が伝わらないよね。「hiddenの情報」ならform要素の話だと思うのに、anchor要素で遷移させているのだから。 ・form要素で括って、anchor要素のhref属性に書いている内容をform要素のaction属性に書く ・伝えたい「hiddenの情報」とやらをanchor要素のhref属性に($_GETで受け取れるようにちゃんと形式を整えて)追加する の二択。後者の場合は下記URLを参照のこと。 http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1375059133 おまけ(OKWaveでは過去質問が非公開に出来るようなのでww) http://www.google.co.jp/search?q=drmada%20site%3Aokwave.jp%2Fqa%2F こちらもそうでしたっけね。あちこちでいくつもの名前をお使いなので、全部は覚え切れてません(苦笑 http://www.google.co.jp/search?q=%22noname%23142312%22%20site%3Aokwave.jp%2Fqa%2F

  • tracer
  • ベストアンサー率41% (255/621)
回答No.2

逆質問で申し訳ないんですが、なぜhiddenが伝わらないんでしょうか。 勝手に想像すると、普通ではないことをやってるからだと思うんですが、残念ながら「どんな普通ではないこと」をやってるのかが、質問内容からはわかりません。

drmada
質問者

補足

これらは全て1つのPHPページで行ってます。a.phpで検索結果を出力。a.php?pid=1等で次ページに行きますが、この時点でvalue値が空になっています。

  • LOHA
  • ベストアンサー率52% (203/388)
回答No.1

シチュエーションが質問内容からよくわかりませんが、<input>のvalueを送るには、通常<form>でPOST/GETします。 http://www.kanzaki.com/docs/html/htminfo31.html #Ajaxを利用する方法もあります

関連するQ&A

  • ページングでの値の引き継ぎ方

    1.html <form method="POST" action="l.php"> <input type="text" name="usersearch"/> <input type="submit" name="button" id="button" value="検索" /> </form> ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー 2.php $usersearch= $_POST['usersearch']; こんな感じにPHPで受け取ったとして 2.php で <?php $pid = $_GET['pid']; $countRe=$num_rows; pager($_GET["pid"],$countRe); function pager($pid,$countRe){ if($pid=="") $pid=1; $maxPage=ceil($countRe/10); if($maxPage==1 or $maxPage<$pid) return false; if($pid>10){ $startPage=$pid-9; $startMore="<a href=\"$PHP_SELF?pid=".($startPage -1)."\">&lt; PREV</a>"; }else{ $startPage=1; } if($pid+10<$maxPage){ $endPage=$pid+10; $endMore=" <a href=\"$PHP_SELF?pid=".($endPage+1)."\">NEXT &gt;</a>"; }else{ $endPage=$maxPage; } $page_footer=""; for($i=$startPage;$i<=$endPage;$i++){ $page_footer.=" ".(($pid==$i)?"<span style='font-Size:120%'>$i</span>":"<a href=\"$PHP_SELF?pid=$i\">$i</a>"); } $page_footer=$startMore.$page_footer.$endMore; print $page_footer."<br>"; } ?> こうした場合、<a href=\"$PHP_SELF?pid=".($endPage+1)."\">NEXT &gt;</a>"; この部分でリンクをクリックした場合、POSTした値が消えてしまっています。どうしたら引き継げますか??

    • 締切済み
    • PHP
  • ページングに関して

    <?php $pid = $_GET['pid']; $countRe=$num_rows; pager($_GET["pid"],$countRe); function pager($pid,$countRe){ if($pid=="") $pid=1; $maxPage=ceil($countRe/10); if($maxPage==1 or $maxPage<$pid) return false; if($pid>10){ $startPage=$pid-9; $startMore="<a href=\"$PHP_SELF?pid=".($startPage -1)."\">&lt; PREV</a>"; }else{ $startPage=1; } if($pid+10<$maxPage){ $endPage=$pid+10; $endMore=" <a href=\"$PHP_SELF?pid=".($endPage+1)."\">NEXT &gt;</a>"; }else{ $endPage=$maxPage; } $page_footer=""; for($i=$startPage;$i<=$endPage;$i++){ $page_footer.=" ".(($pid==$i)?"<span style='font-Size:120%'>$i</span>":"<a href=\"$PHP_SELF?pid=$i\">$i</a>"); } $page_footer=$startMore.$page_footer.$endMore; print $page_footer."<br>"; } ?> このようにしています。現在は、該当データが11件あれば、[1,2]リンクは現れますが、1をクリックしたら11件、2をクリックしても11件表示されます。10件、1件と表示させたいです。方法をどなたか教えていただけないでしょうか?? また、上記のようなコードだとSELECT文はどうすれば良いでしょうか? 自分で調べろという回答は御遠慮下さい。分からないから質問しているのです。

    • 締切済み
    • PHP
  • ページング時のセレクト文が分かりません。

    <?php $countRe=$num_rows; pager($_GET["pid"],$countRe); function pager($pid,$countRe){ if($pid=="") $pid=1; $maxPage=ceil($countRe/10); if($maxPage==1 or $maxPage<$pid) return false; if($pid>10){ $startPage=$pid-9; $startMore="<a href=\"$PHP_SELF?pid=".($startPage -1)."\">&lt; PREV</a>"; }else{ $startPage=1; } if($pid+10<$maxPage){ $endPage=$pid+10; $endMore=" <a href=\"$PHP_SELF?pid=".($endPage+1)."\">NEXT &gt;</a>"; }else{ $endPage=$maxPage; } $page_footer=""; for($i=$startPage;$i<=$endPage;$i++){ $page_footer.=" ".(($pid==$i)?"<span style='font-Size:120%'>$i</span>":"<a href=\"$PHP_SELF?pid=$i\">$i</a>"); } $page_footer=$startMore.$page_footer.$endMore; print $page_footer."<br>"; } ?> このソースでページングしています。$pidが1ページの時はLIMIT 0.10 $pidが2ページの時はLIMIT 10.10 $pidが3ページの時はLIMIT 20.10 としたいのですが、SELECT文はどうしたら良いですか??

    • 締切済み
    • PHP
  • ページングについて

    $countRe=$num_rows; pager($_GET["id"],$countRe); function pager($id,$countRe){ if($id=="") $id=1; $maxPage=ceil($countRe/5); if($maxPage==1 or $maxPage<$id) return false; if($id>6){ $startPage=$id-5; $startMore="<a href=\"$PHP_SELF?id=".($startPage -1)."\">&lt; PREV</a>"; }else{ $startPage=1; } if($id+5<$maxPage){ $endPage=$id+5; $endMore=" <a href=\"$PHP_SELF?id=".($endPage+1)."\">NEXT &gt;</a>"; }else{ $endPage=$maxPage; } $page_footer=""; for($i=$startPage;$i<=$endPage;$i++){ $page_footer.=" ".(($id==$i)?"<span style='font-Size:120%'>$i</span>":"<a href=\"$PHP_SELF?id=$i\">$i</a>"); } $page_footer=$startMore.$page_footer.$endMore; print $page_footer."<br>"; } 現在このようなコードでページングしています。 該当内容が10件未満ならリンクは出ず、10件以上なら「12」とリンクが出てくれるのは良いのですが、 1ページに11件表示され2ページにも同じ内容が11件表示されてしまいます。どのようにしたら、1ページ目で10件、2ページ目で1件表示してくれるのでしょうか??

    • 締切済み
    • PHP
  • ページ番号別にLIMIT定義を変えるには。たすけて

    <?php $pid = $_GET['pid']; $countRe=$num_rows; pager($_GET["pid"],$countRe); function pager($pid,$countRe){ if($pid=="") $pid=1; $maxPage=ceil($countRe/10); if($maxPage==1 or $maxPage<$pid) return false; if($pid>10){ $startPage=$pid-9; $startMore="<a href=\"$PHP_SELF?pid=".($startPage -1)."\">&lt; PREV</a>"; }else{ $startPage=1; } if($pid+10<$maxPage){ $endPage=$pid+10; $endMore=" <a href=\"$PHP_SELF?pid=".($endPage+1)."\">NEXT &gt;</a>"; }else{ $endPage=$maxPage; } $page_footer=""; for($i=$startPage;$i<=$endPage;$i++){ $page_footer.=" ".(($pid==$i)?"<span style='font-Size:120%'>$i</span>":"<a href=\"$PHP_SELF?pid=$i\">$i</a>"); } $page_footer=$startMore.$page_footer.$endMore; print $page_footer."<br>"; } ?> 例えばページIDが1ならばLIMIT 0,10 ページIDが2ならばLIMIT10,10とするにはどうしたら良いのでしょうか?? 我流で select * from lab where LIMIT $pid*10,10としましたが、エラーになってしまいます。

    • ベストアンサー
    • PHP
  • ページング。困っています。

    分かる方はいませんか?? <?PHP $countRe=$num_rows; function pager($id,$countRe){ if($id=="") $id=1; $maxPage=ceil($countRe/10); if($maxPage==1 or $maxPage<$id) return false; if($id>6){ $startPage=$id-5; $startMore="<a href=\"$PHP_SELF?id=".($startPage -1)."\">&lt; PREV</a>"; }else{ $startPage=1; } if($id+5<$maxPage){ $endPage=$id+5; $endMore=" <a href=\"$PHP_SELF?id=".($endPage+1)."\">NEXT &gt;</a>"; }else{ $endPage=$maxPage; } $page_footer=""; for($i=$startPage;$i<=$endPage;$i++){ $page_footer.=" ".(($id==$i)?"<span style='font-Size:120%'>$i</span>":"<a href=\"$PHP_SELF?id=$i\">$i</a>"); } $page_footer=$startMore.$page_footer.$endMore; print $page_footer."<br>"; } ?> 現在、このようなソースでページングをしています。1ページにつき10件ずつ表示させたいのです。該当データ11件になったら、ちゃんとリンクが[1,2]と出てくれますが、1ページ目に11件、2ページ目でも11件出てしまいます。理想は説明不要だと思いますが、1ページ目に10件、2ページ目で余りの1件表示させたいです。このソースの問題ではなくSELECT文の問題なんでしょうか??LIMIT 0,10としたら11件該当しなければならないのに10件しか該当しないとなり、これはこれでおかしくなります。

    • 締切済み
    • PHP
  • ページングでの問題点

    <?php DB接続文等 $search_query = "select SQL_CALC_FOUND_ROWS * from ilab"; $usersearch= $_POST['usersearch']; $clean_search = str_replace('、', ' ',$clean_search); $clean_search = str_replace(' ', ' ',$usersearch); $search_words = explode(' ', $clean_search); $final_search_words = array(); if (count($search_words) > 0) { foreach ($search_words as $word) { if (!empty($word)) { $final_search_words[] = $word; } } } // Generate a WHERE clause using all of the search keywords $where_list = array(); if (count($final_search_words) > 0) { foreach($final_search_words as $word) { $where_list[] = "syou LIKE '%$word%'"; } } $where_clause = implode(' AND ', $where_list); // Add the keyword WHERE clause to the search query if (!empty($where_clause)) { $search_query .= " WHERE $where_clause"; } $pid = intval($_GET['pid']); if ($pid < 1) $pid = 1; $limit_start_rows = ( $pid - 1 ) * 10; $search_query .= " LIMIT {$limit_start_rows}, 10"; $result = mysql_query($search_query); $num_rows_result = mysql_query("SELECT FOUND_ROWS()"); $num_rows = mysql_fetch_assoc($num_rows_result); $num_rows = $num_rows['FOUND_ROWS()']; if($num_rows== 0){ $message="該当データは見つかりませんでした。"; } else $message=$num_rows ."件該当しました<br/>"; echo $message; ?> <?php $pid = $_GET['pid']; $countRe=$num_rows; pager($_GET["pid"],$countRe); function pager($pid,$countRe){ if($pid=="") $pid=1; $maxPage=ceil($countRe/10); if($maxPage==1 or $maxPage<$pid) return false; if($pid>10){ $startPage=$pid-9; $startMore="<a href=\"$PHP_SELF?pid=".($startPage -1)."\">&lt; PREV</a>"; }else{ $startPage=1; } if($pid+10<$maxPage){ $endPage=$pid+10; $endMore=" <a href=\"$PHP_SELF?pid=".($endPage+1)."\">NEXT &gt;</a>"; }else{ $endPage=$maxPage; } $page_footer=""; for($i=$startPage;$i<=$endPage;$i++){ $page_footer.=" ".(($pid==$i)?"<span style='font-Size:120%'>$i</span>":"<a href=\"$PHP_SELF?pid=$i\">$i</a>"); } $page_footer=$startMore.$page_footer.$endMore; print $page_footer."<br>"; } ?> このソースだとテキストボックスに未入力だと、全件表示してしまいます。 そして、例えば、「東京」等で検索し、12とリンクがつくわけですが、2を押したら東京の2の情報ではなく、全件データの2(10件~20件)が表示されてしまいます。どうすれば上記問題点を改善できるでしょうか??

    • 締切済み
    • PHP
  • チェックボックスの値の受け渡しについて

    現在、複数のチェックボックスの値を配列にしてパラメータで送ったのち、そのパラメータを引き継いで、ページング処理をしようとしてエラーが出て困っております。 【ページングの処理】 function pager($idname,$countRe){ $id =$_GET[$idname]; foreach($_GET as $key => $value){ if ($key != $idname){ $other_param .= "&".$key."=".urlencode($value); } } if($id=="") $id=1; $maxPage=ceil($countRe / PER_PAGE); if( ($maxPage == 1) or ($maxPage < $id) ) return false; if($id > VIEW_PAGE_MENU_WIDTH + 1){ $startPage = $id - VIEW_PAGE_MENU_WIDTH; $startMore = "<a href=\"$PHP_SELF?".$idname."=".($startPage - 1).$other_param."\">".PREV_MARK." </a>\n"; }else{ $startPage = 1; } if($id + VIEW_PAGE_MENU_WIDTH < $maxPage){ $endPage = $id + VIEW_PAGE_MENU_WIDTH; $endMore = " <a href=\"$PHP_SELF?".$idname."=".($endPage + 1).$other_param."\"> ".NEXT_MARK."</a>\n"; }else{ $endPage = $maxPage; } $page_footer=""; for($i = $startPage ; $i <= $endPage ; $i++){ $page_footer.= " ".(($id == $i)?"<span style='font-size:120%'>$i</span>\n":"<a href=\"$PHP_SELF?$idname=$i$other_param\">$i</a>\n"); } $page_footer = $startMore.$page_footer.$endMore; print $page_footer; } ----------------------------------------------------- 【エラー内容】 Warning: urlencode() expects parameter 1 to be string, array given in どうやら foreach($_GET as $key => $value){ if ($key != $idname){ $other_param .= "&".$key."=".urlencode($value); } } の部分でチェックボックスの値が第1引数ではないのでエラーが返っていると思うのですが、どなたかエラーが出ないようにご教授ください。 お願いいたします。

    • ベストアンサー
    • PHP
  • php ページャー

    php ページャー機能がうまくいきません。 ご教授お願いいたします。 ページリンク2、3と押しても ページが移動しません。 ずっと一ページ目のままです。 解決方法よろしくお願いいたします。 index.php peger.php 書きソースはpeger.phpです。 index.htmlとのソースの違いは if(preg_match('/^[1-9][0-9]*$/', $_GET['page']) ){ $page = (int)$_GET['page']; }else{ $page = 1; } のプログラムががindex.phpにはないだけです。 <!DOCTYPE html> <head> <meta charset="UTF-8"> <title>検索</title> </head> <body> <?php if(preg_match('/^[1-9][0-9]*$/', $_GET['page']) ){ $page = (int)$_GET['page']; }else{ $page = 1; } $page = 1; $limit = 2; $offset = $limit * ($page - 1); $dsn='mysql:dbname=****;host=****'; $user='*****'; $password='*****'; $dbh=new PDO($dsn,$user,$password); $dbh->query('SET NAMES utf8'); $sql='SELECT count(*) FROM `mst_product`'; $stmt=$dbh->prepare($sql); $stmt->execute(); $db=null; $total=$stmt->fetchColumn(); $lastpage= ceil($total/$limit); $sql = 'SELECT * FROM mst_product ORDER BY code DESC LIMIT '.$limit.' OFFSET '.$offset.' ' ; $stmt = $dbh->prepare($sql); $stmt->execute(); $db = null; while($row = $stmt->fetch(PDO::FETCH_ASSOC)){ echo $row['name']; echo'</br>'; echo $row['price']; } echo '<ul class="pager">'; ?> <?php if($page > 1){?> <li><a href="pager.php?page=<?php echo $page-1; ?>"> << </a></li> <?php } for($i = $page; $page-2 < $i && $i <= $page+4 && $i <= $lastpage; $i++){ ?> <?php if($i == $page){ ?> <li><a href="kensaku_pager.php?page=<?php echo $i; ?>"><?php echo '<font color="#FF4DC4">'.$i.'</font></a></li>'; }else{?> <li><a href="pager.php?page=<?php echo $i; ?>"><?php echo $i.'</a>'; ?> <?php echo '</li>'; } } if($page < $lastpage){ ?> <li><a href="pager.php?page=<?php echo $page+1; ?>"> >> </a></li> <?php } ?> </ul> </body> </html>

    • ベストアンサー
    • PHP
  • ページングの応用

    質問させて頂きます。 現在DBから該当するレコードを抽出→表示していて 10件毎にページングさせているのですが、 その際のリンクがどんどん増えてしまい (例えば300件のレコード数なら30リンク分の文字数) 途中のリンクを省略したいのですが 適切なソースは思い浮かびません。 【前 / 1 2 3 ... 28 29 30 / 次】 みたいな、途中省略表示の仕方は可能でしょうか? ※もしくは 【前100 前 / 1 2 3 4 5 6 7 8 9 10 / 次 次100】 みたいにして「次100」をクリックすると 【前100 前 / 11 12 13 14 15 16 17 18 19 20 / 次 次100】 と変更される等です。 現在は $num_page = $num_rec / $limit for($i=1; $i<$num_page; $i++){  if($i != $page){   echo "<a href=***.php?page=$i>$i</a>";  } } という形で表示させています。 分かりづらい文章で申し訳御座いません。 宜しくお願い致します。

    • 締切済み
    • PHP