0

メールアドレスを含むdbmsからデータを抽出するphpページがあります。これは機能します。次に、電子メールアドレスとその他の保存されたデータデータを表示します。ユーザーは、emailselectedと呼ばれるphpページで設計されたフィールドに「X」を入力するオプションがあります。これも機能します。保存された電子メールアドレスに基づいて新しいフィールドでdbmsを更新したいのですが、updateステートメントが機能しません。助けてください。phpファイルのこの部分はここにあります。

    include("db.php");
if (isset($_POST['ssubmit']))
    {
    $id_save = $test['id'];
    $emailselected_save = $_POST['emailselected'];
    $email_save = $test['email'];

    mysql_query("UPDATE emails SET selected='$emailselected_save' WHERE id = 'id'");
    echo "<input type='button' value='Email(s) sent' onclick='goBack()' />";
mysql_close($conn);
    } else {echo "hello";}
?>
</head>
<form method='post'>
    <div id='headd'>
    <br />
    <input type='button' value='Close this window without Sending' onclick='goBack()' />
    <input type='submit' name='ssubmit' id='ssubmit' value='Send Email Now!!!' />
    <p>Place an "X" in the emails you wish to send!!!</p>
    </div>
    <body>
        <br /><br/>

<?php
    include("db.php");  
    $result = mysql_query("SELECT * FROM emails WHERE unsubscribe  != 'x' ORDER BY lastname ASC");
            while($test = mysql_fetch_array($result))
            {
?>
    <table border='1' width='78%'>
    <tr align=\"left\">
        <td width='4%'><font color='black'><input type='text' size='1' id='emailselected' name='emailselected' /></font></td>
        <td width='15%'><font color='black'><?php echo $test['lastname']?></font></td>
        <td width='15%'><font color='black'><?php echo $test['firstname']?></font></td>
        <td width='40%'><font color='black'><?php echo $test['email']?></font></td>
        <td width='4%'><font color='black'><?php echo $test['id']?></font></td>
    </tr>
</table>
<?php
            }
?>
</form>

フォームの上部には、includeステートメントがあります。これは、電子メールaddyを抽出し、それをphpファイルに表示するために機能します。

私は何が間違っているのですか?

4

1 に答える 1

0

データが更新されなかった場合、次の可能性にかなり制限されます。

  • ステートメントは失敗しました。また
  • ステートメントは行に影響を与えませんでした。また
  • ステートメントが間違った行に影響を与えました。

どちらを見つけるには、からの戻りコードをチェックして、mysql_query失敗したかどうかを確認する必要があります。

$rc = mysql_query('my hovercraft is full of eels');
if (!$result) {
    die('What?: ' . mysql_error());
}

失敗しなかった場合は、影響を受けた行数を確認する必要がありますmysql_affected_rows()

$num = mysql_affected_rows();
printf("Updated %d rows\n", $num);

戻り値を返す関数からの戻り値をチェックすることは、優れたプログラミング手法です。

また、SQLステートメントで使用しているすべての変数を出力またはログに記録して、それらが自分の考えどおりであることを確認することもお勧めします。

そして、言うまでもなく、mysql_*関数の使用は推奨されていませんが、代わりにmysqli_*(またはPDOを使用する必要があります。


そして、HTML要素の階層が完全に正しくないように見えることに気づいただけです。あなたは効果的に持っています:

<head>
    :
</head>
<form>
    :
    <body>
        :

それは私にとってはゲル化しません。それが体のformで有効かどうかはわかりません。w3cの仕様によると、html要素には次のものが含まれている必要があります。

ヘッド要素の後にボディ要素が続きます。

于 2012-12-13T12:59:54.523 に答える