1 Востаннє редагувалося Faraon (31.05.2013 02:06:50)

Тема: Реєстрація. (не працює)

Всім привіт. Роблю реєстрацію на сайті, але при відкриті файлу registration.php у мене висвічується на екрані така помилка
Query failed : Incorrect date value: '' for column 'Character_Birth_Day' at row 1
Але чому невірне значення цього поля я не знаю!
В чому саме виникла  помилка в коді я також не знаю! Можливо хтось з Ваc її замітить? Наперед дуже лякую що звернули увагу на тему!
код файлу:

<?php
$aNickName = $_POST['nickname'];
$aPass = $_POST['pass'];
$aFIO = $_POST['fio'];
$aMail = $_POST['email'];
$aYear = $_POST['year'];
$aMonth = $_POST['month'];
$aDay = $_POST['day'];
$aDate = $aYear."-".$aMonth."-".$aDay; /*Собираем в формат yyyy-mm-dd*/
$aAnswer = $_POST['answer'];
$aGender = $_POST['gender'];
if ($aGender=='Мужской'){
$aUserGender = 1;
}else{
$aUserGender = 2;
}
$aCity = $_POST['city'];
$aICQ = $_POST['icq'];
?>
    
    
        <?php
        
        $mysql_host = 'localhost';
$mysql_user = 'root';
$mysql_password = 'Naruto1996';
$my_database = 'games';

$link = mysql_connect($mysql_host, $mysql_user, $mysql_password)
or die("Could not connect : " . mysql_error());
mysql_select_db($my_database) or die("Could not select database");

$query = "SELECT * from users where Nick_Name = '$aNickName'";
$result = mysql_query($query,$link) or die("Query failed : " . mysql_error());
$num_rows = mysql_num_rows($result);

if( $num_rows == 0 ){

$query = "INSERT INTO users(Nick_Name,User_Pass,Full_Name,User_Birth_Day,User_EMail,
Character_Birth_Day,Security_Answer,User_Gender,User_City,ICQ_Number)";

$query .= "Values ('$aNickName','$aPass','$aFIO',Now(),'$aMail','$aDate','$aAnswer','$aUserGender','$aCity','$aICQ')";

$result = mysql_query($query,$link) or die("Query failed : " . mysql_error());

print("Юзер: $aNickName, с паролем: $aPass, именем: $aFIO, Датой рождения: $aDate добавлен в базу!");
} else {
print("Юзер: $aNickName уже есть в игре, выберите другой логин!");
}
mysql_close($link);
        
        ?>
<form name=regform action="reg.php" method=POST onSubmit="feedbackSubmit()">
    <p><br>
&nbsp;</p>
    <TABLE width=515 cellPadding=0 border=0 style="border-style: dashed; border-width: 1px" bgcolor="#FFE5B6">
    <TR>
    <TD width="72">Логин:<font color="#FF0000">*</font></TD>
    <TD width="204">
  <INPUT  name=nickname size="20"></TD>
    <TD width="98">Пароль:<font color="#FF0000">*</font></TD>
    <TD width="193"><INPUT type=password name=pass size="20"></TD>
    </TR>
    <TR>
    <TD width="72"><span lang="en-us">E-Mail</span><font color="#FF0000">*</font></TD>
    <TD width="204"><INPUT name=email size="20"></TD>
    <TD width="98">ФИО<font color="#FF0000">*</font></TD>
    <TD width="193"><INPUT name=fio size="37"></TD>
    </TR>
    <TR>
    <TD width="72">          
    Секретный вопрос<font color="#FF0000">*</font></p>
    </TD>
    <TD style="PADDING-BOTTOM: 10px" width="204">
        <select size="1" name="question">
          <option value="1">Любимое время года</option>
          <option value="2">Любимый напиток</option>
          <option value="3">Кличка домашнего животного</option>
        </select></i></TD>
    <TD style="PADDING-BOTTOM: 10px" width="98">Секретный ответ<font color="#FF0000">*</font></TD>
    <TD style="PADDING-BOTTOM: 10px" width="193">
  <INPUT name=answer size="37"></TD>
    </TR>
    <TR>
    <TD width="72">          
        Ваш пол:<font color="#FF0000">*</font><BR>
  &nbsp;</TD>
    <TD style="PADDING-BOTTOM: 10px" width="307" colspan="2">
  <INPUT TYPE="radio" NAME="gender" value="Мужской" style="cursor:hand" ID=A1 checked><LABEL FOR=A1> Мужской </LABEL>
  <INPUT TYPE="radio" NAME="gender" value="Женский" style="cursor:hand" ID=A2><LABEL FOR=A2> Женский</LABEL></TD>
    <TD style="PADDING-BOTTOM: 10px" width="193">&nbsp;</TD>
    </TR>
    <TR>
    <TD width="72">          
    Город:</TD>
    <TD style="PADDING-BOTTOM: 10px" width="204">
  <INPUT TYPE="text" NAME="city" size=20 maxlength=40></TD>
    <TD style="PADDING-BOTTOM: 10px" width="98">ICQ:</TD>
    <TD style="PADDING-BOTTOM: 10px" width="193"> 
  <INPUT TYPE="text" NAME="icq" size=20 maxlength=20 value=""></TD>
    </TR>
    <TR>
    <TD width="72">          
    Дата рождения:<font color="#FF0000">*</font></TD>
    <TD style="PADDING-BOTTOM: 10px" width="495" colspan="3">Число:&nbsp; <select size="1" name="day">
          <option value="1">01</option>
          <option value="2">02</option>
          <option value="3">03</option>
          <option value="4">04</option>
          <option value="5">05</option>
          <option value="6">06</option>
          <option value="7">07</option>
          <option value="8">08</option>
          <option value="9">09</option>
          <option value="10">10</option>
          <option value="11">11</option>
          <option value="12">12</option>
          <option value="13">13</option>
          <option value="14">14</option>
          <option value="15">15</option>
          <option value="16">16</option>
          <option value="17">17</option>
          <option value="18">18</option>
          <option value="19">19</option>
          <option value="20">20</option>
          <option value="21">21</option>
          <option value="22">22</option>
          <option value="23">23</option>
          <option value="24">24</option>
          <option value="25">25</option>
          <option value="26">26</option>
          <option value="27">27</option>
          <option value="28">28</option>
          <option value="29">29</option>
          <option value="30">30</option>
          <option value="31">31</option>
        </select>&nbsp;&nbsp; Месяц:
  <select size="1" name="month">
          <option value="01">январь</option>
          <option value="02">февраль</option>
          <option value="03">март</option>
          <option value="04">апрель</option>
          <option value="05">май</option>
          <option value="06">июнь</option>
          <option value="07">июль</option>
          <option value="08">август</option>
          <option value="09">сентябрь</option>
          <option value="10">октябрь</option>
          <option value="11">ноябрь</option>
          <option value="12">декабрь</option>
        </select>&nbsp; Год: <select size="1" name="year">
          <option value="1960">1960</option>
          <option value="1961">1961</option>
          <option value="1962">1962</option>
          <option value="1963">1963</option>
          <option value="1964">1964</option>
          <option value="1965">1965</option>
          <option value="1966">1966</option>
          <option value="1967">1967</option>
          <option value="1968">1968</option>
          <option value="1969">1969</option>
          <option value="1970">1970</option>
          <option value="1971">1971</option>
          <option value="1972">1972</option>
          <option value="1973">1973</option>
          <option value="1974">1974</option>
          <option value="1975">1975</option>
          <option value="1976">1976</option>
          <option value="1977">1977</option>
          <option value="1978">1978</option>
          <option value="1979">1979</option>
          <option value="1980">1980</option>
          <option value="1981" selected>1981</option>
          <option value="1982">1982</option>
          <option value="1983">1983</option>
          <option value="1984">1984</option>
          <option value="1985">1985</option>
          <option value="1986">1986</option>
          <option value="1987">1987</option>
          <option value="1988">1988</option>
          <option value="1989">1989</option>
          <option value="1990">1990</option>
          <option value="1991">1991</option>
          <option value="1992">1992</option>
          <option value="1993">1993</option>
          <option value="1994">1994</option>
          <option value="1995">1995</option>
          <option value="1996">1996</option>
          <option value="1997">1997</option>
          <option value="1998">1998</option>
          <option value="1999">1999</option>
          <option value="2000">2000</option>
          
          <option value="2001">2001</option>
      <option value="2002">2002</option>
          
        </select></TD>
    </TR>
    <TR>
    <TD width="107">
         </TD>
    <TD width="462" colspan="3">          
  <INPUT TYPE="text" NAME="digits" size=10 maxlength=40>
  Введите код с картинки <font color="#FF0000">*</font> 

           <?php
               $code = ''.mt_rand(1000,9999);
               $md5code = md5($code);
               echo "<img src=code.php?code=$code><p>";
            ?>        
    <input type="hidden" name="check" class=inup size="20" value="<?php echo $md5code ?>">
    </TD>
    </TR>
    <TR>
    <TD width="567" colspan="4">          
        <br>
        <INPUT TYPE="checkbox" ID=A4 NAME="law" style="cursor:hand">
  <span lang="ru">Я ознакомился с <a href="law.html">правилами</a> игры </span>MMCLUB<br>
&nbsp;</TD>
    </TR>
    <TR>
    <TD width="72">          
    <INPUT class=SubmitButton type=button value=Регистрация name=reg onClick="feedbackSubmit()"></TD>
    <TD style="PADDING-BOTTOM: 10px" width="204">&nbsp;</TD>
    <TD style="PADDING-BOTTOM: 10px" width="98">&nbsp;</TD>
    <TD style="PADDING-BOTTOM: 10px" width="193">&nbsp;</TD>
    </TR>
    </TABLE>
</FORM>

база:

CREATE TABLE `users` (
 `USER_ID`                       int(11) NOT NULL AUTO_INCREMENT,
   `Nick_Name`                     CHAR(32) UNIQUE,                                        
  `User_Passw`                     CHAR(32),                                            
   `SessionID`                     bigint,                                                 
   `User_EMail`                    CHAR(64) UNIQUE,                                        
   `Security_Question`               SMALLINT(2) DEFAULT 1 REFERENCES secretquestions(`ID`),
   `Security_Answer`               CHAR(30),                                               
   `Full_Name`                     CHAR(50),                                              
   `User_Birth_Day`                DATE NOT NULL,                                         
   `Character_Birth_Day`           DATE NOT NULL,                                          
   `User_Gender`                   SMALLINT(1),                                            
   `User_City`                     CHAR(32),                                               
   `ICQ_Number`                    CHAR(16),                                             
  `Character_Money`               INT DEFAULT '200',                                         
   `Character_Euro`                FLOAT DEFAULT '700',                                     
   `Character_Strength`            INT DEFAULT '3',                                         
   `Character_Strength_Total`      INT DEFAULT '3',                                         
   `Character_Endurance`           INT DEFAULT '3',                                         
   `Character_Accuracy`            INT DEFAULT '3',                                          
   `Character_Accuracy_Total`      INT DEFAULT '0',                                          
   `Character_Dexterity`           INT DEFAULT '3',                                           
   `Character_Dexterity_Total`     INT DEFAULT '0',                                           
   `Character_Intelligence`        INT DEFAULT '0',                                         
   `Character_Intelligence_Total`  INT DEFAULT '0',                                        
   `Character_CurMana`             INT DEFAULT '0',                                         
   `Character_MaxMana`             INT DEFAULT '0',                                        
   `Character_Magic_Protection`    INT DEFAULT '0',                                      
   `Character_Sword`               INT DEFAULT '0',                                         
   `Character_Spear`               INT DEFAULT '0',                                      
   `Character_Axe`                INT DEFAULT '0',                                      
   `Character_Mace`               INT DEFAULT '0',                                   
   `Character_Dagger`              INT DEFAULT '0',                                          
   `Character_CurHealth`           INT DEFAULT '0',                                        
   `Character_MaxHealth`           INT DEFAULT '20',                                       
   `Character_Level`               INT DEFAULT '0',                                           
   `Character_Experience`          INT DEFAULT '0',                                        
   `Character_NextExperiencev`      INT DEFAULT '10',                                          
   `Character_UnUsed_Points`       INT DEFAULT '3',                                          
   `Character_Status`              INT DEFAULT '1',                                          

   `Town`                          INT DEFAULT '0' REFERENCES Towns(`ID`),                   
   `Building`                      INT DEFAULT '0' REFERENCES Buildings(`ID`),              
   `Moving_Type`                   INT DEFAULT '0' REFERENCES MovingTypes(`ID`),        
   `Character_Disposition`         INT DEFAULT '0' REFERENCES Dispositions(`ID`),           
   `Character_Clan`                INT DEFAULT '0' REFERENCES Clans(`ID`),                 
   `Character_Image`               CHAR(30) DEFAULT 'standart1.gif',                   
   `Character_MaxWeigth`           INT DEFAULT '20',                                       
   `Helmet_Slot`                  INT DEFAULT '0',                                        
   `Shield_Slot`                   INT DEFAULT '0',                                  
   `Weapon_Slot`                   INT DEFAULT '0',                             
   `Gloves_Slot`                   INT DEFAULT '0',                               
   `Shoes_Slot`                    INT DEFAULT '0',                                 
   `Armor_Slot`                    INT DEFAULT '0',                                   
   `Necklace_Slot`                 INT DEFAULT '0',                                       
   `Ring1_Slot`                    INT DEFAULT '0',                                         
   `Ring2_Slot`                    INT DEFAULT '0',                                        
   `Ring3_Slot`                   INT DEFAULT '0',                                         
   `Ring4_Slot`                    INT DEFAULT '0',                                      
   `Ear_Slot`                     INT DEFAULT '0',                                           
   `Belt_Slot`                     INT DEFAULT '0',                                       
   `Scroll_Slot`                     INT DEFAULT '0',                                     
  PRIMARY KEY  (`USER_ID`)
) ENGINE=MyISAM DEFAULT CHARSET=cp1251;

2 Востаннє редагувалося koala (31.05.2013 05:19:08)

Re: Реєстрація. (не працює)

Спробуйте замінити

or die("Query failed : " . mysql_error());

на щось типу

or die('Query "'.$query.'" failed : ' . mysql_error());

і уважно почитати... або викласти сюди результат

3

Re: Реєстрація. (не працює)

 `Character_Birth_Day`           DATE NOT NULL,
$aDate = $aYear."-".$aMonth."-".$aDay; /*Собираем в формат yyyy-mm-dd*/

якщо у вас рік місяць число прийде не у вірному форматі у вас виникає така помилка.
Спробуйте що б $aDate = '2013-05-05' і повторіть запит)
+ фільтруйте дані
+ використовуйте pdo

Подякували: koala, Faraon2

4 Востаннє редагувалося Faraon (31.05.2013 11:43:03)

Re: Реєстрація. (не працює)

Спробуйте замінити
or die("Query failed : " . mysql_error());
на щось типу
or die('Query "'.$query.'" failed : ' . mysql_error());
і уважно почитати... або викласти сюди результат

результат не змінився!

якщо у вас рік місяць число прийде не у вірному форматі у вас виникає така помилка.
Спробуйте що б $aDate = '2013-05-05' і повторіть запит)

Допомогло, все працює дякую, тепер зрозуміло де саме помилка (хоча мені здавалося що я все правельно зробив)!

+ фільтруйте дані
+ використовуйте pdo

Можете будь-ласка детальніше розказати, як фільтрувати дані та навіщо ?

5

Re: Реєстрація. (не працює)

Faraon написав:

Спробуйте замінити
or die("Query failed : " . mysql_error());
на щось типу
or die('Query "'.$query.'" failed : ' . mysql_error());
і уважно почитати... або викласти сюди результат

результат не змінився!

якщо у вас рік місяць число прийде не у вірному форматі у вас виникає така помилка.
Спробуйте що б $aDate = '2013-05-05' і повторіть запит)

Допомогло, все працює дякую, тепер зрозуміло де саме помилка (хоча мені здавалося що я все правельно зробив)!

+ фільтруйте дані
+ використовуйте pdo

Можете будь-ласка детальніше розказати, як фільтрувати дані та навіщо ?

http://iflista.github.io/php-the-right-way/

Подякували: Faraon1