2013-03-27 107 views
0

我正在創建一個頁面,用戶可以在其中編輯他們的帳戶並使用php和mysql添加一些文本。首先我能夠插入和更新,但現在它顯示一個錯誤信息關鍵電子郵件地址的重複項 我該如何解決這個問題 這是帳戶設置的代碼,但它不包含任何電子郵件地址字段,所以我會顯示全部是因爲我不知道在哪裏顯示所需的代碼php mysql +插入查詢錯誤

我編輯的代碼也許這一個是產生錯誤?

寄存器.PHP

<?php require_once('for members/scripts/connect.php'); ?> 


<?php 
ob_start(); 
function countryQuery(){ 

    $countryData = mysql_query("SELECT * FROM country") or die("could select database"); 

    while($record = mysql_fetch_array($countryData)){ 

    echo'<option value="' . $record['country_name'] . '">' . $record['country_name'] . '</option>'; 

    } 

} 


function specializationQuery(){ 

$specData = mysql_query("SELECT * FROM specialization"); 

    while($recordJob = mysql_fetch_array($specData)){ 

    echo'<option value="' . $recordJob['specialization_name'] . '">' . $recordJob['specialization_name'] . '</option>'; 

    } 


} 

function districtQuery(){ 

$distData = mysql_query("SELECT * FROM districts"); 

    while($recorddist = mysql_fetch_array($distData)){ 

    echo'<option value="' . $recorddist['district_name'] . '">' . $recorddist['district_name'] . '</option>'; 

    } 


} 

function villageQuery(){ 

$villageData = mysql_query("SELECT * FROM village"); 

    while($recordvillage = mysql_fetch_array($villageData)){ 

    echo'<option value="' . $recordvillage['village_name'] . '">' . $recordvillage['village_name'] . '</option>'; 

    } 


} 



//default value 
$message = "Fields Marcked with an [*] are Required"; 
    $username = ""; 
    $fname = ""; 
    $lname = ""; 
    $specialization = ""; 
    $email = ""; 
    $pass1 = ""; 
    $pass2 = ""; 
    $district = ""; 
    $village = ""; 

if(isset($_POST['username'])){ 
    $username = $_POST['username']; 
    $fname = $_POST['fname']; 
    $lname = $_POST['lname']; 
    $email = $_POST['email']; 
    $pass1 = $_POST['pass1']; 
    $pass2 = $_POST['pass2']; 
    $bdate = $_POST['birthdate']; 
    $phone = $_POST['phonenumber']; 
    $country = $_POST['country']; 
    //$local_adress = $_POST['adress']; 
    $specialization = $_POST['specialization']; 
    $district = $_POST['district']; 
    $village = $_POST['village']; 

    //error handeling 
    if((!$username)||(!$fname)||(!$lname)||(!$email)||(!$pass1)||(!$pass2)||(!$specialization)||(!$district)||(!$village)){ 
    $message = "**** Please insert the Required Fields below ****<br />"; 

    if($fname == "") 
{ 
    $message = $message . "Enter First name<br/>"; 
} 
    if($lname == "") 
{ 
    $message = $message . "Enter Last name<br/>"; 
} 

if($specialization == 0) 
{ 
    $message = $message . "Select Your Job<br />"; 
} 
if($district == 0) 
{ 
    $message = $message . "Select Your District<br />"; 
} 
if($village == 0) 
{ 
    $message = $message . "Select Your Village<br />"; 
} 
if($email == "") 
{ 
    $message = $message . "Enter Email Adress<br/>"; 
} 
    if ($username == "") { 
    $message = $message . "Enter User Name<br/>"; 
    } 

    if($pass1 == "") 
{ 
    $message = $message . "Enter password<br/>"; 
} 
    if($pass2 == "") 
{ 
    $message = $message . "rechek the password <br/>"; 
} 

} 

    else if($pass1!=$pass2){ 
    $message = "your password do not match!"; 
    }else{ 
    //securing the data 
    $username = preg_replace("#[^0-9a-z]#i","",$username); 
    $fname = preg_replace("#[^0-9a-z]#i","",$fname); 
    $lname = preg_replace("#[^0-9a-z]#i","",$lname); 
    //$pass1 = sha1($pass1); 

    $email = mysql_real_escape_string($email); 
    // checking for duplicate 
    $user_query = mysql_query("SELECT user_name FROM user WHERE user_name = '$username'LIMIT 1") or die("could not check the username"); 
    $count_username = mysql_num_rows($user_query); 

    $email_query = mysql_query("SELECT email_address FROM user WHERE email_address = '$email'LIMIT 1") or die("could not check the email"); 
    $count_email = mysql_num_rows($email_query); 

    if($count_username > 0){ 
    $message = " your username is alredy in use"; 
    }elseif($count_email > 0){ 
     $message = "your email is alredy in use"; 
    }else{ 

     $query = mysql_query("INSERT INTO user(user_name, first_name, last_name, address, district_name, village_name, birth_date, email_address, specialization_name, password, registered_date)VALUES('$username', '$fname', '$lname', '$country', '$district', '$village', '$bdate', '$email', '$specialization', '$pass1', now())")or die("could not insert data"); 

    $message = "you have now been registered"; 
    //from the social website 

    $getid = mysql_fetch_array($query); 
      $_SESSION['user_id'] = $getid['user_rid']; 
      $_SESSION['login'] = 'true'; 
      $_SESSION['login_user'] = $getid['username']; 
    header("Location: home.php"); 
    } 
    } 
} 





?> 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
<title>Register Page</title> 
<link href="style/stylesheet.css" rel="stylesheet" type="text/css" /> 
</head> 

<body> 



<table width="200" border="0" align="center"> 
<tr> 
    <tr> 
    <td> 
    <div id="visitorHeader"></div> 
    <img src="web_header copy.jpg" alt="visitor header" /></td> 
    </tr> 
    <tr> 
    <td> 
     <h2 class="registerTitle">Registration Fields</h2> 
     <h4 class="registerTitle">Sign Up Today....</h4> 
<!-- <div class="container center"> --> 
     <p style="color:#FF0000" align="center"><?php print("$message")?></p> 
     </td> 

    <tr> 
     <table width="680" border="0" align="center"> 
     <form action="register.php" method="post"> 



     <td> 
     </span><label for="firstname"><span class="Fields">First Name</span> <span class="requiredField">*</span></label></td> 
     <td> 
     <input type="text" name="fname" placeholder="Firstname" /></td> 

     <td><span class="Fields">Last Name</span><span class="requiredField">*</span></label></td> 

     <td><input type="text" name="lname" placeholder="Lastname" /></td> 



    <tr> 
     <td><label for="birthdate" class="Fields">Birth Date      </label></td> 
     <td><input type="date" name="birthdate" value= "YYYY_MM_DD" onfocus="if (this.value == 'YYYY_MM_DD') {this.value = '';}" onblur="if (this.value == '') {this.value = 'YYYY_MM_DD';}" /> 
     <br /></td> 
     <td class="Fields"><label for="phonenumber">Phone Number</label></td> 
     <td><input type="number" name="phonenumber" value="000-0-000 000" onfocus="if (this.value == '000-0-000 000') {this.value = '';}" onblur="if (this.value == '') {this.value = '000-0-000 000';}" /></td> 

    </tr> 

    <tr> 
     <td class="Fields"><label for="country">Country</label></td> 
     <td><select name="country" class="select"> 
     <option value="0">-- Select Your Country --</option> 
     <?php countryQuery(); ?> 
     </select></td> 
     <td class="Fields"><label for="specialisation">Specialisation <span class="requiredField">*</span></label></td> 
     <td><select name="specialization" class="select"> 
     <option value="0">-- Select Your Specialization --</option> 

     <?php specializationQuery(); ?> 
     </select></td> 

    </tr> 

    <tr> 
     <td class="Fields"><label for="district">District<span class="requiredField">*</span></label></td> 
     <td><select name="district" class="select"> 
     <option value="0">-- Select Your District --</option> 

     <?php districtQuery(); ?> 
     </select></td> 

     <td class="Fields"><label for="village">Village<span class="requiredField">*</span></label></td> 
     <td><select name="village" class="select"> 
     <option value="0">-- Select Your Village --</option> 

     <?php villageQuery(); ?> 
     </select></td> 

    </tr> 

    <tr> 
     <td class="Fields"><label for="email">Email Adress<span class="requiredField">*</span></label></td> 
     <td><input type="text" name="email" placeholder="Email Adress" /> 
     <br /></td> 
     <td><label for="username"><span class="Fields">User Name</span> <span class="requiredField">*</span></label></td> 
     <td><input type="text" name="username" placeholder="Username" /> 
     <br /></td> 

    </tr> 

    <tr> 
     <td class="Fields"><label for="password">Password<span class="requiredField">*</span></label></td> 
     <td><input type="password" name="pass1" placeholder="Password" /> 
     <br /></td> 
     <td class="Fields"><label for="password2">Re_Password<span class="requiredField">*</span></label></td> 
     <td><input type="password" name="pass2" placeholder="Validate Password" /> 
     <br /></td> 

    </tr> 

    <tr> 
     <td></td> 
     <td></td> 
     <td><input type="submit" value="Register"/></td> 
     <td></td> 
    </tr> 

    </form> 
</table> 
<!--</div>--> 

    </tr> 
    <tr> 
    <td><?php require_once('footer.php'); ?></td> 
    </tr> 
    </tr> 
    </tr> 
</table> 
</body> 
</html> 
<?php ob_end_flush(); ?> 
+2

這並不是錯誤即將到來的代碼從。將數據插入數據庫時​​發生重複鍵錯誤。向我們顯示將信息寫入表格的代碼。 – Husman 2013-03-27 11:43:13

+0

你實際上用'$ about_query'和'$ edit_query'做了什麼?該錯誤顯然不是由您發佈的代碼生成的。 – Eggplant 2013-03-27 11:52:16

+0

我編輯我的代碼的問題也許這是什麼產生的錯誤? – user2214618 2013-03-27 11:59:23

回答

0

它可能會發生,因爲你的用戶表包含已被定義爲在該表中的鍵列EMAIL_ADDRESS列。而且,當你運行該代碼:

$about_query = mysql_query("INSERT INTO user (interest) VALUES ('$aboutme')")or die(mysql_error()); 

,因爲電子郵件地址值沒有給出,它必須指定它會給你一個錯誤。我認爲你不能使用插入查詢這裏改用您已在下面的語句中已經做了更新查詢:

$edit_query = mysql_query("UPDATE user SET first_name= '$fname', last_name= '$lname', address= '$country', specialization_name= '$spec', interest = '$aboutme' WHERE user_id = '$userid'") or die(mysql_error()); 

所以,要麼去除$ about_query或使其更新語句。

0

使用mysql_fetch_assoc如果你想通過字段名

0

你好,這是另類索引值:您可以使用:mysql_error()

if(mysql_insert_id()>0){ 
    //Bla bla bla 
} 
else{ 
    Echo "Mysql Error : ".mysql_error(); 
}