2014-10-16 177 views
-1

我的頁面上有一個簡單的表單,我想在將值插入數據庫之前確保填充每個字段。問題是從未滿足的條件,即使每個字段現場充滿我仍然得到「有遺漏」 ...

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"; } ?> 
+1

首先:不要使用mysql_ *!它已被棄用且極不安全。改用PDO()或mysqli()。 – icecub 2014-10-17 00:02:10

+2

爲什麼你有兩個'

'標籤? – Cheery 2014-10-17 00:02:58

+0

感謝您的評論人。第一種形式只是一個搜索表單,如果在數據庫中找到匹配,它將填充第二種形式的一部分。 – phpnoob 2014-10-17 00:24:37

回答

0

您取得2次失誤代碼:

1)您沒有關閉的第一種形式(缺少< /形式>)
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> 
+0

謝謝,這個技巧,我仍然有一個問題,即使提交按鈕沒有按下,我仍然會在打開頁面時看到「缺少東西」的信息,我該如何解決這個問題? – phpnoob 2014-10-17 00:30:58

+0

其中如果答案是你要找的東西,請接受它,所以它不會永遠得不到答案 – icecub 2014-10-17 00:32:51

+0

這是因爲當沒有表單數據被髮送時,if語句總是返回false,你可以通過刪除else如果(mysql ..)else if(mysql .. == 0).. else {echo error; – icecub 2014-10-17 00:43:01

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> 
+0

你是對的,我忘了關閉第一個表單,修復它,但它仍然不起作用。 :( – phpnoob 2014-10-17 00:22:46

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> 
+0

感謝您的詳細分解。我很好地利用它。 :)使用的好處是什麼!is_null insted of!empty? – phpnoob 2014-10-17 10:55:08

+0

沒有區別。我剛剛使用!is_null,因爲那是我在短語中設置的語句。我可以使用!空,如果不是分配一個空值,我只是把一個空的報價。工作原理相同。 – 2014-10-17 17:59:21