Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Форма даты рождения

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Описание: помогите с датами?
hurtmind
Отправлено: 23 Сентября, 2012 - 16:12:59
Post Id


Новичок


Покинул форум
Сообщений всего: 3
Дата рег-ции: Сент. 2012  


Помог: 0 раз(а)




Друзья, есть форма для записи в базу даты рождения пользователя. Код такой:

CODE (htmlphp):
скопировать код в буфер обмена
  1. <?php
  2. $monthOptions = '<option value="0" id="month_option">Month:</option>';
  3. $dayOptions = '<option value="0" id="day_option">Day:</option>';
  4. $yearOptions = '<option value="0" id="year_option">Year:</option>';
  5.  
  6. for($month=1; $month<=12; $month++)
  7. {
  8.    $monthName = date("M", mktime(0, 0, 0, $month));
  9.    $monthOptions .= "<option value=\"{$month}\">{$monthName}</option>\n";
  10. }
  11. for($day=1; $day<=31; $day++)
  12. {
  13.    $dayOptions .= "<option value=\"{$day}\">{$day}</option>\n";
  14. }
  15. for($year=2012; $year>=1890; $year--)
  16. {
  17.    $yearOptions .= "<option value=\"{$year}\">{$year}</option>\n";
  18. }
  19. ?>
  20.  
  21. ..............................
  22.  
  23. <script type="text/javascript">
  24. function updateDays()
  25. {
  26.    //Create variables needed
  27.    var monthSel = document.getElementById('month');
  28.    var daySel   = document.getElementById('day');
  29.    var yearSel  = document.getElementById('year');
  30.    var monthVal = monthSel.value;
  31.    var yearVal  = yearSel.value;
  32.    
  33.    //Determine the number of days in the month/year
  34.    var daysInMonth = 31;
  35.    if (monthVal==2)
  36.    {
  37.        daysInMonth = (yearVal%4==0 && (yearVal%100!=0 || yearVal%400==0)) ? 29 : 28;
  38.    }
  39.    else if (monthVal==4 || monthVal==6 || monthVal==9 || monthVal==11)
  40.    {
  41.        daysInMonth = 30;
  42.    }
  43.    
  44.    //Add/remove options from days select list as needed
  45.    if(daySel.options.length > daysInMonth)
  46.    {   //Remove excess days, if needed
  47.        daySel.options.length = daysInMonth;
  48.    }
  49.    while (daySel.options.length != daysInMonth)
  50.    {   //Add additional days, if needed
  51.        daySel.options[daySel.length] = new Option(daySel.length+1, daySel.length+1, false);
  52.    }
  53.    
  54.    return;
  55. }
  56.  
  57. </script>
  58. <P>Date of birth:<br>
  59. <select name="day" id="day">
  60. <?php echo $dayOptions; ?>
  61. </select>
  62.  
  63. <select name="month" id="month" onchange="updateDays();">
  64. <?php echo $monthOptions; ?>
  65. </select>
  66.  
  67. <select name="year" id="year" onchange="updateDays();">
  68. <?php echo $yearOptions; ?>
  69. </select>



В базу заносится так:

CODE (htmlphp):
скопировать код в буфер обмена
  1. $m=$_POST['month'];
  2. $d=$_POST['day'];
  3. $y=$_POST['year'];
  4.  
  5. $bd = date ("$y-$m-$d")
  6.  
  7. $result5 = mysql_query("UPDATE база SET birthday='$bd' WHERE email='$email'",$db);


Теперь вопрос: как при загрузке формы сделать так, чтобы по умолчанию были выбраны день, месяц и год рождения пользователя сохраненные ранее в базе?

К примеру достану я эти значения так:

CODE (htmlphp):
скопировать код в буфер обмена
  1. $dt=explode('-', ($myrow9['birthday']));
  2. $dd=$dt[2]; //день
  3. $mm=$dt[1]; //месяц
  4. $yy=$dt[0]; //год

(Отредактировано автором: 23 Сентября, 2012 - 18:04:24)

 
 Top
vanicon
Отправлено: 23 Сентября, 2012 - 16:36:03
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 808
Дата рег-ции: Янв. 2010  
Откуда: Самара


Помог: 17 раз(а)




Неплохо бы было оформлять код как надо, а добавить можно так:
PHP:
скопировать код в буфер обмена
  1.  
  2. $dt=explode('-', ($myrow9['birthday']));
  3. $dd=$dt[2]; //день
  4. $mm=$dt[1]; //месяц
  5. $yy=$dt[0]; //год
  6.  
  7. for($month=1; $month<=12; $month++)
  8. {
  9. $monthName = date("M", mktime(0, 0, 0, $month));
  10. if($month == $mm){
  11. $monthOptions .= "<option selected value=\"{$month}\">{$monthName}</option>\n";
  12. }
  13. else{
  14. $monthOptions .= "<option value=\"{$month}\">{$monthName}</option>\n";
  15. }
  16. }
  17. for($day=1; $day<=31; $day++)
  18. {
  19. if($day == $dd){
  20. $dayOptions .= "<option selected value=\"{$day}\">{$day}</option>\n";
  21. }
  22. else{
  23. $dayOptions .= "<option value=\"{$day}\">{$day}</option>\n"
  24. }
  25. }
  26. for($year=2012; $year>=1890; $year--)
  27. {
  28. if($year == $yy){
  29. $yearOptions .= "<option selected value=\"{$year}\">{$year}</option>\n";
  30. }
  31. else{
  32. $yearOptions .= "<option value=\"{$year}\">{$year}</option>\n";
  33. }
  34. }
  35. ?>
  36.  


-----
Так было, так есть и так будет
 
 Top
hurtmind
Отправлено: 23 Сентября, 2012 - 18:10:23
Post Id


Новичок


Покинул форум
Сообщений всего: 3
Дата рег-ции: Сент. 2012  


Помог: 0 раз(а)




vanicon, спасибо огромное. Все отлично работает!
 
 Top
hurtmind
Отправлено: 23 Сентября, 2012 - 22:12:21
Post Id


Новичок


Покинул форум
Сообщений всего: 3
Дата рег-ции: Сент. 2012  


Помог: 0 раз(а)




Я извиняюсь за наглость, но передо мной аналогичная задача. Прикрутил к сайту выбор регион>>страна>>город следующим образом:

CODE (htmlphp):
скопировать код в буфер обмена
  1. <?php
  2. <script type='text/javascript' src='city_state.js'></script>
  3. ?>
  4.  
  5. <div id="widget">
  6. Select region: <select onchange="set_country(this,country,city_state)" size="1" name="region">
  7. <option value="" selected="selected">No matter</option>
  8. <option value=""></option>
  9. <script type="text/javascript">
  10. setRegions(this);
  11. </script>
  12. </select>
  13. Country: <select name="country" size="1" disabled="disabled" onchange="set_city_state(this,city_state)"></select>
  14. City/State: <select name="city_state" size="1" disabled="disabled" onchange="print_city_state(country,this)"></select>
  15. <div id="txtregion"></div>
  16. <div id="txtplacename"></div>
  17. </div>


city_state.js выглядит так:

CODE (javascript):
скопировать код в буфер обмена
  1. var countries = Object();
  2.  
  3. countries['Africa'] = '|Algeria|Angola|Benin|Botswana|Burkina Faso|Burundi|Cameroon|Cape Verde|Central African Republic|Chad|Comoros|Congo, Dem.|Congo, Rep.|Djibouti|Egypt|Equatorial Guinea|Eritrea|Ethiopia|Gabon|Gambia|Ghana|Guinea|Guinea-Bissau|Kenya|Lesotho|Liberia|Libya|Madagascar|Malawi|Mali|Mauritania|Mauritius|Morocco|Mozambique|Namibia|Niger|Nigeria|Rwanda|Sao Tome/Principe|Senegal|Seychelles|Sierra
  4.  
  5. // и так далее...
  6. ////////////////////////////////////////////////////////////////////////////
  7.  
  8. var city_states = Object();
  9.  
  10. //Africa
  11. city_states['Algeria'] = '|Algiers||Adrar|Ain Defla|Ain Temouchent|Alger|Annaba|Batna|Bechar|Bejaia|Biskra|Blida|Bordj Bou Arreridj|Bouira|Boumerdes|Chlef|Constantine|Djelfa|El Bayadh|El Oued|El Tarf|Ghardaia|Guelma|Illizi|Jijel|Khenchela|Laghouat|Mascara|Medea|Mila|Mostaganem|M\'Sila|Naama|Oran|Ouargla|Oum el Bouaghi|Relizane|Saida|Setif|Sidi Bel Abbes|Skikda|Souk
  12.  
  13. // и так далее...
  14. ////////////////////////////////////////////////////////////////////////////
  15.  
  16.  
  17. //Asia
  18. city_states['Bangladesh'] = '|Dhaka||Barisal|Chittagong|Khulna|Rajshahi|Sylhet';
  19. city_states['Bhutan'] = '|Thimphu||Bumthang|Chhukha|Chirang|Dagana|Gasa|Geylegphug|Ha|Lhuntshi|Mongar|Paro|Pemagatsel|Punakha|Samchi|Samdrup Jongkhar|Shemgang|Tashigang|Tongsa|Wangdi Phodrang|Yangtse';
  20. city_states['Brunei'] = '|Bandar Seri Begawan||Belait|Brunei/Muara|Temburong|Tutong';
  21. city_states['Burma (Myanmar)'] = '|Rangoon||Ayeyarwady|Bago|Chin|Kachin|Kayin|Kayah|Magway|Mandalay|Mon|Rakhine|Sagaing|Shan|Tanintharyi|Yangon';
  22. city_states['Cambodia'] = '|Phnom Penh||Banteay Mean Cheay|Batdambang|Kampong Cham|Kampong Chhnang|Kampong Spoe|Kampong Thum|Kampot|Kandal|Kaoh Kong|Keb|Kracheh|Mondol Kiri|Otdar Mean Cheay|Pailin|Pouthisat|Preah Seihanu (Sihanoukville)|Preah Vihear|Prey Veng|Rotanah Kiri|Siem Reab|Stoeng Treng|Svay Rieng|Takev';
  23. city_states['China'] = '|Beijing||Anhui|Chongqing|Fujian|Gansu|Guangdong|Guangxi|Guizhou|Hainan|Hebei|Heilongjiang|Henan|Hubei|Hunan|Jiangsu|Jiangxi|Jilin|Liaoning|Nei
  24.  
  25. // и так далее...
  26. ////////////////////////////////////////////////////////////////////////////
  27.  
  28.  
  29. //Australia-Oceania
  30. city_states['Australia'] = '|Canberra||Australian Capital Territory|New South Wales|Northern Territory|Queensland|South Australia|Tasmania|Victoria|Western Australia';
  31. city_states['Fiji'] = '|Suva||Central|Eastern|Northern|Rotuma|Western';
  32. city_states['Kiribati'] = '|Tarawa||Abaiang|Abemama|Aranuka|Arorae|Banaba|Beru|Butaritari|Gilberts (Central)|Gilberts (Northern)|Gilberts (Southern)|Kanton|Kiritimati|Kuria|Line Islands|Maiana|Makin|Marakei|Nikunau|Nonouti|Onotoa|Phoenix Islands|Tabiteuea|Tabuaeran|Tamana|Teraina';
  33. city_states['Micronesia'] = '|Palikir||Chuuk (Truk)|Kosrae|Pohnpei|Yap';
  34. city_states['Nauru'] = '|Yaren||Aiwo|Anabar|Anetan|Anibare|Baiti|Boe|Buada|Denigomodu|Ewa|Ijuw|Meneng|Nibok
  35.  
  36. // и так далее...
  37. ////////////////////////////////////////////////////////////////////////////
  38.  
  39. function setRegions()
  40. {
  41.         for (region in countries)
  42.                 document.write('<option value="' + region + '">' + region + '</option>');
  43. }
  44.  
  45. function set_country(oRegionSel, oCountrySel, oCity_StateSel)
  46. {
  47.         var countryArr;
  48.         oCountrySel.length = 0;
  49.         oCity_StateSel.length = 0;
  50.         var region = oRegionSel.options[oRegionSel.selectedIndex].text;
  51.         if (countries[region])
  52.         {
  53.                 oCountrySel.disabled = false;
  54.                 oCity_StateSel.disabled = true;
  55.                 oCountrySel.options[0] = new Option('No matter','');
  56.                 countryArr = countries[region].split('|');
  57.                 for (var i = 0; i < countryArr.length; i++)
  58.                         oCountrySel.options[i + 1] = new Option(countryArr[i], countryArr[i]);
  59.                 document.getElementById('txtregion').innerHTML = region;
  60.                 document.getElementById('txtplacename').innerHTML = '';
  61.         }
  62.         else oCountrySel.disabled = true;
  63. }
  64.  
  65. function set_city_state(oCountrySel, oCity_StateSel)
  66. {
  67.         var city_stateArr;
  68.         oCity_StateSel.length = 0;
  69.         var country = oCountrySel.options[oCountrySel.selectedIndex].text;
  70.         if (city_states[country])
  71.         {
  72.                 oCity_StateSel.disabled = false;
  73.                 oCity_StateSel.options[0] = new Option('No matter','');
  74.                 city_stateArr = city_states[country].split('|');
  75.                 for (var i = 0; i < city_stateArr.length; i++)
  76.                         oCity_StateSel.options[i+1] = new Option(city_stateArr[i],city_stateArr[i]);
  77.                 document.getElementById('txtplacename').innerHTML = country;
  78.         }
  79.         else oCity_StateSel.disabled = true;
  80. }
  81.  
  82. function print_city_state(oCountrySel, oCity_StateSel)
  83. {
  84.         var country = oCountrySel.options[oCountrySel.selectedIndex].text;
  85.         var city_state = oCity_StateSel.options[oCity_StateSel.selectedIndex].text;
  86.         if (city_state && city_states[country].indexOf(city_state) != -1)
  87.                 document.getElementById('txtplacename').innerHTML = city_state + ', ' + country;
  88.         else document.getElementById('txtplacename').innerHTML = country;
  89.         }


Выбранные пользователем параметры записываю в базу:

CODE (htmlphp):
скопировать код в буфер обмена
  1. $result5 = mysql_query("UPDATE users SET region='$region', country='$country', city_state='$city_state' WHERE email='$email'",$db);


достаю так:

CODE (htmlphp):
скопировать код в буфер обмена
  1. $result2 = mysql_query("SELECT * FROM users WHERE email='$email'",$db);
  2. $myrow2 = mysql_fetch_array($result2);
  3. $reg = $myrow2['region'];
  4. $coun = $myrow2['country'];
  5. $city = $myrow2['city_state'];


ВОПРОС собственно такой же: как при загрузке формы, поумолчанию были выбраны регион, страна и город пользователя. Буду сильно благодарен за помощь Закатив глазки
 
 Top
vanicon
Отправлено: 23 Сентября, 2012 - 22:22:43
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 808
Дата рег-ции: Янв. 2010  
Откуда: Самара


Помог: 17 раз(а)




Не знаю как это сделать чистым javascript, но с jquery получится так:
CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2. <select id="region">
  3. <option value="1">Регион1</option>
  4. <option value="2">Регион2</option>
  5. <option value="3">Регион3</option>
  6. </select>
  7. <script type="text/javascript">
  8. $('#region [value="2"]').attr('selected', 'selected');
  9. </script>
  10.  

(Отредактировано автором: 23 Сентября, 2012 - 22:24:03)



-----
Так было, так есть и так будет
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Хранение данных, их вывод и обработка »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB