2014-01-23 8 views
0

Я искренне буду признателен за ваши усилия по устранению этой ошибки. сделал выбор (выпадающий список) из базы данных. В то время как выпадающее меню работало (как показано в , я нормальная форма.), Я не смог получить правильность правильности. Или somethihg wen wrong, о котором я не знаю. если я выбрать страну из списка, он дает ошибку в кондиции в форме (пожалуйста, выберите бизнес-офис страны головы)выбрать из базы данных валидация

здесь форма:

<form method="post" action="<?php echo htmlentities($_SERVER['PHP_SELF']);?>" /> 
Country of Residence of Business' Head Office<br /> 
<select name="country_location" class="select"> 
<option> Select Country</option> 
<?php 
include('inc/mysqli_connect.php'); 
$q ="SELECT id, CONCAT_WS('', country) FROM country ORDER BY country ASC"; 
$r = mysqli_query($dbc, $q); 
if(mysqli_num_rows($r) > 0){ 
while ($row = mysqli_fetch_array($r, MYSQLI_NUM)){ 
echo "<option value=\"$row[0]\""; 
// check for stickyness 
if(isset($_POST['country']) && ($_POST['country']==$row[0])) echo'country="country"'; 
echo ">$row[1]</option>\n"; 
} 
} 
mysqli_close($dbc); 
?> 
</select><br /> 
<input type="hidden" name="submitted" value="TRUE" /><br /> 
<input type="submit" name="submit" value="Register" id="submit"/> 
</div> 
</form> 

затем проверка

<?php 
    require_once('inc/config_inc.php'); 
    $page_title = 'Register'; 

include('inc/session.html'); 
if(isset($_POST['submitted'])){ 
    require_once ('inc/mysqli_connect.php'); 
    $trimmed =array_map('trim', $_POST); 
    $business_name=$country_location=$business_city=$nature_of_business=$email=$telephone=$director_last_name=$director_first_name=$password=FALSE; 

if(isset($_POST['country_location']) && ($_POST['country_location'] == 'country') && ($_POST['country'] > 0)){ 
$country_location = (int)$_POST['country']; 
} 
else{ 
$country_location = FALSE; 
echo'<p class="error">Please select business\' head office country!</p>'; 
    } 
    if($business_name && $country_location && $business_city && $nature_of_business && $email 
    && $telephone && $director_last_name && $director_first_name && $password){ 
    "SELECT registration_id FROM users WHERE email='$email' "; 
    $q = mysqli_query($dbc, $q) or trigger_error("Query: $q\n<br /> MYSQL Error: 
    ".mysqli_error($dbc)); 
    if(mysqli_num_rows($r) == 0){ 
    $a = md5(uniqid(rand(), true)); 

    $q = "INSERT INTO registration(business_name,country_location,business_city,nature_of_business,email,telephone,director_last_name,director_first_name, ,password ,active,registration_date) 
           VALUES 
('$business_name', '$country_location', '$business_city' ,'$nature_of_business', '$email', '$telephone', '$director_last_name','$director_first_name','$active','SHA1($password)' NOW())"; 

$r = mysqli_query($dbc, $q) or trigger_error("Query: $q\n<br \> MySQL Error:  ".mysqli_error($dbc)); 

if(mysqli_affected_rows($dbc) ==1){ // send email 
$body =" Thank you for registering at....You are guaranteed customer statifaction!. To activate your account, please click on this lin:\n\n"; 
$body .=BASE_URL .'activate.php?x='.urlencode($email) . "&y=$a"; mail($trimmed 
['email'], 'Registration Confirmation', $body, 'From: example.com'); 
echo'<h3 > Thank you for registering! A confirmation email has been sent to your email address. Click on the link in that email to activate your account.</h3>'; 

include('inc/footer.php'); 
exit(); 
} 
else{ 
echo'<p class="error"> You could not be registered due to a system error. We apologise for any inconvinience.</p>'; 
} 
} 
else{ echo'<p class="error"> The email address entered has been registered.if you have forgotten your password, click link to <a href="recover_password.php">recover your password</a></p>'; 
} 
} 
else{ echo'<p class = "error">Please re-enter your password and try again.</p>'; 
}mysqli_close($dbc); 
} 
    ?> 

База данных:

имя базы данных: пользователи имя таблицы: страна. rows: id (int), value (название страны), страна (названия стран)

Пожалуйста, обратите внимание, что в форме много полей, и я указал только поле concerend, поэтому проверяется проверка.

Обратите внимание, что это абсолютный новый разработчик, а также этот форум.hence я мог бы нарушил правила. Пожалуйста, поправьте меня вместо оскорбления, и я всегда буду исправлять.

благодарит заранее!

+0

Как вы думаете, что печать страны = «страна» внутри тега опции? Потому что, что бы вы ни думали, это не сделает этого. – developerwjk

+0

@ developerwjk, я пытался сделать это поле липким, чтобы, если пользователь выбирает страну и возникают ошибки, для него не будет необходимости выбирать ее снова, прежде чем отправлять время secon.is это, где проблема? Я не работаю над кодом немного. спасибо за ваш ответ. – user2989439

+0

должно быть выбрано = 'true' – developerwjk

ответ

0

В вашей форме у вас есть <select name="country_location">, и вы устанавливаете значение для каждого <option> идентификатору каждой страны (echo "<option value=\"$row[0]\"";). Это означает, что при отправке формы значение $_POST['country_location'] является выбранным идентификатором страны.

В вашей проверки, вы проверьте следующее:

if(isset($_POST['country_location']) && ($_POST['country_location'] == 'country') && ($_POST['country'] > 0)){ 

Но как $_POST['country_location'] может иметь значение «страна»? Он должен содержать идентификатор страны. Вы пытаетесь установить <option country="country">, но это не сработает. Только <option value> будет отправлен через POST.

Если вы изменили бы линию вышеописанный:

if(isset($_POST['country_location']) && ctype_digit($_POST['country_location']) && ($_POST['country'] > 0)){ 

ctype_digit проверяет, является ли значение состоит только из цифр. Для получения дополнительной информации см. PHP: ctype_digit - Manual. Поскольку я ожидаю, что ваши идентификаторы являются числовыми, это должно сделать трюк.

+0

@ DickW, так великолепен для вашего anser. вы навсегда остаетесь моим наставником в этой отрасли. бесконечно благодарен. скрипт, похоже, теперь работает на малой ошибке (а не на 1) – user2989439

+0

@ user2989439 Нет проблем вообще :-) Если этот ответ решил вашу проблему, отметьте его как принятый ответ! – sgtdck

+0

@ DickW. Еще раз спасибо, я сделал то, что просил.Но как я запрашиваю базу данных для вывода (печати) названий стран, так как записываются их целые значения (1, 2, 3 и т. Д.). любезную помощь, поскольку это область, в которой я нуждаюсь в следующей работе. спасибо за ваш ответ – user2989439

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