10 レコードのテーブルがあり、それらの 10 レコードからname、lastname、およびrankを取得したいとします。まず、私は次のようなことをします:
<?php // DATABASE SELECT QUERY
$db =& JFactory::getDBO();
$query="SELECT name, lastname, rank
FROM table
ORDER BY rank ASC";
$db->setQuery($query);
$rows = $db->loadObjectList(); ?>
次に、テーブルの値を含むいくつかのフィールドをフォームに追加して、フォームから編集できるようにします。
<form action="#" method="post" name="form">
<table><?php $count = 0; while ($count < 10){
$name = $rows[$count]->name;
$lastname = $rows[$count]->lastname;
$rank = $rows[$count]->rank; ?>
<tr>
<td><input name="name" value="<?php echo $name ?>" type="text" /></td>
<td><input name="lastname" value="<?php echo $lastname ?>" type="text" /></td>
<td><select name="rank">
<option value="<?php echo $rank ?>"><?php echo $rank ?></option>
<option disabled="disabled" value="...">...</option>
<?php for ($i = 0; $i <= 100; $i++){ ?>
<option value="<?php echo $i ?>"><?php echo $i ?></option> <?php } ?>
</select></td>
</tr><?php $count++;}?>
</table>
<input class="something" name="updatemod" type="submit" value="UPDATE" />
</form>
次に、Select クエリの前に、以下のメソッドを使用して更新クエリを追加したので、更新ボタンを押したときに DB を更新します。
// DATABASE UPDATE QUERY
if (isset($_POST['updatemod']) or isset($_GET['updatemod'])){
$db =& JFactory::getDBO();
$query = "UPDATE table
SET name = '".$_POST["name"]."',
SET lastname = '".$_POST["lastname"]."',
SET rank = '".$_POST["rank"]."'
";
$db->setQuery($query);
$db->query();}
しかし...何も機能していません!!! 私は他のフォームに対してまったく同じことをしましたが、完璧に機能しています! これら 2 つの形式の唯一の違いはwhile
、もう一方の形式ではこのループを使用していないことです。それで、多分これか何かに関係がありますか?わかりません。この時点で私の知識が混乱しているので、あなたの助けが必要です!