1

ボランティアがシフトをチェックできるスケジュールのデータベースを持っています。この情報にアクセスするために、HTMLフォームに電子メールアドレスを入力するページへのリンクを電子メールで送信します。

データベースにアクセスしていない人にスケジュールリンクを再送信できるように、クエリされた電子メールを追跡する方法はありますか?

必要に応じて、結果に「確認済み」チェックボックスを追加して、データベースを更新することができます。私はそのアイデアが好きですが、どのように実装するか(またはそのアクションがどうなるかについての用語)がわかりません。

編集:これが私が実装するために使用しているコードです。ただし、確認済みの列に結果が表示されません。

                $db = new mysqli("host", "user", "pass", "db");

    $stmt = $db->prepare('UPDATE volConfirm SET confirmed = TRUE WHERE email = ?');
    $stmt->bind_param('s', $_POST['email']);
    $stmt->execute();

    $stmt = $db->prepare('SELECT * from volConfirm WHERE email = ?');
    $stmt->bind_param('s', $_POST['email']);
    $result = $stmt->get_result();
    while ($row = $result->fetch_array(MYSQLI_NUM)) {
    // construct your output here using $row to access database record
    echo "<h2>" . $row['agreeName'] . "</h2>";
    echo "<p> You have been assigned as a volunteer for:" . $row['position'] . "</p>";
    echo "<p>Your shift times are scheduled for:" . $row['shift_times'] . "</p>";
    echo "<p>Your shift has been confirmed:" . $row['confirmed'] . "</p>";
    }
4

1 に答える 1

1

あなたは次の線に沿って何かをする必要があります:

  1. ボランティアテーブルに新しい列を追加します

    ALTER TABLE Volunteers ADD COLUMN Confirmed BOOLEAN NOT NULL DEFAULT FALSE;
    
  2. 送信ページのPHPにその列を更新させます。

    UPDATE Volunteers SET Confirmed = TRUE WHERE Email = 'foo@bar.com';
    

    コードスニペット:

    $db = new mysqli("dbhostname", "username", "password", "dbschema");
    
    $stmt = $db->prepare('UPDATE volConfirm SET confirmed = TRUE WHERE email = ?');
    $stmt->bind_param('s', $_POST['email']);
    $stmt->execute();
    
    $stmt = $db->prepare('SELECT * from volConfirm WHERE email = ?');
    $stmt->bind_param('s', $_POST['email']);
    $result = $stmt->get_result();
    
    while ($row = $result->fetch_array(MYSQLI_NUM)) {
      // construct your output here using $row to access database record
    }
    
  3. 将来のある時点で、まだページにアクセスしていないすべてのユーザーのリストを取得します。

    SELECT Email FROM Volunteers WHERE Confirmed = FALSE;
    
于 2012-04-24T13:59:14.597 に答える