2011-10-01 131 views
0

我想知道是否有人能夠幫助我。將PHP合併到HTML表格中

我試圖把功能,它允許管理員使用電子郵件地址作爲搜索條件在mySQL數據庫中搜索用戶的詳細信息。一旦搜索結果發生,我希望我的表單中的「第一」和「姓氏」字段在檢索到的記錄中完成。

我認爲搜索工作的形式刷新,但它不檢索任何可見的信息。

我只是想知道是否有人可能會看看我的代碼,並讓我知道我哪裏出了問題。

非常感謝

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> 
    <head> 
     <?php 
     require("phpfile.php"); 

     // Opens a connection to a MySQL server 

     $connection=mysql_connect ("hostname", $username, $password); 
     if (!$connection) { die('Not connected : ' . mysql_error());} 

     // Set the active MySQL database 

     $db_selected = mysql_select_db($database, $connection); 
     if (!$db_selected) { 
     die ('Can\'t use db : ' . mysql_error()); 
     } 


     $email = $_POST['email']; 
     $result = mysql_query("SELECT * FROM userdetails WHERE emailaddress like '%$email%'"); 

     ?> 
     <title>Map!</title> 
     <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
     <script src="js/gen_validatorv4.js" type="text/javascript"></script> 
    </head> 
    <h1>&nbsp;</h1> 
    <form name="userpasswordreset" id="userpasswordreset" method="post"> 
     <div class="container"> 
      <p align="justify">&nbsp;</p> 
      <div class="title1"> 
       <h2>User Details </h2> 
      </div> 
      <table width="100%" border="0" cellspacing="0" cellpadding="0"> 
       <tr> 
        <td width="26%" height="25"><strong>Email Address</strong></td> 
        <td width="4%">&nbsp;</td> 
        <td width="70%"><input name="email" type="email" id="email" size="50" /></td> 
       </tr> 
       <tr> 
        <td height="25"><strong>Confirm Email Address </strong></td> 
        <td>&nbsp;</td> 
        <td><input name="conf_email" type="email" id="conf_email" size="50" /></td> 
       </tr> 

       <tr> 
        <td height="25"><label> 
         <input type="submit" name="Submit" value="Search" /> 
         </label></td> 
        <td>&nbsp;</td> 
        <td>&nbsp;</td> 
       </tr> 
       <tr> 
        <td height="25">&nbsp;</td> 
        <td>&nbsp;</td> 
        <td>&nbsp;</td> 
       </tr> 
       <tr> 
        <td height="25"><strong>First Name </strong></td> 
        <td>&nbsp;</td> 
        <td><input name="fname" type="text" id="fname" size="30" value="<?php echo $row['forename']; ?>" /> </td> 
       </tr> 
       <tr> 
        <td height="25"><strong>Last Name </strong></td> 
        <td>&nbsp;</td> 
        <td><input name="lname" type="text" id="lname" size="30" value="<?php echo $row['surname']; ?>" /></td> 
       </tr> 
       <tr> 
        <td height="25">&nbsp;</td> 
        <td>&nbsp;</td> 
        <td>&nbsp;</td> 
       </tr> 

       <tr> 
        <td height="25"><strong>Password</strong></td> 
        <td>&nbsp;</td> 
        <td><input name="pass" type="password" id="pass" size="30" /></td> 
       </tr> 
       <tr> 
        <td height="25"><strong>Confirm Password </strong></td> 
        <td>&nbsp;</td> 
        <td><input name="conf_pass" type="password" id="conf_pass" size="30" /></td> 
       </tr> 
       <tr> 
        <td height="25">&nbsp;</td> 
        <td>&nbsp;</td> 
        <td>&nbsp;</td> 
       </tr> 
       <tr> 
        <td height="25"><strong>Password Hint </strong></td> 
        <td>&nbsp;</td> 
        <td><input name="hint" type="text" id="hint" size="30" /></td> 
       </tr> 
       <tr> 
        <td height="25">&nbsp;</td> 
        <td>&nbsp;</td> 
        <td>&nbsp;</td> 
       </tr> 
       <tr> 
        <td height="25">&nbsp;</td> 
        <td>&nbsp;</td> 
        <td>&nbsp;</td> 
       </tr> 
      </table> 

     </div> 
    </form> 
    <script language="JavaScript" type="text/javascript"> 
     // Code for validating the form 
     var frmvalidator = new Validator("userpasswordreset"); 
     frmvalidator.addValidation("email","req","Please provide your email address"); 
     frmvalidator.addValidation("email","email","Please enter a valid email address"); 
     frmvalidator.addValidation("conf_email","eqelmnt=email", "The confirmed email address is not the same as the email address"); 
    </script> 

</div> 
    </body> 
    </html> 

更新的代碼

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> 
     <head> 
      <?php 
      require("phpfile.php"); 

      // Opens a connection to a MySQL server 

      $connection=mysql_connect ("hostname", $username, $password); 
      if (!$connection) { die('Not connected : ' . mysql_error());} 

      // Set the active MySQL database 

      $db_selected = mysql_select_db($database, $connection); 
      if (!$db_selected) { 
      die ('Can\'t use db : ' . mysql_error()); 
      } 
      $email = mysql_real_escape_string($_POST['email']); // make the value safe for in the query 
      $result = mysql_query("SELECT * FROM userdetails WHERE emailaddress like '%$email%'"); 
      $rows = array(); 

      while ($row = mysql_fetch_assoc($result)) { 
      $rows[] = $row; 
      } 

      // $rows is now a multi dimensional array with values found by the query 

      ?> 
<title>Map</title> 
<script src="js/gen_validatorv4.js" type="text/javascript"></script> 
<h1>&nbsp;</h1> 
<form name="userpasswordreset" id="userpasswordreset" method="post"> 
    <p align="justify">&nbsp;</p> 
    <div class="title1"> 
     <h2>Your Details </h2> 
    </div> 
    <table width="100%" border="0" cellspacing="0" cellpadding="0"> 
     <tr> 
      <td width="26%" height="25"><strong>Email Address </strong></td> 
      <td width="4%">&nbsp;</td> 
      <td width="70%"><input name="email" type="email" id="email" size="50" /></td> 
     </tr> 
     <tr> 
      <td height="25"><strong> Confirm Email Address </strong></td> 
      <td>&nbsp;</td> 
      <td><input name="conf_email" type="email" id="conf_email" size="50" /></td> 
     </tr> 

     <tr> 
      <td height="25"><label> 
       <input type="submit" name="Submit" value="Search" /> 
       </label></td> 
      <td>&nbsp;</td> 
      <td>&nbsp;</td> 
     </tr> 
     <tr> 
      <td height="25"><strong>First Name </strong></td> 
      <td>&nbsp;</td> 
      <td><input name="fname" type="text" id="fname" size="30" /></td> 
     </tr> 
     <tr> 
      <td height="25"><strong>Last Name</strong></td> 
      <td>&nbsp;</td> 
      <td><input name="lname" type="text" id="lname" size="30" /></td> 
     </tr> 
     <tr> 
      <td height="25">&nbsp;</td> 
      <td>&nbsp;</td> 
      <td>&nbsp;</td> 
     </tr> 
     <tr> 
      <td height="25">&nbsp;</td> 
      <td>&nbsp;</td> 
      <td>&nbsp;</td> 
     </tr> 
     <tr> 
      <td height="25"><strong>Password</strong></td> 
      <td>&nbsp;</td> 
      <td><input name="pass" type="password" id="pass" size="30" /></td> 
     </tr> 
     <tr> 
      <td height="25"><strong>Confirm Password </strong></td> 
      <td>&nbsp;</td> 
      <td><input name="conf_pass" type="password" id="conf_pass" size="30" /></td> 
     </tr> 
     <tr> 
      <td height="25">&nbsp;</td> 
      <td>&nbsp;</td> 
      <td>&nbsp;</td> 
     </tr> 
     <tr> 
      <td height="25"><strong>Password Hint </strong></td> 
      <td>&nbsp;</td> 
      <td><input name="hint" type="text" id="hint" size="30" /></td> 
     </tr> 
     <tr> 
      <td height="25">&nbsp;</td> 
      <td>&nbsp;</td> 
      <td>&nbsp;</td> 
     </tr> 
     <tr> 
      <td height="25">&nbsp;</td> 
      <td>&nbsp;</td> 
      <td>&nbsp;</td> 
     </tr> 
    </table> 

</form> 
<script language="JavaScript" type="text/javascript"> 
    // Code for validating the form 
    // Visit http://www.javascript-coder.com/html-form/javascript-form-validation.phtml 
    // for details 
    var frmvalidator = new Validator("userpasswordreset"); 
    frmvalidator.addValidation("email","req","Please provide your email address"); 
    frmvalidator.addValidation("email","email","Please enter a valid email address"); 
    frmvalidator.addValidation("conf_email","eqelmnt=email", "The confirmed email address is not the same as the email address"); 
</script> 
</body> 
</html> 
+0

您應經常檢查或將其連接到查詢之前santize你輸入什麼?如果有人要輸入''; DROP TABLE userdetails; - 作爲電子郵件? –

+0

@KileyNaro如果你正在嘗試註冊某些東西,我會說這相當適得其反:V – sg3s

+0

嚴肅的一面,你沒有告訴我們這個代碼出了什麼問題。你也可以用'$ email = mysql_real_escape_string($ _ POST ['email'],$ connection)';'來代替當前的'$ email'聲明來清理你的電子郵件。 – sg3s

回答

-2

只是在看你的代碼breifly,我不認爲你的電子郵件的價值正確地傳遞到您的SQL查詢。

嘗試使用此。

$result = mysql_query("SELECT * FROM userdetails WHERE emailaddress like '%" . $email . "%'");

+0

PHP允許你在字符串中間使用變量,所以我不認爲這是問題。 –

+0

嗯,不知道,你的代碼是用PHP做的,我來自C#背景,所以對我來說看起來像是一個重大的錯誤。我應該保留我的答案還是刪除它? – alykhalid

+0

嗨,我敢肯定,問題不在於電子郵件的價值不被傳遞,因爲我已經嘗試了這個作爲一個單獨的代碼片,它工作正常。我發現一個掙扎是將表單和php結合在一起。非常感謝。 – IRHM

1

你不缺少的步驟,其中在實際運行鍼對您的查詢mysql_fetch_assoc功能?只需將mysql_query的結果分配給變量$result是不夠的!

您的來電後,加入這樣的事情mysql_query

if($result) 
{ 
    $row = mysql_fetch_assoc($result)); 
} 

編輯:mysql_fetch_assoc PHP documentation

1

要獲得所有的行導致與查詢你需要使用MySQL取功能(有是幾個)。

的優先停留方法是definitly mysql_fetch_assoc

你的代碼的相關部分將是這個樣子:

$email = mysql_real_escape_string($_POST['email']); // make the value safe for in the query 
$result = mysql_query("SELECT * FROM userdetails WHERE emailaddress like '%$email%'"); 
$rows = array(); 

while ($row = mysql_fetch_assoc($result)) { 
    $rows[] = $row; 
} 

// $rows is now a multi dimensional array with values found by the query 
+0

嗨,非常感謝您花時間幫助我解決這個問題。我對此很新,所以請原諒我對此採取的緩慢行動。我修改了我的代碼以包含您的文本。表單呈現,我鍵入搜索條件,但唯一發生的是頁面刷新。我已將更新的代碼添加到我的原始帖子中。你能告訴我哪裏出錯了嗎?問候 – IRHM

+0

將結果放入數組後,您仍然必須使用'$ rows'做些事情。嘗試'print_r($ rows,true);'查看從數據庫獲得的結果。如果它沒有產生任何結果,那可能是因爲沒有任何結果。要重新檢查一下,只需嘗試在phpmyadmin中用您的輸入電子郵件地址執行該查詢並查看會發生什麼。基本的PHP調試真的。閱讀一些教程:) – sg3s