2014-10-13 2 views
-1

Я изучаю PHP MySQL. Я пишу HTML-форму для вставки адреса электронной почты и страны в базу данных mysql. Я успех. Но есть некоторые проблемы. Как я проверяю дубликаты данных и предотвращаю вставку пустых данных?PHP/MySQL - проверка повторяющихся данных и предотвращение вставки пустого значения

вот мой HTML код

<form action="add_entry.php" method="post" name="myForm" onsubmit="return validateEmail();"> 
    <input type="email" name="email" class="email" required="required"> 
    <input type="text" name="country"> 
    <input type="submit" class="button" value="Continue" onclick="this.disabled=true; this.value='Loading...';" disabled> 
</form> 

<script type='text/javascript' src='http://code.jquery.com/jquery-1.8.3.js'></script> 
<script type="text/javascript"> 
function validateEmail() 
{ 
var x=document.forms["myForm"]["email"].value; 
var atpos=x.indexOf("@"); 
var dotpos=x.lastIndexOf("."); 
if (atpos<1 || dotpos<atpos+2 || dotpos+2>=x.length) 
{ 
alert("Not a valid e-mail address"); 
return false; 
} 
} 
    </script> 
    <script> 
    $("form > *").change(function() { 
     var fields = $("form input").not("input[type='submit']"); 
     var filledFields = fields.filter(function() { 
     return $(this).val().length > 0; 
     }); 
     if (filledFields.length == fields.length) { 
     $("input[type='submit']").removeAttr("disabled"); 
     } else { 
     $("input[type='submit']").attr("disabled", "disabled"); 
     } 
    }); 
    </script> 

Вот add_entry.php код

<?php 
$con = mysql_connect("localhost","dbusername","dbpassword"); 
if (!$con) { 
    die('Could not connect: ' . mysql_error()); 
} 
mysql_select_db("dbname", $con); 
$sql="INSERT INTO dbtablename (id,email, country) VALUES (null,'$_POST[email]','$_POST[country]')"; 
?> 
<?php if (!mysql_query($sql,$con)) : ?> 
    die('Error: ' . mysql_error()); 
<?php else : ?> 
    <center>Success!</center> 
    <meta http-equiv="refresh" content="0; url=http://mywebsite.com/content.html" /> 
<?php endif; ?> 
<?php 
mysql_close($con) 
?> 

Теперь я не понимаю, что я пишу как код в add_entry.php ... проверить дубликат & не допускать ввода пустого кода.

У меня есть код в Prevent duplicate data being entered into mysql database & Preventing Empty Data from Inserting into database в StackOverFlow. Я вижу, что кто-то сказать в «Запретить дублировать код данных» был SQL инъекционные ..

код

$query = mysqli_query($con, "SELECT * FROM emails WHERE email='".$email."'"); 

    if(mysqli_num_rows($query) > 0){ 

     echo "email already exists"; 
    }else{ 
     $sql="INSERT INTO emails (email) VALUES ('".$_POST[email]."')"; 
     if (!mysqli_query($con,$sql)) 
     { 
      die('Error: ' . mysqli_error($con)); 
     } 
    } 

Теперь Пожалуйста, помогите мне, как я могу решить эту проблему ..

Я хочу это , Если кто-то попытается вставить пустые данные или попытаться получить прямой доступ к странице add_entry.php, то он автоматически перенаправится на страницу формы ... и, если возможно, отобразит предупреждение «вы должны написать свое письмо для продолжения».

Если дубликат электронной почты найден, то он не будет вставлять базу данных, он будет автоматически перенаправлять content.html страницы ..

При успешном вставки данных, он будет автоматически перенаправлять content.html страницу ..


Если эксперт поможет мне написать этот код, это будет его величие, я надеюсь, что кто-то должен помочь мне узнать php/mysql практически. Я также пытаюсь ... но мне нужна ваша помощь, чтобы продолжить учебу. Я хочу быть экспертом, как вы, и хочу помочь другим. Пожалуйста, помогите мне учиться. Большое спасибо.

ответ

2
Try it this code will work 
<?php 
$con = mysql_connect("localhost","dbusername","dbpassword"); 
if (!$con) { 
    die('Could not connect: ' . mysql_error()); 
} 
mysql_select_db("dbname", $con); 
$email=$_POST['email']; 
$country=$_POST['country']; 
$query = mysql_query("SELECT * FROM emails WHERE email='".$email."'",$con); 

    if(mysql_num_rows($query)==0){ 

    $sql=mysql_query("INSERT INTO dbtablename (email, country) VALUES ('$email','$country')",$con)die('Error: ' . mysql_error()); 
}else{ 
echo "email already exists"; 
} 
mysql_close($con) 
?> 
+0

Спасибо за ваши решения ... но код дать мне "неожиданное T_EXIT", где умереть ('Ошибка:' mysql_error().); –

Смежные вопросы