За последние 24 часа нас посетили 102535 программистов и 5649 роботов. Сейчас ищут 2816 программистов ...

Моя первая фигня на php.=)

Тема в разделе "PHP для новичков", создана пользователем VampiR_WAR, 23 авг 2009.

  1. VampiR_WAR

    VampiR_WAR Активный пользователь

    С нами с:
    19 авг 2009
    Сообщения:
    409
    Симпатии:
    1
    Адрес:
    Нижний Новгород
    PHP:
    1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    2. <html xmlns="http://www.w3.org/1999/xhtml">
    3. <head>
    4. <meta http-equiv="Content-Type" content="text/html; charset=windows-1251" />
    5. <title>Конструкции</title>
    6. </head>
    7.  
    8. <body>
    9.  
    10.  
    11.  
    12.  
    13.  
    14.  
    15.  
    16. <?php
    17.  
    18.  
    19.  
    20.  
    21.  
    22. /* Задаем значения переменным значение массива POST */
    23. $k = $_POST[1];
    24. $t = $_POST[2];
    25. $o = $_POST[3];
    26. $l = $_POST[4];
    27. $s = $_POST[5];
    28.  
    29. /* Задаем оснвные переменные */
    30. $korova = "карьера" ;
    31. $tigr = "честь и достоинство";
    32. $ovtsa = "любовь и секс";
    33. $loshad = "семья";
    34. $svin = "деньги";
    35.  
    36. /* Задаем условие не равенства коротких переменных */
    37.  
    38. if ($k != $t and $k != $o and  $k != $l and $k != $s and $t != $o and $t != $l and $t != $s and  $o != $l and $o != $s and  $l != $s)
    39. {
    40. /* Условия для переменной $K */
    41. if ($k <= 5 and $k > 0)
    42. {
    43. echo  "На $k месте в жизни для Вас $korova <br><br> ";
    44. }
    45. else
    46. {
    47. echo  "Вы не верно ввели число в первом поле<br><br>";
    48. }
    49.  
    50.  
    51. /* Условия для переменной $t */
    52. if ($t <= 5 and $t > 0)
    53. {
    54. echo  "На $t месте в жизни для Вас $tigr <br><br> ";
    55. }
    56. else
    57. {
    58. echo "Вы не верно ввели число во втором поле<br><br>";
    59. }
    60.  
    61.  
    62.  
    63. /* Условия для переменной $o */
    64. if ($o <= 5 and $o > 0)
    65. {
    66. echo "На $o месте в жизни для Вас $ovtsa <br><br>";
    67. }
    68. else
    69. {
    70. echo "Вы не верно ввели число в третьем поле<br><br>";
    71. }
    72.  
    73.  
    74. /* Условия для переменной $l */
    75. if ($l <= 5 and $l > 0)
    76. {
    77. echo "На $l месте в жизни для Вас $loshad <br><br>";
    78. }
    79. else
    80. {
    81. echo "Вы не верно ввели число в четвертом поле<br><br>";
    82. }
    83.  
    84.  
    85.  
    86.  
    87. /* Условия для переменной $s */
    88. if ($s <= 5 and $s > 0)
    89. {
    90. echo "На $s месте в жизни для Вас $svin <br><br>";
    91. }
    92. else
    93. {
    94. echo "Вы не верно ввели число в пятом поле";
    95. }
    96. }
    97. else
    98. {
    99. echo "Необходимо вводить разные числа для каждого поля.<br>
    100. Числа только 1,2,3,4,5.";
    101. }
    102. ?>
    103.  
    104. <form method="post" action="tets.php">
    105.  
    106. <p><input type="text" name="1" size=1> Корова </p>
    107.  
    108. <p><input type="text" name="2" size=1> Тигр </p>
    109.  
    110. <p><input type="text" name="3" size=1> Овца </p>
    111.  
    112. <p><input type="text" name="4" size=1> Лошадь </p>
    113.  
    114. <p><input type="text" name="5" size=1> Свинья </p>
    115.  
    116. <p><input type="submit" name="submit" value="Результат"</p>
    117.  
    118. </form>
    119.  
    120.  
    121. </body>
    122. </html>
    123.  
     
  2. Kreker

    Kreker Старожил

    С нами с:
    8 апр 2007
    Сообщения:
    5.432
    Симпатии:
    0
    1.
    Этот код практического смысла не имеет. Как я понимаю, многие переименовывают переменные, чтобы сократить названия, не использовать кнопки. Но плюсы на этом и заканчиваются.
    Когда Вы пишите в коде echo $_POST..., то понимаете, что данные могут быть опасны и защищаетесь. Но когда Вы пишите echo $a, то можно и забыть, что данные берутся извне или пренебречь экранированием (или проверками), подумав, что если переменная переименована, значит она где-то обрабатывалась.

    2.
    http://ru.wikipedia.org/wiki/%D0%A1%D1% ... 0%BE%D0%B2


    3. Что будет, если я открою страницу? В первый раз форма не отправляется! phpfaq.ru/debug

    4. Подумайте, как уменьшить количество кода. Можно использовать массивы, циклы.

    5. Имена формам лучше давать строковые (если форм не сто штук). Легче для идентификации.
     
  3. VampiR_WAR

    VampiR_WAR Активный пользователь

    С нами с:
    19 авг 2009
    Сообщения:
    409
    Симпатии:
    1
    Адрес:
    Нижний Новгород
    Прошу сразу перейти на "Ты."=))
    1.Не совсем понял - присвоение
    $k = $_POST[1];
    Это хорошо или плохо?

    2.Какого стиля лучше придерживаться? И есть ли у редакторов фенкция отступов? или пробелами выбивать?:)
     
  4. Kreker

    Kreker Старожил

    С нами с:
    8 апр 2007
    Сообщения:
    5.432
    Симпатии:
    0
    Сам не использую и другим не рекомендую, потому как считаю это плохим тоном.


    Какого нравится.
    Из всего кода, что видел, чаще используют K&R с 1-2 табуляциями.
     
  5. VampiR_WAR

    VampiR_WAR Активный пользователь

    С нами с:
    19 авг 2009
    Сообщения:
    409
    Симпатии:
    1
    Адрес:
    Нижний Новгород
    Kreker
    Спасибо!) Будем работать над этим.=)
     
  6. Elkaz

    Elkaz Старожил
    Команда форума Модератор

    С нами с:
    26 июн 2006
    Сообщения:
    3.373
    Симпатии:
    0
    Адрес:
    Баку, Азербайджан
    А мне нравится
    PHP:
    1.  
    2. <?php
    3. $name = isset ($_POST['username_from_form']) ? Text::Clean ($_POST['username_from_form']) : null;
    4. ?>
    5.  
    Правда конкретно так никогда не пишу (в крупных проектах), но смысл такой же.
     
  7. Kreker

    Kreker Старожил

    С нами с:
    8 апр 2007
    Сообщения:
    5.432
    Симпатии:
    0
    В твоем случае это нормально. Я писал про случаи, когда никакой обработки и проверки не делается вообще, когда идет простое присвоение.
     
  8. VampiR_WAR

    VampiR_WAR Активный пользователь

    С нами с:
    19 авг 2009
    Сообщения:
    409
    Симпатии:
    1
    Адрес:
    Нижний Новгород
    PHP:
    1. <?php
    2. $result = $_POST[2] - $_POST[1];
    3. $podchet = ($result - 50) * 3.4;
    4. $finish = $podchet + 95;
    5.  
    6.     if ($_POST[1] < $_POST[2]) {
    7.         echo "Расход кВт равен $result <br>";
    8.         echo "Сумаа к оплате $finish рублей." ;
    9.     }
    10.            else {
    11.                    echo "Введите верное значение";
    12.            }
    13.  
    14. ?>
    15.  
    16. <form method="post" action="electro.php">
    17.  
    18. <p><input type="text" name="1" size=4> Предыдущее </p>
    19.  
    20. <p><input type="text" name="2" size=4> Текущее </p>
    21.  
    22. <p><input type="submit" name="submit" value="Подсчитать"</p>
    23.  
    24. </form>
    А так можно подсчитать расход электроэнергии.

    Ушел в учебник снова. :D
     
  9. VampiR_WAR

    VampiR_WAR Активный пользователь

    С нами с:
    19 авг 2009
    Сообщения:
    409
    Симпатии:
    1
    Адрес:
    Нижний Новгород
    Kreker
    Мозги закипать начинают, как подумаю над тем как можно осуществить пример теста с верху с помощью циклов.
     
  10. Kreker

    Kreker Старожил

    С нами с:
    8 апр 2007
    Сообщения:
    5.432
    Симпатии:
    0
    Ставь error_reportings(E_ALL) В начало скрипта :)
     
  11. VampiR_WAR

    VampiR_WAR Активный пользователь

    С нами с:
    19 авг 2009
    Сообщения:
    409
    Симпатии:
    1
    Адрес:
    Нижний Новгород
    Kreker
    Fatal error: Call to undefined function error_reportings() in O:\home\test1.ru\www\electro.php on line 16

    Не понятно.... =(
     
  12. Hight

    Hight Старожил
    Команда форума Модератор

    С нами с:
    5 мар 2006
    Сообщения:
    7.139
    Симпатии:
    0
    Адрес:
    из злой параллельной вселенной
    Начинать скрипт надо с:

    <?php error_reporting(E_ALL);
     
  13. Hight

    Hight Старожил
    Команда форума Модератор

    С нами с:
    5 мар 2006
    Сообщения:
    7.139
    Симпатии:
    0
    Адрес:
    из злой параллельной вселенной
    VampiR_WAR
    Учись работать с мануалом
     
  14. VampiR_WAR

    VampiR_WAR Активный пользователь

    С нами с:
    19 авг 2009
    Сообщения:
    409
    Симпатии:
    1
    Адрес:
    Нижний Новгород
    Hight
    Parse error: syntax error, unexpected T_STRING in O:\home\test1.ru\www\tets.php on line 16
    Ладно, дойду. мануал php на русском есть?
     
  15. VampiR_WAR

    VampiR_WAR Активный пользователь

    С нами с:
    19 авг 2009
    Сообщения:
    409
    Симпатии:
    1
    Адрес:
    Нижний Новгород
    Возможно ли решение первого кода с помощью циклов?
     
  16. Kreker

    Kreker Старожил

    С нами с:
    8 апр 2007
    Сообщения:
    5.432
    Симпатии:
    0
    Вроде да, если будет сегодня время, то посмотрю.
     
  17. VampiR_WAR

    VampiR_WAR Активный пользователь

    С нами с:
    19 авг 2009
    Сообщения:
    409
    Симпатии:
    1
    Адрес:
    Нижний Новгород
    Kreker
    Спасибо. Простейший цикл я знаю... как выглядит. Но вот на практике не знаю как использовать.
     
  18. lanc777

    lanc777 Активный пользователь

    С нами с:
    19 авг 2009
    Сообщения:
    59
    Симпатии:
    0
    Код (Text):
    1. <?  $array=array('','Корова',' Тигр','Овца',' Лошадь','Свинья') ?>
    2.  
    3. <form method="post" action="tets.php">
    4.  
    5.     <? for($i=1;$i<count($array);$i++){  ?>
    6.  
    7.                  <p><input type="text" name="<?$i?>" size=1> <?$array[$i]?> </p>
    8.  
    9.      <? } ?>
    10.  
    11.      <p><input type="submit" name="submit" value="Результат"</p>
    12.  
    13.  
    14.  </form>
    так можно )
     
  19. Apple

    Apple Активный пользователь

    С нами с:
    13 янв 2007
    Сообщения:
    4.982
    Симпатии:
    2
    Неправильно оставлять один из элементов пустым только порядка ради.

    PHP:
    1. <?php
    2.     // Лучший вариант
    3.     $array = array(1 => 'Корова', 'Тигр', 'Овца', ' Лошадь', 'Свинья');
    4. ?>
     
  20. lanc777

    lanc777 Активный пользователь

    С нами с:
    19 авг 2009
    Сообщения:
    59
    Симпатии:
    0
    обьясни почему же?)
     
  21. Apple

    Apple Активный пользователь

    С нами с:
    13 янв 2007
    Сообщения:
    4.982
    Симпатии:
    2
    Не рационально и не профессионально.
     
  22. lanc777

    lanc777 Активный пользователь

    С нами с:
    19 авг 2009
    Сообщения:
    59
    Симпатии:
    0
    бе бе :-Р
     
  23. iliavlad

    iliavlad Активный пользователь

    С нами с:
    24 янв 2009
    Сообщения:
    1.689
    Симпатии:
    4
    VampiR_WAR
    пробуй сразу давать осмысленные имена (в твоих книжках должно быть про это).
    т.е. не
    а
    HTML:
    1. <p><input type="text" name="input_cow" size=1> Корова </p>
     
  24. VampiR_WAR

    VampiR_WAR Активный пользователь

    С нами с:
    19 авг 2009
    Сообщения:
    409
    Симпатии:
    1
    Адрес:
    Нижний Новгород
    iliavlad
    Про смысловые написано.
    lanc777
    Код предложенный вами не работает.
     
  25. lanc777

    lanc777 Активный пользователь

    С нами с:
    19 авг 2009
    Сообщения:
    59
    Симпатии:
    0
    PHP:
    1. <?  $array=array('','Корова',' Тигр','Овца',' Лошадь','Свинья'); ?>
    2.  
    3. <form method="post" action="tets.php">
    4.  
    5.     <? for($i=1;$i<count($array);$i++){  ?>
    6.  
    7.                  <p><input type="text" name="<? echo $i; ?>" size=1><? echo $array[$i]; ?> </p>
    8.  
    9.      <?} ?>
    10.  
    11.      <p><input type="submit" name="submit" value="Результат"</p>
    12.  
    13.  
    14.  </form>
    я не тестил теперь точно работает