私はPHPスクリプトを使用しており、 PDO経由でデータベースに接続しています。データベースには 2 つのテーブルが含まれています。最初の 1 つはrequired_items
で、もう 1 つはdonations
です。
required_items
次の列を含む: id
, name
,required_amount
donations
次の列を含む: id
, name
, email
, donation_amount
,item_id
ここに私が取り組んでいる簡単なコードがあります:
<?php
$pageName = "/donations/index.php";
$databaseHost = "localhost";
$databaseName = "donations";
$databaseUser = "root";
$databasePassword = "pwd";
//TODO Check, validate, sanitize your input...
$name = $_POST['name'];
$email = $_POST['email'];
$donation_amount = $_POST['amount'];
$item_id = $_POST['radioButtons'];
try {
$db = new PDO('mysql:host=' . $databaseHost . ';dbname=' . $databaseName . ';charset=utf8', $databaseUser, $databasePassword);
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$db->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
} catch (PDOException $e) {
echo "Exception: " . $e->getMessage(); //TODO better error handling
}
// Check to see if someone wants to donate something
if(!empty($_REQUEST['donate']))
{
try {
//Construct your query with placeholders
$sql = "INSERT INTO donations (name, email, donation_amount, item_id) VALUES (?, ?, ?, ?)";
//Prepare your query
$query = $db->prepare($sql);
//Execute it passing parameters
$query->execute(array($name, $email, $donation_amount, $item_id));
echo("Thank you for donating!\n<br>\n<br>");
} catch (PDOException $e) {
echo "Exception: " . $e->getMessage(); //TODO better error handling
}
}
$request = "SELECT
required_items.id,
required_items.name,
required_items.required_amount - donations.donation_amount AS Amount_Left,
donations.item_id
FROM required_items JOIN donations ON donations.item_id=required_items.id";
$stmt = $db->query($request);
$item_info = $stmt->fetch();
// Round negative amounts to zero
if($item_info['Amount_Left'] < 0){
$item_info['Amount_Left'] = 0;
}
?>
<!--Print out the table tag and header-->
<form name="donationForm" action="<?php $pageName ?>" method="POST">
<fieldset>
<table>
<tr>
<th>Item Name</th><th>Amount</th>
</tr>
<tr>
<td><?php $item_info['name'] ?></td>
<td><?php $item_info['Amount_Left'] ?></td>
<td><input type="radio" name="radioButtons" value="<?php $item_info['item_id'] ?>"></input></td>
</tr>
</table>
<div><label>Amount</label><input type="number" name="amount"></div>
<div><label>Email</label><input type="email" name="email"></div>
<div><label>Name</label><input type="text" name="name"></div>
<div><input type="submit" name="donate" value="Donate"></div>
</fieldset>
</form>
誰でもこれで私を助けてもらえますか?何が問題なのか正確にわからないため、スクリプト全体を含めました。表の情報をエコーアウトしようとしましたが、うまくいきませんでした。基本的に、テーブル フィールドにはラジオ ボタン以外は何も表示されません。