昨日、このコードについて質問を送信しましたが、別の問題に遭遇しました。また、エスケープなどにエラーがあると思われるので、どんな意見でも大歓迎です。
このページには、寄付できるアイテムが 2 つあります。必要なアイテムの数は、寄付されたものに基づいて変化し、データベースに保存されます。ただし、項目番号の 1 つだけが変更されています。コードは次のとおりです。
$amount_left = $db->query("SELECT required_items.name AS Name, required_items.required_amount - donations.donation_amount AS Amount_Left
FROM required_items AS r JOIN donations AS d ON d.item_id=r.id");
// Print out the table tag and header
echo("<form name=\"donationForm\" action=\"" . $pageName ."\" method=\"POST\">\n<fieldset>");
echo("<table>\n");
echo("<tr>\n<th>Item Name</th><th>Amount</th>\n</tr>\n");
try{
// Round negative amounts to zero
if($amount_left['Amount_Left'] < 0){
$amount_left['Amount_Left'] = 0;
}
// Create a new table row
echo("<tr>");
// Create a new table cell for the name and required_amount fields
echo("<td>" . $amount_left['Name'] . "</td>");
echo("<td>" . $amount_left['Amount_Left'] . "</td>");
echo("<td><input type=\"radio\" name=\"radioButtons\" value=\"". $row['id'] ."\"></input></td>");
echo("</tr>\n");
} catch(PDOException $e) {
// Catch all errors and print them out
echo("Error: ");
echo($e->getMessage());
}
// Close the table and create our submit button
echo("</table>\n<br>\n");
echo("<div>\n<label>Amount</label>\n<input type=\"number\" name=\"amount\">\n</div>\n");
echo("<div>\n<label>Email</label>\n<input type=\"email\" name=\"email\">\n</div>\n");
echo("<div>\n<label>Name</label>\n<input type=\"text\" name=\"name\">\n</div>\n");
echo("<div>\n<input type=\"submit\" name=\"donate\" value=\"Donate\" />\n</div>\n");
echo("</fieldset>\n</form>\n")
データベースには 2 つの必須アイテムが含まれています。1 つ目は数量 20 を要求し、2 つ目は数量 10 を要求します。2 つ目は、データベース内の寄付に基づいてその数を更新しません。
また、すべての html をエコーする利点はありますか? または、ウェブページに載せることはできますか?
編集:私の側で明確にするために、データベースにはrequired_items用と寄付用の2つのテーブルが含まれています。
required_items には次のものがあります: id、name、required_amount
寄付には: id、name、email、donation_amount、item_id があります