4

次のフィールドを持つモスクのデータベースがあります:mosque_id、mosque_name、都道府県、住所、郵便番号、ウェブサイト、email1、phone1。最初のモスク(mosque_id = 1)の情報をフォームに表示し、「次へ」をクリックすると、2番目のモスク(mosque_id = 2)の情報が表示されます。

これまで、mosque_idを使用して行全体を選択し、情報を表示することはできましたが、次の行に切り替える方法を見つけるのに苦労していました。私はPHPとMYSQLに非常に慣れていないので、助けていただければ幸いです。

<?
$mosque_id = 1;
$result = mysql_query("SELECT * FROM Mosque WHERE mosque_id='$mosque_id'");
$row = mysql_fetch_assoc($result);
?>

<form action="insert.php" method="post">
Mosque Name: <?php print('<input type="text" name="firstname" value="' . $row['mosque_name'] . '"/><br>')?>
Prefecture: <?php print('<input type="text" name="firstname" value="' . $row['prefecture'] . '"/><br>')?>
Address: <?php print('<input type="text" value="' . $row['address'] . '"/><br>')?>
Postal Code: <?php print('<input type="text" value="' . $row['postal_code'] . '"/><br>')?>
Website: <?php print('<input type="text" value="' . $row['website'] . '"/><br>')?>
Email 1: <?php print('<input type="text" value="' . $row['email1'] . '"/><br>')?>
Contact number 1: <?php print('<input type="text" value="' . $row['phone1'] . '"/><br>')?>

<input type="button" value="Next Mosque" onclick=""/>
</form>
4

3 に答える 3

4
    <?php
$mosque_id = (isset($_GET['mosque_id']) ? intval($_GET['mosque_id']) : 1); // suppose you know that '1' is the first id in your table
$result = mysql_query("SELECT * FROM Mosque WHERE mosque_id>='$mosque_id' limit 2");
$row = mysql_fetch_assoc($result); // this is the row you're gonna display in the form
$row2 = mysql_fetch_assoc($result); // this will tell us about the next row
?>
<form action="insert.php" method="post">
Mosque Name: <?php print('<input type="text" name="firstname" value="' . $row['mosque_name'] . '"/><br>')?>
Prefecture: <?php print('<input type="text" name="firstname" value="' . $row['prefecture'] . '"/><br>')?>
Address: <?php print('<input type="text" value="' . $row['address'] . '"/><br>')?>
Postal Code: <?php print('<input type="text" value="' . $row['postal_code'] . '"/><br>')?>
Website: <?php print('<input type="text" value="' . $row['website'] . '"/><br>')?>
Email 1: <?php print('<input type="text" value="' . $row['email1'] . '"/><br>')?>
Contact number 1: <?php print('<input type="text" value="' . $row['phone1'] . '"/><br>')?>

<input type="button" value="Next Mosque" onclick="window.location = 'path-to-your-page?mosque_id=<?php echo $row2['mosque_id'];"/>
</form>
于 2012-11-13T09:08:45.700 に答える
1

まず、mysql 関数ではなく、mysqli 関数または PDO クラスを使用してください。これらは非推奨です。

次に、長い PHP タグを使用する

しかし、あなたは正しい軌道に乗っています:

最初の行を次のように置き換えます。

$mosque_id = (isset($_GET['mosque_id']) ? intval($_GET['mosque_id']) : 1);

そして最後に

<input type="button" value="Next Mosque" onclick="javascript: document.location = '?mosque_id=<?php echo ($mosque_id + 1);?>"/>

また、クエリの後にいくつかのチェックを書き込む必要があります。そのような ID が存在し、実際にさらに開発する場合は、次の mosque_id もチェックする必要があります。いくつかの行を削除すると、ID-S が 1 のように正しい順序にならない可能性があるためです。 2, 3, 4 でも 1, 3, 7, 9 (ヒント: 次の ID には WHERE mosque_id > current_id ORDER BY mosque_id DESC LIMIT 1 を MySQL で使用)

于 2012-11-13T08:58:35.760 に答える
1

Just have a hidden input holding the ID, and increment it when the page loads. Then, when you submit, the ID will be submitted too.

<?
if (isset($_POST['id']) {
   $id = $_POST['id'];
}
else {
    $id = 1;
}

$result = mysql_query("SELECT * FROM Mosque WHERE mosque_id='$id'");
...
?>

<form action="insert.php" method="post">
...

<input type='hidden' name='id' value='<?php echo $mosque_id++; ?> />
<input value="Next Mosque" />
</form>

And by the way, use PDO. It's very easy to learn and adds a huge level of security to your application.

于 2012-11-13T08:58:41.480 に答える