PHP if ifset($ _ POST不起作用

时间:2014-10-16 23:55:04

标签: php

我的页面上有一个简单的表单,我希望在将值插入数据库之前确保每个字段都已填充。问题是条件永远不会满足,即使每个字段都填满了我仍然会得到"缺少某些东西" ...

Search:

<form method="post" action="<?php echo $_SERVER[" PHP_SELF "]?>">
    <input placeholder="e-mail address" type="text" name="email_search">
    <input type="submit" name="search" value="Go">

    <?php if (isset($_POST[ "search"])) { $email_search=m ysql_real_escape_string($_POST[ "email_search"]); $check=m ysql_query( "SELECT * FROM torzsvendegek WHERE email = '$email_search'"); $s=m ysql_fetch_array($check); }?>

    <form method="post" action="<?php echo $_SERVER[" PHP_SELF "]?>">
        <table width="440" border="0" style="text-align:right;">
            <tr>
                <td>E-mail:</td>
                <td>
                    <input type="text" name="email" value="<?php echo $email_search;?>" disabled>
                </td>
            </tr>
            <tr>
                <td>Név:</td>
                <td>
                    <input type="text" name="nev" value="<?php echo $s['nev'];?>">
                </td>
            </tr>
            <tr>
                <td>Mikor:</td>
                <td>
                    <input type="text" name="mikor">
                </td>
            </tr>
            <tr>
                <td>Éjszakák száma:</td>
                <td>
                    <input type="text" name="ejszakak">
                </td>
            </tr>
            <tr>
                <td>Nemzetisége:</td>
                <td align="left">&nbsp;&nbsp;
                    <select name="nyelv">
                        <option value="magyar" <?php if($s[ 'nyelv']=="magyar" ) echo "selected=\"selected\ ""; ?>>Magyar</option>
                        <option value="nemet" <?php if($s[ 'nyelv']=="nemet" ) echo "selected=\"selected\ ""; ?>>Német</option>
                        <option value="lengyel" <?php if($s[ 'nyelv']=="lengyel" ) echo "selected=\"selected\ ""; ?>>Lengyel</option>
                        <option value="roman" <?php if($s[ 'nyelv']=="roman" ) echo "selected=\"selected\ ""; ?>>Román</option>
                        <option value="szlovak" <?php if($s[ 'nyelv']=="szlovak" ) echo "selected=\"selected\ ""; ?>>Szlovák</option>
                        <option value="egyeb" <?php if($s[ 'nyelv']=="egyeb" ) echo "selected=\"selected\ ""; ?>>Egyéb</option>
                    </select>
                </td>
            </tr>
            <tr>
                <td>Megjegyzés:</td>
                <td>
                    <textarea name="megjegyzes">
                        <?php echo htmlspecialchars($s[ 'megjegyzes']);?>
                    </textarea>
                </td>
            </tr>
        </table>
        <br>
        <table width="440">
            <tr>
                <td>
                    <input type="submit" name="submit_add" value="Hozzáad">
                </td>
            </tr>
        </table>
    </form>

    <?php if (isset($_POST[ "submit_add"]) && !empty($_POST[ "nev"]) && !empty($_POST[ "email"]) && !empty($_POST[ "mikor"]) && !empty($_POST[ "ejszakak"])){ $nev=m ysql_real_escape_string($_POST[ "nev"]); $email=m ysql_real_escape_string($_POST[ "email"]); $mikor=m ysql_real_escape_string($_POST[ "mikor"]); $ejszakak=m ysql_real_escape_string($_POST[ "ejszakak"]); $nyelv=m ysql_real_escape_string($_POST[ "nyelv"]); $megjegyzes=m ysql_real_escape_string($_POST[ "megjegyzes"]); $check2=m ysql_query( "SELECT * FROM torzsvendegek WHERE email = '$email'"); $br="<br>" ; if (mysql_num_rows($check2)> 0) { $adatok = mysql_fetch_array($check2); $osszesen = ($adatok['ejszakak'] + $ejszakak); mysql_query("UPDATE torzsvendegek SET nev = '".$nev."', mikor = '".$adatok['mikor']."".$mikor."".$br."', ejszakak = '".$osszesen."', nyelv = '".$nyelv."', megjegyzes = '".$adatok['megjegyzes']."".$megjegyzes."".$br."' WHERE email = '".$email."'"); echo "
    <br>".$email." Updated"; } else { mysql_query("INSERT INTO torzsvendegek (id, nev, email, mikor, ejszakak, nyelv, megjegyzes) VALUES (NULL, '$nev', '$email', '".$mikor."".$br."', '$ejszakak', '$nyelv', '".$megjegyzes."')"); echo "
    <br>".$email." Added"; } } else { echo "Something is missing"; } ?>

3 个答案:

答案 0 :(得分:0)

您需要关闭搜索表单标记以保持两个表单分开

Search:<form method="post" action="<?php echo $_SERVER["PHP_SELF"]?>"><input placeholder="e-mail address" type="text" name="email_search"><input type="submit" name="search" value="Go"></form>

<form method="post" action="<?php echo $_SERVER["PHP_SELF"]?>">
<table width="440" border="0" style="text-align:right;">
<tr><td>E-mail:</td><td><input type="text" name="email" value="<?php echo $email_search;?>" disabled></td></tr>
<tr><td>Név:</td><td><input type="text" name="nev" value="<?php echo $s['nev'];?>"></td></tr>
<tr><td>Mikor:</td><td><input type="text" name="mikor"></td></tr>
<tr><td>Éjszakák száma:</td><td><input type="text" name="ejszakak"></td></tr>
<tr><td>Nemzetisége:</td><td align="left">&nbsp;&nbsp;<select name="nyelv">
<option value="magyar" <?php if($s['nyelv']=="magyar") echo "selected=\"selected\""; ?>>Magyar</option>
<option value="nemet" <?php if($s['nyelv']=="nemet") echo "selected=\"selected\""; ?>>Német</option>
<option value="lengyel" <?php if($s['nyelv']=="lengyel") echo "selected=\"selected\""; ?>>Lengyel</option>
<option value="roman" <?php if($s['nyelv']=="roman") echo "selected=\"selected\""; ?>>Román</option>
<option value="szlovak" <?php if($s['nyelv']=="szlovak") echo "selected=\"selected\""; ?>>Szlovák</option>
<option value="egyeb" <?php if($s['nyelv']=="egyeb") echo "selected=\"selected\""; ?>>Egyéb</option>
</select></td></tr>
<tr><td>Megjegyzés:</td><td><textarea name="megjegyzes"><?php echo htmlspecialchars($s['megjegyzes']);?></textarea></td></tr>
</table><br>
<table width="440"><tr><td><input type="submit" name="submit_add" value="Hozzáad"></td></tr></table>
</form>

答案 1 :(得分:0)

你的代码犯了2个错误:

1)您没有关闭第一张表格(缺少&lt; / form&gt;)
2)您禁用了电子邮件输入字段,该字段始终为空

这里有更新的(虽然已弃用且不安全!!!)代码:

<?php

if(isset($_POST["search"])){

    $email_search = mysql_real_escape_string($_POST["email_search"]);
    $check = mysql_query("SELECT * FROM torzsvendegek WHERE email = '$email_search'");
    $s = mysql_fetch_array($check);
}

if(isset($_POST["submit_add"]) && !empty($_POST["nev"]) && !empty($_POST["email"]) && !empty($_POST["mikor"]) && !empty($_POST["ejszakak"])){

    $nev = mysql_real_escape_string($_POST["nev"]);
    $email = mysql_real_escape_string($_POST["email"]);
    $mikor = mysql_real_escape_string($_POST["mikor"]);
    $ejszakak = mysql_real_escape_string($_POST["ejszakak"]);
    $nyelv = mysql_real_escape_string($_POST["nyelv"]);
    $megjegyzes = mysql_real_escape_string($_POST["megjegyzes"]);

    $check2 = mysql_query("SELECT * FROM torzsvendegek WHERE email = '$email'");
    $br = "<br>";

    if (mysql_num_rows($check2) > 0){
        $adatok = mysql_fetch_array($check2);
        $osszesen = ($adatok['ejszakak'] + $ejszakak);
        mysql_query("UPDATE torzsvendegek SET nev = '".$nev."', mikor = '".$adatok['mikor']."".$mikor."".$br."', ejszakak = '".$osszesen."', nyelv = '".$nyelv."', megjegyzes = '".$adatok['megjegyzes']."".$megjegyzes."".$br."' WHERE email = '".$email."'");
        echo "<br>".$email." Updated";
    } else {
        mysql_query("INSERT INTO torzsvendegek (id, nev, email, mikor, ejszakak, nyelv, megjegyzes) VALUES (NULL, '$nev', '$email', '".$mikor."".$br."', '$ejszakak', '$nyelv', '".$megjegyzes."')");
        echo "<br>".$email." Added";
    }
} else {
    echo "Something is missing";
}

?>

<form method="post" action="<?php echo $_SERVER["PHP_SELF"]?>">
    Search: <input placeholder="e-mail address" type="text" name="email_search">
    <input type="submit" name="search" value="Go">
</form>

<form method="post" action="<?php echo $_SERVER["PHP_SELF"]?>">
    <table width="440" border="0" style="text-align:right;">
        <tr>
            <td>E-mail:</td>
            <td><input type="text" name="email" value="<?php echo $email_search;?>"></td>
        </tr>
        <tr>
            <td>Név:</td>
            <td><input type="text" name="nev" value="<?php echo $s['nev'];?>"></td>
        </tr>
        <tr>
            <td>Mikor:</td>
            <td><input type="text" name="mikor"></td>
        </tr>
        <tr>
            <td>Éjszakák száma:</td>
            <td><input type="text" name="ejszakak"></td>
        </tr>
        <tr>
            <td>Nemzetisége:</td>
            <td align="left">&nbsp;&nbsp;
                <select name="nyelv">
                    <option value="magyar" <?php if($s['nyelv']=="magyar") echo "selected=\"selected\""; ?>>Magyar</option>
                    <option value="nemet" <?php if($s['nyelv']=="nemet") echo "selected=\"selected\""; ?>>Német</option>
                    <option value="lengyel" <?php if($s['nyelv']=="lengyel") echo "selected=\"selected\""; ?>>Lengyel</option>
                    <option value="roman" <?php if($s['nyelv']=="roman") echo "selected=\"selected\""; ?>>Román</option>
                    <option value="szlovak" <?php if($s['nyelv']=="szlovak") echo "selected=\"selected\""; ?>>Szlovák</option>
                    <option value="egyeb" <?php if($s['nyelv']=="egyeb") echo "selected=\"selected\""; ?>>Egyéb</option>
                </select>
            </td>
        </tr>
        <tr>
            <td>Megjegyzés:</td>
            <td><textarea name="megjegyzes"><?php echo htmlspecialchars($s['megjegyzes']);?></textarea></td>
        </tr>
    </table>
    <br>
    <table width="440">
        <tr>
            <td><input type="submit" name="submit_add" value="Hozzáad"></td>
        </tr>
    </table>
</form>

答案 2 :(得分:0)

您没有关闭搜索表单,您需要从电子邮件输入字段中删除已禁用的属性。

我重新编写了代码以帮助您进行调试。我注释掉了与数据库相关的所有内容,因此您只能专注于表单字段。这是我重写的代码。我留下了评论,所以你可以看到我做了什么。

    <?php 
    /******JUST TO MAKE DEBBUGGING EASIER***/
    echo "<pre>"; // Start of the pre> tags


    /**ANYTHING TO DO WITH THE DATABASE I HAVE COMMENTED OUT**/
    if(isset($_POST["search"])){ 
        $email_search = mysql_real_escape_string($_POST["email_search"]);

        /**PRINT_R FOR DEBUGGING PURPOSES, REMOVE!!*/
        print_r($email_search);

        //$check = mysql_query("SELECT * FROM torzsvendegek WHERE email = '$email_search'");
        //$s = mysql_fetch_array($check);
    }

    /***CHECK THE POST DATA, REMOVE FROM APPLICATION ONCE YOU HAVE DEBUGGED THE DATA**/
    print_r($_POST);

    /***I WILL STORE THE POST DATA IN VARIABLES BEFORE CHECKING**/
    $nev        = isset($_POST["nev"]) ? mysql_real_escape_string($_POST["nev"]) : null;
    $email      = isset($_POST["email"]) ? mysql_real_escape_string($_POST["email"]) : null;
    $mikor      = isset($_POST["mikor"]) ? mysql_real_escape_string($_POST["mikor"]) : null;
    $ejszakak   = isset($_POST["ejszakak"]) ? mysql_real_escape_string($_POST["ejszakak"]) : null;
    $nyelv      = isset($_POST["nyelv"]) ? mysql_real_escape_string($_POST["nyelv"]) : null;
    $megjegyzes = isset($_POST["megjegyzes"]) ? mysql_real_escape_string($_POST["megjegyzes"]) : null;


    if(isset($_POST["submit_add"]) && !is_null($nev) && !is_null($email) && !is_null($mikor) && !is_null($ejszakak)){
        /*******
            SINCE I ALREADY HAVE THEM, YOU NEED TO REMOVE THEM FROM THE CODE
            $nev = mysql_real_escape_string($_POST["nev"]);
            $email = mysql_real_escape_string($_POST["email"]);
            $mikor = mysql_real_escape_string($_POST["mikor"]);
            $ejszakak = mysql_real_escape_string($_POST["ejszakak"]);
            $nyelv = mysql_real_escape_string($_POST["nyelv"]);
            $megjegyzes = mysql_real_escape_string($_POST["megjegyzes"]);
        ******/
        //$check2 = mysql_query("SELECT * FROM torzsvendegek WHERE email = '$email'");
        $br = "<br>";
        /*********
        if (mysql_num_rows($check2) > 0) {

            $adatok = mysql_fetch_array($check2);
            $osszesen = ($adatok['ejszakak'] + $ejszakak);
            mysql_query("UPDATE torzsvendegek SET nev = '".$nev."', mikor = '".$adatok['mikor']."".$mikor."".$br."', ejszakak = '".$osszesen."', nyelv = '".$nyelv."', megjegyzes = '".$adatok['megjegyzes']."".$megjegyzes."".$br."' WHERE email = '".$email."'");
            echo "<br>".$email." Updated";

        }else {
            mysql_query("INSERT INTO torzsvendegek (id, nev, email, mikor, ejszakak, nyelv, megjegyzes) VALUES (NULL, '$nev', '$email', '".$mikor."".$br."', '$ejszakak', '$nyelv', '".$megjegyzes."')");
            echo "<br>".$email." Added";

        }
        ****/
    }elseif (isset($_POST["submit_add"])) {
        echo "Something is missing";
    }

    echo '</pre>';//end of pre
?>

Search:
<form method="post" action="<?php echo $_SERVER["PHP_SELF"]?>">
    <input placeholder="e-mail address" type="text" name="email_search">
    <input type="submit" name="search" value="Go">
</form>


<form method="post" action="<?php echo $_SERVER["PHP_SELF"]?>">
    <table width="440" border="0" style="text-align:right;">
        <tr>
            <td>E-mail:</td>
            <td><input type="text" name="email" value="<?php echo $email;?>" ></td>
        </tr>
        <tr>
            <td>Név:</td>
            <td><input type="text" name="nev" value="<?php echo $nev;?>"></td>
        </tr>
        <tr>
            <td>Mikor:</td>
            <td><input type="text" name="mikor" value="<?php echo $mikor;?>"></td>
        </tr>
        <tr>
            <td>Éjszakák száma:</td>
            <td><input type="text" name="ejszakak" value="<?php echo $ejszakak;?>"></td>
        </tr>
        <tr>
            <td>Nemzetisége:</td>
            <td align="left">
                <select name="nyelv">
                    <option value="magyar" <?php if($nyelv=="magyar") echo "selected=\"selected\""; ?>>Magyar</option>
                    <option value="nemet" <?php if($nyelv=="nemet") echo "selected=\"selected\""; ?>>Német</option>
                    <option value="lengyel" <?php if($nyelv=="lengyel") echo "selected=\"selected\""; ?>>Lengyel</option>
                    <option value="roman" <?php if($nyelv=="roman") echo "selected=\"selected\""; ?>>Román</option>
                    <option value="szlovak" <?php if($nyelv=="szlovak") echo "selected=\"selected\""; ?>>Szlovák</option>
                    <option value="egyeb" <?php if($nyelv=="egyeb") echo "selected=\"selected\""; ?>>Egyéb</option>
                </select>
            </td>
        </tr>
        <tr>
            <td>Megjegyzés:</td>
            <td><textarea name="megjegyzes"><?php echo htmlspecialchars($megjegyzes);?></textarea>
            </td>
        </tr>
    </table><br>
    <table width="440">
        <tr><td><input type="submit" name="submit_add" value="Hozzáad"></td></tr>
    </table>
</form>