2012-04-21 4 views
0

私はGet &ポストに変更を加えましたが、何も分かりません。これは難しいフォームなのですが、このセクションのすぐ下のフォームは間違っていますか?私は言うことはできませんが、私は '名前'を使用して '送信'ではないことを確かに1つのことを知ることができません& GETの& POSTは私が定義されていないインデックスを言うエラーを取得します。あなたが言ったが何もしなかった!どうすれば他のページにデータを表示できますか?

/////////////フォーム/////////////////////

<form method="post" action="search_govern.php?go" id="searchform"> 
    <input type="text" name="name"> 
    <input type="submit" name="submit" value="Yell"> 
</form> 

/私が思うに、問題はここにあるフォーム/////////////////////

<?php 

//if(isset($_POST['submit'])){ 
//if(isset($_GET['go'])){ 
//if(preg_match("/[A-Z | a-z]+/", $_POST['name'])){ 
//$name=$_POST['name']; 
//////////////////////////////////////// 

の//////////終わり、しかし私は何が間違っているのかわからない私のエラーを指摘したり、私にこの例を見せてください! ?

if(isset($_POST['submit'])){ 
if(isset($_GET['go'])){ 
$raw_name = $_GET['name'] ; 

if(preg_match("/[A-Z | a-z]+/", $raw_name)){ 
$name=$raw_name; 
//////////////////////////////////////// 

include "connect/connect.php"; 

//-query the database table 
$sql="SELECT userId, Attribute, Name FROM government WHERE Name LIKE '%$name%' OR Attribute LIKE '%$name%' ORDER BY userid ASC"; 

///////////////////////// PAGINATION CLASS//////////////////////////////////// 


class Pagination { 

public $current_page; 
public $per_page; 
public $total_count; 

public function __construct($page=1, $per_page=20, $total_count=0){ 
$this->current_page = (int)$page; 
$this->per_page = (int)$per_page; 
$this->total_count = (int)$total_count; 
} 

    public function offset() { 

    return ($this->current_page - 1) * $this->per_page; 
} 

    public function total_pages() { 
    return ceil($this->total_count/$this->per_page); 
} 

    public function previous_page() { 
    return $this->current_page - 1; 
} 

    public function next_page() { 
    return $this->current_page + 1; 
} 

    public function has_previous_page() { 
    return $this->previous_page() >= 1 ? true : false; 
} 

    public function has_next_page() { 
     return $this->next_page() <= $this->total_pages() ? true : false; 
    } 
} 

///////////////////////////END OF PAGINATION CLASS/////////////////////////////// 

$curent_page = isset($_GET['page'])&&(int)$_GET['page'] !=0 ? (int)$_GET['page'] : 1 ; 
$per_page = 7 ; 

$sql = "SELECT COUNT(*) FROM government "; 
$result = mysql_query($sql); 
$total = mysql_result($result , 0); 

$pagination = new Pagination($curent_page , $per_page , $total); 

/////////////////////////////////////////////////////////////////////// 

     //echo 'perpage  : '.$pagination->per_page.'<br />'; 
     //echo 'offset  : '.$pagination->offset().'<br />'; 

/////////////////////////////////////////////////////////////////////// 

$rows_to_show = "SELECT userId, Attribute, Name FROM government WHERE Name LIKE '%$name%' OR Attribute LIKE '%$name%' LIMIT {$pagination->per_page} OFFSET {$pagination->offset()}"; 

if($pagination->total_pages() > 1){ 
     echo '<div id="pagination_div">'; 
      if($pagination->has_next_page()){ 

      echo '<span><a href="search_govern.php?page='.$pagination->next_page(); 
      echo '&name='.$name; 
      echo'" >> </a></span>' ; 

      } 
      for($i=1 ; $i <= $pagination->total_pages() ; $i++){ 
      if($i == $pagination->current_page){ 
      echo '&nbsp;<strong>'.$i.'&nbsp;</strong>'; 
      } 
      else {     
      echo '<span><a href="search_govern.php?page='.$i; 
      echo '&name='.$name; 
      echo'"> '.$i.' </a></span>'; 
      } 
      } 
      if($pagination->has_previous_page()){ 

      echo'<span><a href="search_govern.php?page='.$pagination->previous_page(); 
      echo '&name='.$name; 
      echo'" > < </a></span>'; 
      } 

     echo ' </div> '; 

     } 


$dtotal = mysql_query($rows_to_show); 

    echo "$dtotal"; 

if ($dtotal === FALSE){ //////////// check to see if the query fails 
     die(mysql_error()); 
    } 
    else{ 


//-create while loop and loop through result set 
while($row=mysql_fetch_array($dtotal)){ 
$userId=$row['userId']; 
$Attribute=$row['Attribute']; 
$Name=$row['Name']; 


//-display the result of the array 
echo "<p style=\"margin:2px 0px 5px 0px;\" >"; 
echo "<p>" ."<a href=\"search_govern.php?id=$userId\"> " . $Name . "</a></p>"; 
echo "</p>"; 
} 
} 
} 
else{ 
echo "<p>&nbsp;&nbsp;&nbsp;Please enter a search query</p>"; 
} 
} 
} 

>

+0

$ pn = 2に$ limitをエコーするとどうなりますか? –

+0

どういう意味ですか? – JACrypto

+0

$ limit varを宣言した後に "echo $ limit"ステートメントを実行します。あなたが2番目のページ($ pn = 2)に行くと、そのエコーが何であるかを確認してください。 –

答えて

0

私はここで簡単かつクリーンなコード

は、単純なページネーションクラスであることを示唆している:.phpのファイルに保存

class Pagination { 

    public $current_page; 
    public $per_page; 
    public $total_count; 

    public function __construct($page=1, $per_page=20, $total_count=0){ 
    $this->current_page = (int)$page; 
    $this->per_page = (int)$per_page; 
    $this->total_count = (int)$total_count; 
    } 

    public function offset() { 

    return ($this->current_page - 1) * $this->per_page; 
    } 

    public function total_pages() { 
    return ceil($this->total_count/$this->per_page); 
    } 

    public function previous_page() { 
    return $this->current_page - 1; 
    } 

    public function next_page() { 
    return $this->current_page + 1; 
    } 

    public function has_previous_page() { 
     return $this->previous_page() >= 1 ? true : false; 
    } 

     public function has_next_page() { 
      return $this->next_page() <= $this->total_pages() ? true : false; 
     } 
} 

をして、それを含めますあなたのページの はこちらです:

$ページング=新しいページ設定($ curent_page、$ per_page、$ total);

$curent_page // get it from url with GET method 
e.g 
$curent_page = isset($_GET['page'])&&(int)$_GET['page'] !=0 ? (int)$_GET['page'] : 1 ; 

-

$per_page // you have to define how many rows do you want to show in the page 
e.g 
$per_page = 20 ; 

-

$total // you have to count all of the rows in your table 

e.g 
    $sql = "SELECT COUNT(*) FROM `$tbl` "; 
    $result = mysql_query($sql , $db_connection); 
    $total = mysql_result($result , 0); 


now you can create a pagination obj 
$pagination = new Pagination($curent_page , $per_page , $total); 

-

 $pagination->offset() // use this as offset in your query in each 
    page 

$pagination->per_page // use this as LIMIT in your query 

     e.g 
     $rows_to_show = "SELECT * FROM `$tbl` LIMIT {$pagination->per_page} OFFSET {$pagination->offset()}";  

、最終的にはページの下部にあるHTML形式のページネーションを作成

if($pagination->total_pages() > 1){ 
      echo '<div id="pagination_div">'; 
       if($pagination->has_next_page()){ 

       echo '<span><a href="index.php?page='.$pagination->next_page(); 
       echo'" >> </a></span>' ; 

       } 
       for($i=1 ; $i <= $pagination->total_pages() ; $i++){ 
       if($i == $pagination->current_page){ 
       echo '&nbsp;<strong>'.$i.'&nbsp;</strong>'; 
       } 
       else {     
       echo '<span><a href="index.php?page='.$i; 
       echo'"> '.$i.' </a></span>'; 
       } 
       } 
       if($pagination->has_previous_page()){ 

       echo'<span><a href="index.php?page='.$pagination->previous_page(); 
       echo'" > < </a></span>'; 
       } 

      echo ' </div> '; 

      } 

/////////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////

/// $name may be sent to the page via post/form OR via get/url so you have to be prepare for both , so this is how you get $name at the top of page 

if(isset($_POST['name'])) 
$raw_name = $_POST['name'] ; 
if(isset($_GET['name'])) 
$raw_name = $_GET['name'] ; 

if(preg_match("/[A-Z | a-z]+/", $raw_name)){ 
$name=$raw_name; 
///// do other stuff 

/// /////ページごとに$ nameを各ページに送る必要があります

if($pagination->total_pages() > 1){ 
      echo '<div id="pagination_div">'; 
       if($pagination->has_next_page()){ 

       echo '<span><a href="index.php?page='.$pagination->next_page(); 
       echo '&name='.$name; 
       echo'" >> </a></span>' ; 

       } 
       for($i=1 ; $i <= $pagination->total_pages() ; $i++){ 
       if($i == $pagination->current_page){ 
       echo '&nbsp;<strong>'.$i.'&nbsp;</strong>'; 
       } 
       else {     
       echo '<span><a href="index.php?page='.$i; 
       echo '&name='.$name; 
       echo'"> '.$i.' </a></span>'; 
       } 
       } 
       if($pagination->has_previous_page()){ 

       echo'<span><a href="index.php?page='.$pagination->previous_page(); 
       echo '&name='.$name; 
       echo'" > < </a></span>'; 
       } 

      echo ' </div> '; 

      } 
+0

私は変更を行いましたが、1つの細い部分が私の注意を引くようになりました。このコードはちょうど$ページネーション - >オフセット(); $ページング - > $ per_page; – JACrypto

+0

はい。あなたはコードを編集し、新しい方法で投稿することができます。何かが間違っていると言うことができます。 – max

+0

チェックアウト!私があなたの提案したコードのすぐ下に私のページで行った変更!私はとても感謝しますが、助けてくれてありがとう! – JACrypto

関連する問題