2017-03-11 2 views
1

これは、特定のサイトの管理パネルのコードです。このページには顧客からの依頼があります。管理者は可用性に基づいて予定をchangeにすることができます。ループによって生成されたフォームの特定の行を送信する

<?php 

while($row = mysqli_fetch_assoc($result)){ 

?> 

<form action="adminEdit.php" method="POST"> 
<tr> 

    <td><input type="text" id="name" value="<?php echo $row['Name'];?>"></input></td> 
    <td><input type="text" id="address" value="<?php echo $row['Address'];?>"></input></td> 
    <td><input type="text" id="phone" value="<?php echo $row['Phone'];?>"></input></td> 
    <td><input type="text" id="license" value="<?php echo $row['Car_License_No'];?>"></input></td> 
    <td><input type="text" id="engine" value="<?php echo $row['Car_Engine_No'];?>"></input></td> 
    <td><input type="text" id="date" value="<?php echo $row['Date'];?>"></input></td> 
    <td><input type="text" id="mechanic" value="<?php echo $row['Mechanic'];?>"></input></td> 

    <td><input type="submit" name="submit" value="Change"/></td> 

</tr> 
</form> 

<?php 

} 

?> 

ここで、データの各行には、対応するボタンがあり、その特定の行のレコードを変更または変更するために使用されます。管理者が特定の予定を変更すると、データベースで更新されます。

私の問題は、すべての行がwhileループによって生成されていることです。特定の行のchangeボタンがクリックされたとき、どのようにして特定の行にアクセスできますか?行がループによって生成されるので、私はt be able to access them by名前or id because all of them will have the sameの名前をand id`で獲得しました。

関連する質問は検索されましたが、いずれも私のシナリオと一致しませんでした。答えを得るのに大いに役立つでしょう。前もって感謝します。

答えて

0

個人的には、データをよりうまくコントロールして問題を解決するために、出力をループに入れないでください。また、各ループに新しいフォームを作成しています。
DBをループして新しい変数を作成し、その変数を使用してフォーム内のデータを出力するだけです。

while ($row = mysqli_fetch_assoc($result)) { 
    $someNewVar[$row['id']] = $row; 
    // The 'id' index would be from DB which identifies individual rows 
} 
?> 

<form action="adminEdit.php" method="POST"> 

<?php 
foreach ($someNewVar as $index => $value) { 
?> 
<tr>  
    <td> 
    <input 
     type="text" 
     id="<?php echo $index;?>" 
     value="<?php echo $value['Name'];?>"> 
    </input> 
    </td> 
    <td> 
    <input 
     type="submit" 
     name="submit" 
     value="Change"/> 
    </td> 
</tr> 

<?php 
} 
?> 
</form> 

は、その後、あなたが送信ボタンをクリックしてから渡された行のIDを持っている必要があるだろう:

例のコードは基本的な考え方ではなく、テストしたり、それは完全などだ旨を表示します。


このアプローチ全体が整理され、出力する場所とは別のファイルでデータを取得する必要があります。 次に、データを取得したファイルで、データが取得されていないかどうかを管理するために、出力ファイルでも識別される配列に配列を設定できます。
getData.php

while ($row = mysqli_fetch_assoc($result)) { 
    $dataFromDb[$row['id']] = $row; 
} 
$someNewVar = !empty($dataFromDb) ? $dataFromDb : false; 

showData.php

if ($someNewVar) { 
    // do the loop and form 
} else { 
    echo 'sorry no data found'; 
} 
+0

すなわち
は、あなたの正確な答えをどうもありがとうございます。尋ねるだけで、各入力に隠れた価値を置く方法がありますか? –

+0

IDなどのフォームの各ループ(各行)に非表示の値を入れ、送信時に送信することができます。 – James

関連する問題