1. Задавайте здесь вопросы о коде, которые не подходят в другие разделы, такие как:
    Дизайн > Верстка
    PHP > Как сделать на PHP
    Скрыть объявление

Проверка на вшивость..:)

Тема в разделе "Web Coding", создана пользователем garizlo, 17 дек 2007.

Статус темы:
Закрыта.
Модераторы: latteo
  1. garizlo

    garizlo Постоялец

    Регистр.:
    16 сен 2006
    Сообщения:
    104
    Симпатии:
    23
    Подскажите, начал изучать php и потребовалось сделать выбор метода оплаты товара.

    Правильно ли я сделал, или этот код можно как то укоротить, или поправить???

    Форма выбора:
    HTML:
    
    <!DOCTYPE HTML PUBLIC '-//W3C//DTD HTML 4.01 Transitional//EN' 'http://www.w3.org/TR/html4/loose.dtd' \>
    <html>
    <head>
    <meta http-equiv='Content-Type' content='text/html; charset=windows-1251' \>
    <title>Выберите метод оплаты.</title>
    </head>
    <body>
    Способы оплаты (Выберите способ оплаты):<br>
    <form name="form1" method="get" action="switch.php">
      <p>
        <label>
          <input type="radio" name="sposob" value="b" id="sposob_0">
          Оплата через банк</label>
        <br>
        <label>
          <input type="radio" name="sposob" value="p" id="sposob_1">
          Оплата наложенным платежем при получении на почте</label>
        <br>
        <label>
          <input type="radio" name="sposob" value="w" id="sposob_2">
          Оплата через Western Union</label>
        <br>
      </p>
    <input type="submit" >
    </form>
    </body>
    </html>
    
    Обработчик:
    PHP:
    <!DOCTYPE HTML PUBLIC '-//W3C//DTD HTML 4.01 Transitional//EN' 'http://www.w3.org/TR/html4/loose.dtd' \>
    <html>
    <head>
    <meta http-equiv='Content-Type' content='text/html; charset=windows-1251' \>
    <?php 
    $title1 
    "Вы выбрали оплату через Банк";
    $title2 "Вы выбрали оплату товара при получении на Почте";
    $title3 "Вы выбрали оплату через Western Union";
    $title4 "Вы не выбрали способ оплаты. Выберите способ оплаты";

    if (
    $sposob == b) { $title $title1; }
    if (
    $sposob == p) { $title $title2; }
    if (
    $sposob == w) { $title $title3; }
    if (
    $sposob == "") { $title $title4; }
    ?>
    <title><?php echo $title?></title>
    </head>
    <body>
    <?php
    switch ($sposob
    {
        case 
    "b":
        echo 
    "Чтобы оплатить через Банк....";
        break;
        
        case 
    "p":
        echo 
    "Чтобы оплатить через почту....";
        break;
        
        case 
    "w":
        echo 
    "Чтобы оплатить через Western Union....";
        break;

        default:
        echo 
    "Вы не выбрали способ оплаты";
        break;
    }
    ?>
    </body>
    </html>

     
  2. XopoIII

    XopoIII Прохожие

    1. ну для читабельности можешь убрать хтмл тэги в отдельный скрипт и выводить функцией.
    2. сделай все через один скрипт, а не в два, будет проще, посылаешь запрос method=POST и потом или в начале скрипта или в конце,как нравится, смотри подан ли запрос или нет

    PHP:
    if(isset($_POST['sposob'])){
       
    тут то что у тебя в свич.пхп
    }
    да и я считаю что можно убрать break; т.к. если тебе нужно будет еще какую нибуть информацию выводить, а break; остановит скрипт. Попробуй сделать примерно так

    PHP:
    $proverka=1;

    if (
    $sposob == b) {
    $proverka=0;
    echo 
    "Вы выбрали оплату через Банк";
    }
    ...
    ...
    if(
    $proverka){
    продолжаем скрипт
    }
     
  3. RomAndry

    RomAndry Постоялец

    Регистр.:
    21 ноя 2007
    Сообщения:
    102
    Симпатии:
    24
    break убирать не нужно, т.к. ... вообщем что бы уяснить -убери и потестируй =) иначе не поймешь и не научишься.
     
  4. bueno

    bueno Читатель

    Заблокирован
    Регистр.:
    7 май 2007
    Сообщения:
    236
    Симпатии:
    69
    можно вообще без break обойтись - через массивы сделать..
    например:
    PHP:
    <?php

    $a 
    = array();

    $a['b']['title']   =  "Вы выбрали оплату через Банк";
    $a['b']['mess']    =  "Чтобы оплатить через Банк....";
    $a['p']['title']   =  "Вы выбрали оплату товара при получении на Почте";
    $a['p']['mess']    =  "Чтобы оплатить через почту....";
    $a['w']['title']   =  "Вы выбрали оплату через Western Union";
    $a['w']['mess']    =  "Чтобы оплатить через Western Union....";
    $a['def']['title'] =  "Вы не выбрали способ оплаты. Выберите способ оплаты";
    $a['def']['mess']  =  "Вы не выбрали способ оплаты";


    if(!
    array_key_exists($sposob)) $sposob 'def';

    ?>
    <title><?=$a[$sposob]['title']?></title>
    </head>
    <body>
    <?=$a[$sposob]['mess']?>
    </body>
    </html>
     
  5. RomAndry

    RomAndry Постоялец

    Регистр.:
    21 ноя 2007
    Сообщения:
    102
    Симпатии:
    24
    а если нужны еще действия? =)
    зачем так все сложно?
     
  6. bueno

    bueno Читатель

    Заблокирован
    Регистр.:
    7 май 2007
    Сообщения:
    236
    Симпатии:
    69
    какая задача - ткаое решение.. :) кода заметно меньше - уже плюс.. к тому же для добавления новых оплат достаточно просто увеличить массив.. да и проверка только одна..
    вообще никто не мешает добавить в массив имя нужной функции и вызвать ее.. типа $a[$sposob]['fn'](); (с проверкой на наличие, естественно)..
     
  7. RomAndry

    RomAndry Постоялец

    Регистр.:
    21 ноя 2007
    Сообщения:
    102
    Симпатии:
    24
    Жесть!
    Еще можно в базу положить и выбирать действие, еще можно XML парсить. =)
     
  8. OSTAP

    OSTAP Создатель

    Регистр.:
    23 ноя 2006
    Сообщения:
    49
    Симпатии:
    8
    Если нет каких то особых условий, то в этом случае нет смысла обработчик выносит в отдельный файл, это только усложняет код.
     
Статус темы:
Закрыта.