ズバリこの教えてgooの右下にある

「1|2|3|/3項」

のようなリンクページのPHPロジックを教えていただけないでしょうか。

このQ&Aに関連する最新のQ&A

A 回答 (3件)

すみません、ちょっと漏れがありました。



"select id, name from member limit".($pn-1)*10.",".$ln;

として、pnを十倍しなければなりませんねm(__)m

変数は、事前に宣言する必要もなく、必要になったところで記述すればよいのです。

あと、"<a href=honyarara.php?$pn=".$pn.">".$pd

のところは

"<a href=honyarara.php?pn=".$pn.">".$pd

でした。重ね重ねm(__)m
    • good
    • 0

「PHPロジック」とか「perlでは」とか、そういうものとは離れて考えれば、答えは自ずから見つかると思いますが?



例えば、データが99件あり10件ずつ表示するには、一つ前のデータを表示するためには、
99-10=89、以下同様に、
99-10*2=79
99-10*3=69
というふうに開始番号が求まりますので、そこから10件分繰り返します。
一番最後はきっちり10件あるとは限らないので少し工夫が必要かも分かりません。これもプログラムとは離れて考えてください。

あとは、実際のプログラムを作るだけです。この程度はやさしいですが、もっと複雑なときにはマニュアルで使えそうな関数を調べ、一つで無理ならいろいろ組み合わせてプログラミングします。

右下のところにマウスをあてて下のステータスエリアの表示をみれば納得できると思いますよ。
    • good
    • 0

phpとmysqlなど一部のデータベースを組み合わせるとき、select文に表示行数の制約を加えることができます。



例えば、
select id, name from member limit 0,10

とすると、頭から10行を表示する、という意味です。

この0の部分を10、20と移動することにより、表示を開始するレコード番号を代えることができます。

さて、該当レコード数をcnt、一度に表示する行数をlnとすると、表示に必要なページ数pg=int(cnt/ln)となります。表示させたいページ番号はpn、その画面上の表示をpdとすると、先のクエリは次のように書き直せます。

"select id, name from member limit".$pn-1.",".$ln;

で、リンクですが、$pnの部分にページ番号を代入してやればよいのですから、

"<a href=honyarara.php?$pn=".$pn.">".$pd

といった形になります。

phpの文法については割愛しますが、不明な点はご質問下さい。

この回答への補足

◎セレクト文で
「LIMIT 0,10」は
「LIMIT 10 OFFSET 0」のことでしょうか?

◎pg=int(cnt/ln)とあるのですが$pn、$pdはどこからもってきた変数でしょうか?

◎"select id, name from member limit".$pn-1.",".$ln;
では一つずつしか変動しないのではないでしょうか?

補足日時:2003/10/01 16:01
    • good
    • 0

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QボタンをクリックでPHP文を実行

ボタンをクリックしたときのみPHP文を実行したいのですが・・・

<input type="button" onClink="<?php~?>">
でいけるかと思ったのですが、
ページ表示時に<?php~?>が実行されてしまい、うまくいきませんでした。

onClink="window.open(test.php)"
という方法以外でお願いします。

Aベストアンサー

AjaxはもともとJavaScriptの機能である非同期通信をつかったもので。Ajaxという言語があるわけではありません

Ajaxを利用するのであれば、JavaScriptのXMLHttpRequestを使って非同期通信できるような実装をしなくてはなりません
簡単にサンプルコードで書けるほど単純なものでもありません

一般的なサーバーサイドスクリプトの動作として、
ボタンを押す->サーバーへリクエストする->サーバーが処理する->クライアントに何かしらの結果を返す(出力する)です
つまり、PHP等のサーバーサイドスクリプトは、遷移させることが大前提で動作します

ですから、ボタンを押してその場でJavaScriptと同じようにPHPが動くなんてことはありえません。
ボタンを押したらサーバーにリクエストする という動作ならば可能です。

つまり
質問で言われているような
onClink="window.open(test.php)"

<form name="f1" action="test.php" method="post">
<input type="submit" name="submit" value="submit" />
</form>
等のような形になります

こういった一般的な方法だと いちいち画面が切り替わったようになってしまうのを嫌って Ajaxでコレと同じことを、画面を切り替えずに行っているだけに過ぎません

AjaxはもともとJavaScriptの機能である非同期通信をつかったもので。Ajaxという言語があるわけではありません

Ajaxを利用するのであれば、JavaScriptのXMLHttpRequestを使って非同期通信できるような実装をしなくてはなりません
簡単にサンプルコードで書けるほど単純なものでもありません

一般的なサーバーサイドスクリプトの動作として、
ボタンを押す->サーバーへリクエストする->サーバーが処理する->クライアントに何かしらの結果を返す(出力する)です
つまり、PHP等のサーバーサイドスクリプトは、...続きを読む

Qデータベースのページング出力を行うPHPのコード

現在、phpとmySQLを勉強しています。

データベース名:animal、テーブル名:pet、フィールド名が順にID:title:url:scoreで
1:ねこ:neko.com:43
2:いぬ:空白:24
3:空白:空白:空白
4:とり:bird.com:62

というデータがあります。

このとき、
1<a href="neko.com">ねこ</a>43<br>
2<a href=" ">いぬ</a>24<br>
3<a href=" "></a><br>
4<a href="bird.com">とり</a>62<br>

のように10行ずつhtmlに出力するPHPを書こうと思っています。
10行ずつですので、上の例だとURLの最後の書き換えによってpage=2、page=3、…とアクセスできます。


自分でもmysqlを呼び出し、要素を変数に格納して、foreachを使って最後まで順繰りに出力するように作成して、ページングするように作ってみたのですが、どうも正常に出力されません。

考えましたがどうにも原因が不明なので、どなたかこのような動作を示すPHPの模範コードを書いていただけないでしょうか。

PHPは未だ勉強中ですが、教えていただいたコードと自分のコードを比較して、より精進したいと思います。

どうかよろしくお願いします。

現在、phpとmySQLを勉強しています。

データベース名:animal、テーブル名:pet、フィールド名が順にID:title:url:scoreで
1:ねこ:neko.com:43
2:いぬ:空白:24
3:空白:空白:空白
4:とり:bird.com:62

というデータがあります。

このとき、
1<a href="neko.com">ねこ</a>43<br>
2<a href=" ">いぬ</a>24<br>
3<a href=" "></a><br>
4<a href="bird.com">とり</a>62<br>

のように10行ずつhtmlに出力するPHPを書こうと思っています。
10行ずつですので、上の例だとURLの最後の書き換え...続きを読む

Aベストアンサー

簡単なページング機能付きで書いてみました。
細部でなにかしら修正が必要かもしれないのでがんばってください。
(質問文を見るとGETを使うような記述でしたがこれはPOSTで処理してます)
検索機能とか付けてみるのも勉強になると思いますよ。

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta http-equiv="Pragma" content="No-Cashe">
<meta http-equiv="Cache-Control" content="No-Cache">
<title>リスト</title>
<script type="text/javascript">
<!--
function changepage (page) {
document.forms["linkform"].page.value = page;
document.forms["linkform"].submit();
}
-->
</script>
</head>
<body>
<?php
// MYSQL DB接続パラメータ設定(自分の環境に合わせて設定)
$host=""; // ホスト名
$user=""; // ユーザー名
$pass=""; // パス
$dbname=""; // 使用DB名

// 表示するページの決定
if (isset($_POST["page"])) {
$page=$_POST["page"];
} else {
$page=1;
}
// MYSQLコネクト
mysql_select_db($dbname,mysql_connect($host,$user,$pass)) or die("DBコネクトエラー");
// 1ページ表示最大件数設定
$maxrow=10;
// 全件数を取得
$sql = "SELECT count(*) as count FROM pet";
$result=mysql_query($sql);
$row=mysql_fetch_assoc($result);
$count = $row["count"];
// 表示するページのデータの先頭行と最終ページの値を計算する
$first = (($page-1)*$maxrow);
$maxpage=intval((($count-1)/$maxrow)+1);
// ページリンク作成(表示ページの番号は少し大きくする)
$pagelink = "全".$count."件<br>\n";
for ($i=1;$i<=$maxpage;$i++) {
$pagelink = $pagelink."<a href=\"#\" onclick=\"changepage('".$i."');return false;\">";
if ($i==$page) {
$pagelink = $pagelink."<font size=\"+2\">".$i."</font></a> ";
} else {
$pagelink = $pagelink.$i."</a>\n";
}
}
print($pagelink."<br><hr>");

// 情報を取得
$sql = "SELECT id,title,url,score FROM pet";
$sql = $sql." ORDER BY id limit ".$first.", ".$maxrow;
$result=mysql_query($sql);
while($row=mysql_fetch_assoc($result)) {
?>
<?php print($row["id"]); ?><a href="<?php print($row["url"]); ?>"><?php print($row["title"]); ?></a><?php print($row["score"]); ?><br>
<?php
}
?>
</table>
<form action="list.php" name="linkform" method="post">
<input type="hidden" name="page" value="">
</form>
</body>
</html>

簡単なページング機能付きで書いてみました。
細部でなにかしら修正が必要かもしれないのでがんばってください。
(質問文を見るとGETを使うような記述でしたがこれはPOSTで処理してます)
検索機能とか付けてみるのも勉強になると思いますよ。

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta http-equiv="Pragma" content="No-Cashe">
<meta http-equiv="Cache-Control" content="No-Cache">
<title>リスト</title>
<script type="text/javascript">
<!--
function ...続きを読む


人気Q&Aランキング