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]   

> Без описания
event
Отправлено: 12 Февраля, 2012 - 20:24:20
Post Id


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


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


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




Привет, есть такой кусочек кода:
PHP:
скопировать код в буфер обмена
  1. <tr>
  2.         <td class="rowhead" style="line-height:25px;"><?=$tracker_lang['gender_person']?>  - <font color=red>*</font></td>
  3.         <td><select name="gender">
  4.        
  5. <?PHP if($row['gender'] == 1) {$selgend = " selected=\"selected\"";} elseif ($row['gender']==2){$selgend2 = " selected=\"selected\"";} ?>
  6.        
  7.        
  8.    <option value="0"><?=$tracker_lang['gender_choose']?></option>
  9.    <option <?=$selgend  ?> value="1"><?=$tracker_lang['gender_male']?></option>
  10.    <option  <?=$selgend2 ?> value="2"><?=$tracker_lang['gender_female']?></option>     
  11.    </tr>


Нормально ли я сделал выбор selected из базы?
 
 Top
OrmaJever Модератор
Отправлено: 12 Февраля, 2012 - 20:41:49
Post Id



Активный участник


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


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




Ну условие можно переписать, и в форме использовать одну переменую $selgend
PHP:
скопировать код в буфер обмена
  1. <?PHP $selgend = ($row['gender'] == 1) ? ' selected="selected"' : ($row['gender']==2 ? ' selected="selected"' : ''); ?>

или так
PHP:
скопировать код в буфер обмена
  1. <?PHP if($row['gender'] == 1) $selgend = " selected=\"selected\"";
  2. elseif ($row['gender'] == 2) $selgend = " selected=\"selected\""; ?>


-----
Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
 
 Top
event
Отправлено: 12 Февраля, 2012 - 20:54:43
Post Id


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


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


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




Спасибо, а тут нормально?
PHP:
скопировать код в буфер обмена
  1.     $date = explode('-', $row['birthday']);
  2.     $a = $date[0]; $b = $date[1]; $c = $date[2];
  3.        
  4.        
  5.  
  6.  
  7.  
  8. $year .= "<select name=year><option value=\"0000\">".$tracker_lang['my_year']."</option>\n";
  9. $i = "1920";
  10.  
  11.  
  12.  
  13.  
  14.  
  15. while ($i <= (date('Y',time()))) {
  16. $year .= "<option value=\"" .$i. "\"";
  17. if ($a == $i) $year .= " selected=\"selected\"";
  18. $year .= ">".$i."</option>\n";
  19. $i++;  
  20. }
  21.  
  22. $year .= "</select>\n";
  23.  
  24.  
  25. $birthmonths = array(
  26.         "01" => $tracker_lang['my_months_january'],
  27.         "02" => $tracker_lang['my_months_february'],
  28.         "03" => $tracker_lang['my_months_march'],
  29.         "04" => $tracker_lang['my_months_april'],
  30.         "05" => $tracker_lang['my_months_may'],
  31.         "06" => $tracker_lang['my_months_june'],
  32.         "07" => $tracker_lang['my_months_jule'],
  33.         "08" => $tracker_lang['my_months_august'],
  34.         "09" => $tracker_lang['my_months_september'],
  35.         "10" => $tracker_lang['my_months_october'],
  36.         "11" => $tracker_lang['my_months_november'],
  37.         "12" => $tracker_lang['my_months_december'],
  38. );     
  39. $month = "<select name=\"month\"><option value=\"00\">".$tracker_lang['my_month']."</option>\n";
  40. foreach ($birthmonths as $month_no => $show_month) {
  41.  
  42. $month .= "<option value=\"" .$month_no. "\"";
  43. if ($b == $month_no) $month .= " selected=\"selected\"";
  44. $month .= ">".$show_month."</option>\n";
  45.  
  46. }
  47. $month .= "</select>\n";
  48. $day .= "<select name=day><option value=\"00\">".$tracker_lang['my_day']."</option>\n";
  49. $i = 1;
  50. while ($i <= 31) {
  51.         if ($i < 10) {
  52.        
  53.        
  54. $day .= "<option value=\"0" .$i. "\"";
  55. if ($c== $i) $day .= " selected=\"selected\"";
  56. $day .= ">".$i."</option>\n";
  57.        
  58.                
  59.         } else {
  60.                 $day .= "<option value=\"" .$i. "\"";
  61. if ($c== $i) $day .= " selected=\"selected\"";
  62. $day .= ">".$i."</option>\n";
  63.         }
  64.         $i++;
  65. }
  66. $day .="</select>\n";
  67.  
  68. ?>
 
 Top
OrmaJever Модератор
Отправлено: 12 Февраля, 2012 - 21:17:54
Post Id



Активный участник


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


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




Ну первое что сразу кидается в глаза это экранизация кавычек, зачем брать текст в двойные кавычки если в них нету переменых? Что бы потом экранизировать такие кавычки?
PHP:
скопировать код в буфер обмена
  1. $year .= '<select name=year><option value="0000">'.$tracker_lang['my_year']."</option>\n";

В двойные кавычки нужно брать только строки со спец символами (\r, \n, \t и т.д).
Но в некоторых случаях с двойными кавычками лутше код читать
PHP:
скопировать код в буфер обмена
  1. $day .= "<option value=\"" .$i. "\""; // если уж есть переменая посреди текста то можно её в кавычки убрать
  2. $day .= "<option value=\"$i\""; // а ещё лучше и экранизацию убрать
  3. $day .= "<option value='$i'"; // заменив html кавычки на одинарные
  4.  

вобще для html'a вроде бы нету разницы одинарные или двойные кавычки, поэтому иногда можно их комбинировать для читабельности кода.
Особо в цыклы и условия не всмартивался.


-----
Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
 
 Top
moderated.weblink.20130603
Отправлено: 13 Февраля, 2012 - 12:50:24
Post Id


Новичок


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


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




А можно сделать и так, по проще!Улыбка

$day .= "<option value=".$i;

строку
$a = $date[0]; $b = $date[1]; $c = $date[2];
я бы убрал она вообще не нужна

я бы наверняка сделал по другому, но разбираться не хочу.

а отформатировал бы я вот так -
PHP:
скопировать код в буфер обмена
  1. $date = explode('-', $row['birthday']);
  2.  
  3. $year .= "<select name=year><option value='0000'>".$tracker_lang['my_year']."</option>\n";
  4.  
  5. $i = "1920"; // зачем это?
  6.  
  7. while ($i <= (date('Y',time())))
  8.   {
  9.     $year .= "<option value=".$i;
  10.     if ($date[0] == $i) $year .= ' selected="selected"';
  11.     $year .= ">".$i."</option>\n";
  12.     $i++;  
  13.   }
  14.  
  15. $year .= "</select>\n";
  16.  
  17. $birthmonths = array(
  18.                       "01" => $tracker_lang['my_months_january'],
  19.                       "02" => $tracker_lang['my_months_february'],
  20.                       "03" => $tracker_lang['my_months_march'],
  21.                       "04" => $tracker_lang['my_months_april'],
  22.                       "05" => $tracker_lang['my_months_may'],
  23.                       "06" => $tracker_lang['my_months_june'],
  24.                       "07" => $tracker_lang['my_months_jule'],
  25.                       "08" => $tracker_lang['my_months_august'],
  26.                       "09" => $tracker_lang['my_months_september'],
  27.                       "10" => $tracker_lang['my_months_october'],
  28.                       "11" => $tracker_lang['my_months_november'],
  29.                       "12" => $tracker_lang['my_months_december'],);
  30.                
  31. $month = "<select name='month'><option value='00'>".$tracker_lang['my_month']."</option>\n";
  32.  
  33. foreach ($birthmonths as $month_no => $show_month)
  34.   {
  35.     $month .= "<option value='".$month_no."'";
  36.     if ($date[1] == $month_no) $month .= " selected='selected'";
  37.     $month .= ">".$show_month."</option>\n";
  38.   }
  39.  
  40. $month .= "</select>\n";
  41. $day .= "<select name=day><option value='00'>".$tracker_lang['my_day']."</option>\n";
  42.  
  43. $i = 1;
  44. while ($i <= 31)
  45.   {
  46.     if ($i < 10)
  47.           {
  48.         $day .= "<option value='0".$i."'";
  49.         if ($date[2] == $i) $day .= " selected='selected'";
  50.         $day .= ">".$i."</option>\n";
  51.       }
  52.         else
  53.           {
  54.         $day .= "<option value='".$i."'";
  55.         if ($date[2] == $i) $day .= " selected='selected'";
  56.         $day .= ">".$i."</option>\n";
  57.       }
  58.     $i++;
  59.   }
  60.  
  61. $day .="</select>\n";

(Отредактировано автором: 13 Февраля, 2012 - 13:15:21)

 
 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