kalpazan4o
Registered
Здравейте, опитвам се да направя една форма за регистрация към сайта ми. Формата има доста полета и всички се записват успешно в базата данни, освен полето за град "city" - винаги остава празно. Блъскам си главата над това половин ден и не мога да видя къде точно е проблема.
Таблицата в базата данни е със следната структура:
id [int10] [autoinc]
firstname [varchar 25]
lastname [varchar 25]
email [varchar 50]
parola [varchar80]
country [int 3]
state [int 10]
city [int 10]
gender [tinyint 1]
bithdate [date]
nickname [varchar 25]
deviz [varchar 100]
acctype [varchar 15]
Таблицата с полетата за градовете е със следната структура:
city_id [int 9] [autoinc]
city_name [varchar 50]
city_country [int 3]
city_state [int 3]
Формата за регистрация съдържа и календар (писан на джава и php, взет е готов). С него календар се избира датата на раждане.
Така, ето и самата форма:
Както може би забелязохте, стойностите за градовете се попълват динамично от външен файл, според избраната стойност за област. Файла работи коректно и кода е с вложени стойности за всяка опция (<OPTION value="1">Grad</OPTION>. Така че там всичко е наред.
Благодаря ви предварително
Таблицата в базата данни е със следната структура:
id [int10] [autoinc]
firstname [varchar 25]
lastname [varchar 25]
email [varchar 50]
parola [varchar80]
country [int 3]
state [int 10]
city [int 10]
gender [tinyint 1]
bithdate [date]
nickname [varchar 25]
deviz [varchar 100]
acctype [varchar 15]
Таблицата с полетата за градовете е със следната структура:
city_id [int 9] [autoinc]
city_name [varchar 50]
city_country [int 3]
city_state [int 3]
Формата за регистрация съдържа и календар (писан на джава и php, взет е готов). С него календар се избира датата на раждане.
Така, ето и самата форма:
Код:
if($_POST['Submit'])
{
$theDate = isset($_REQUEST["date1"]) ? $_REQUEST["date1"] : "";
$firstname = $_POST['firstname'];
$lastname = $_POST['lastname'];
$email = $_POST['email'];
$parola = $_POST['parola'];
$parola = md5($parola);
$country = $_POST['country'];
$state = $_POST['state'];
$city = $_POST['city'];
$gender = $_POST['gender'];
$birthdate = $theDate;
$nickname = $_POST['nickname'];
$deviz = $_POST['deviz'];
$acctype = "5";
$ckeck = mysql_fetch_array(mysql_query("SELECT id FROM members WHERE email='$email'"));//проверявам за потребител със същото име
if($ckeck)//ако има такъв
{
die('Има вече регистриран потребител с този email адрес.');// край на изпълнението
}
$ok = mysql_query("INSERT INTO members VALUES ('', '$firstname', '$lastname', '$email', '$parola', '$country', '$state', '$city', '$gender', '$birthdate', '$nickname', '$deviz', '$acctype')");// ако всичко е наред добавям записа в дб-то
if($ok)// ако няма грешки
{
echo "Вашият профил бе създаден успешно!<br> Можете да влезете в профила си от <a href='?go=members&get=login' target='_parent'>тук</a>";
}
else
{
echo "Грешка! Моля, опитайте отново.";
}
}
else
{//ако записа не е приет показвам формата за регистрация
?>
<script>
function getXMLHTTP() { //fuction to return the xml http object
var xmlhttp=false;
try{
xmlhttp=new XMLHttpRequest();
}
catch(e) {
try{
xmlhttp= new ActiveXObject("Microsoft.XMLHTTP");
}
catch(e){
try{
xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
}
catch(e1){
xmlhttp=false;
}
}
}
return xmlhttp;
}
function getState(strURL) {
var req = getXMLHTTP();
if (req) {
req.onreadystatechange = function() {
if (req.readyState == 4) {
// only if "OK"
if (req.status == 200) {
document.getElementById('citydiv').innerHTML=req.responseText;
} else {
alert("There was a problem while using XMLHTTP:\n" + req.statusText);
}
}
}
req.open("GET", strURL, true);
req.send(null);
}
}
</script>
<?php
require_once('inc/calendar/classes/tc_calendar.php');
?>
<link href="inc/calendar/calendar.css" rel="stylesheet" type="text/css" />
<script language="javascript" src="inc/calendar/calendar.js"></script>
<style type="text/css">
pre { font-family: "verdana"; font-size: 10px; background-color: #FFFFCC; padding: 5px 5px 5px 5px; }
pre .comment { color: #008000; }
pre .builtin { color:#FF0000; }
</style>
<?php
echo "
<h2 align=\"center\">Регистрация на нов потребител</h2>
<table align=\"center\">
<tr><form action=\"?go=members&get=register\" method=\"post\">
<td>Собствено име *</td>
<td><input type=\"text\" size=\"25\" name=\"firstname\" id=\"firstname\"></td>
</tr>
<tr>
<td>Фамилия *</td>
<td><input type=\"text\" size=\"25\" name=\"lastname\" id=\"lastname\"></td>
</tr>
<tr>
<td>E-mail адрес *</td>
<td><input type=\"text\" size=\"25\" name=\"email\" id=\"email\"></td>
</tr>
<tr>
<td>Парола *</td>
<td><input type=\"password\" size=\"25\" name=\"parola\" id=\"parola\"></td>
</tr>
<tr>
<td>Държава *</td>
<td><input type=\"hidden\" value=\"1\" name=\"country\" id=\"country\">
България</td>
</tr>
<tr>";
?>
<td>Област:</td>
<td><select name="state" onChange="getState('inc/city.php?state_id='+this.value)">
<OPTION>Моля изберете</OPTION>
<?php
$query = "SELECT * FROM states WHERE state_country='1' order by state_name";
$results = mysql_query($query) or die(mysql_error());
while ($row = mysql_fetch_array($results)) {
extract($row);
echo "<OPTION value=\"$state_id\">$state_name</OPTION>";
}
echo "
</select></td>
</tr>
<tr>
<td>Град</td>
<td><div id=\"citydiv\"><select name=\"city\"><option></option></select></div>
</td>
</tr>
<tr>
<td>Пол </td>
<td><SELECT name=\"gender\">
<OPTION value=\"1\">Мъжки</OPTION>
<OPTION value=\"2\">Женски</OPTION>
<OPTION value=\"3\">Не знам</OPTION>
</SELECT>
</td>
</tr>
<tr>
<td>Дата на раждане</td>
<td><input type=\"hidden\" value=\"\" name=\"birthdate\" id=\"birthdate\"><input type=\"hidden\" name=\"nickname\" value=\"\" id=\"nickname\">
<input type=\"hidden\" name=\"deviz\" value=\"\" id=\"deviz\">
<input type=\"hidden\" name=\"acctype\" value=\"5\" id=\"acctype\">"; $myCalendar = new tc_calendar("date1", true);
$myCalendar->setIcon("inc/calendar/images/iconCalendar.gif");
$myCalendar->setDate(date('d'), date('m'), date('Y'));
$myCalendar->setPath("inc/calendar/");
$myCalendar->setYearInterval(1960, 2015);
$myCalendar->dateAllow('1900-01-01', '2000-03-01');
//$myCalendar->setHeight(350);
//$myCalendar->autoSubmit(true, "form1");
$myCalendar->setSpecificDate(array("2011-04-01", "2011-04-13", "2011-04-25"), 0, 'month');
$myCalendar->writeScript();
echo "
<tr>
<td colspan=\"2\">
</td>
</tr>
<tr>
<td colspan=\"2\" align=\"center\"><br><input type=\"submit\" name=\"Submit\" value=\"Регистрирам се\">
</td>
</tr></form>
</table>
<br><br>
";
}
Както може би забелязохте, стойностите за градовете се попълват динамично от външен файл, според избраната стойност за област. Файла работи коректно и кода е с вложени стойности за всяка опция (<OPTION value="1">Grad</OPTION>. Така че там всичко е наред.
Благодаря ви предварително