Запутался в функциях

SantiagoMSK

Новичок
Я запутался, помогите... мне нужно чтобы, если строчка "if ( !isset ()) {" - срабатывала, то сценарий приостанавливался до 1ого "?>", а следующее "<?php ... ?>" - выполнялся. Функция "exit" не подходит - останавливает весь сценарий Функции "continue", "break" тоже не подходят, т.к. в первом случае прекращается только текущий цикл, а во втором переходит на начало следующего цикла, а нужно остановить его весь до 1ого "?>". Надеюсь я объяснил понятно... Подскажите что нужно применить.

PHP:
<?php
if ( ... ) 
{
             if ( !isset ( ... )) {
             exit ("You must fill one field");   
             } else ( ... ) {
              ....
             }
} else ( ... ) {
....
}
?>
<?php ... ?>
 

SantiagoMSK

Новичок
И еще ломаю голову, как можно присвоить css class - "You must fill one field", чтобы приукрасить его, если знаете подскажите, а то мои эксперементы не привели к должному результату, за ранее благодарен
 

С.

Продвинутый новичок
Нет никакого разделения на предыдущее и следующее "<?php ... ?>". Все это один сплошной поток. В твоем случае даже цикла не нужно, чтобы "перепрыгнуть". Достаточно if. Напиши кода в одном блоке"<?php ... ?>", убрав все лишнее, и подумай над логикой. Потом, если надо разделишь снова.

Забудь на минуту про PHP и запиши "You must fill one field" с CSS, как тебе надо. Потом вспомни про PHP и совмести.
 

SantiagoMSK

Новичок
во втором <?php ?> у меня вставлен footer, проблема в том, что при использовании exit - он его не показывает, если срабатывает данная строчка.
 

Andreika

"PHP for nubies" reader
PHP:
<?php
if ( ... ) 
{
             if ( !isset ( ... )) {
             //exit ("You must fill one field");   
             } else ( ... ) {
              ....
             }
} else ( ... ) {
....
}
?>
<?php ... ?>
вот так
 

AmdY

Пью пиво
Команда форума
вот прекрасный случай, когда стоит воспользоваться GOTO, судя по всему код не станет от этого хуже.
SantiagoMSK
приведи реальный код, мы поможем, а так трудно рефакторить сферический код в вакууме. может можно вынести ифы в функцию и там делать смело return
 

SantiagoMSK

Новичок
Еще раз поясню проблему. Когда срабатывает строчка " if (!isset($_GET['page']))" - то приостанавливается весь сценарий и вместе с ним исчезает footer, который вынесен у меня отдельно и заключен в <?php ...?>. Можно его не выносить отдельно, а оставить html'ем, но думаю это будет не совсем правильно.
PHP:
//проверяем введены ли параметры поиска
if (empty($_POST['sh_speak']) and
    empty($_POST['sh_learning']) and
    empty($_POST['sh_country']) and
    empty($_POST['sh_sex']) and
    empty($_POST['select_age'])) {
    
//!isset($_POST['native_speaker']) and
//!isset($_POST['photo']) and
//!isset($_POST['on_line'])

    //параметры поиска не введены, проверяем $_GET['page']   
    if (!isset($_GET['page'])) {
        exit("<div class='text'>You must fill one field</div>");
    } else {
        //передаем данные из $_SESSION['query'] в $where
        $where = $_SESSION['query'];
    }
} else {
//параметры поиска введены, формируем переменную $where
          
$where = ' 1 ';
if (!empty($_POST['sh_speak']))
    $where = $where . " AND speak = '{$_POST['sh_speak']}'";
if (!empty($_POST['sh_learning']))
    $where = $where . " AND learning = '{$_POST['sh_learning']}'";
if (!empty($_POST['sh_country']))
    $where = $where . " AND country = '{$_POST['sh_country']}'";
if (!empty($_POST['sh_sex']))
    $where = $where . " AND sex = '{$_POST['sh_sex']}'";

    
if (!empty($_POST['select_age'])) {
      
    $age = $_POST['select_age'];
    $timestamp = time();
    $date_time_array = getdate($timestamp);
    $month = $date_time_array['mon'];
    $day = $date_time_array['mday'];
    $year = $date_time_array['year'];
       
    if ($age == 'under_18') {        
    $timestamp = mktime(0, 0, 0, $month, $day, $year - 18);
    $date_lim = strftime('%Y-%m-%d', $timestamp);
    $data_where = "birth > '$date_lim'";    
    }
  
    if ($age == '18-25') {    
    $timestamp = mktime(0, 0, 0, $month, $day, $year - 18);
    $timestamp2 = mktime(0, 0, 0, $month, $day, $year - 25);
    $date_lim = strftime('%Y-%m-%d', $timestamp);
    $date_lim2 = strftime('%Y-%m-%d', $timestamp2);
    $data_where = "birth > '$date_lim2' AND birth < '$date_lim'";    
    }
    
    if ($age == '26-35') {    
    $timestamp = mktime(0, 0, 0, $month, $day, $year - 26);
    $timestamp2 = mktime(0, 0, 0, $month, $day, $year - 35);
    $date_lim = strftime('%Y-%m-%d', $timestamp);
    $date_lim2 = strftime('%Y-%m-%d', $timestamp2);
    $data_where = "birth > '$date_lim2' AND birth < '$date_lim'";
    }
    
    if ($age == '35+') {   
    $timestamp = mktime(0, 0, 0, $month, $day, $year - 35);
    $date_lim = strftime('%Y-%m-%d', $timestamp);
    $data_where = "birth < '$date_lim'"; 
    }
    
    $where = $where . " AND $data_where";  
}
[PHP]
 

AmdY

Пью пиво
Команда форума
в том куске что ты привёл exit не нужен, после него всё равно ничего не выполняется. но ты привёл не весь код, как минимум закрывающейся } не хватает.
 

SantiagoMSK

Новичок
вот в конце пропустил,
PHP:
//сохраняем $where в $_SESSION['query']
$_SESSION['query'] = $where;

}
а если, exit не нужен, то чем его заменить, чтобы останавливался сценарий и выводилось сообщение ? или его нужно весь переписывать?
 

С.

Продвинутый новичок
Ты уж определись, тебе остановить сценарий, или дать ему дойти до конца и выдать твой подвал. А какие-то куски можно миновать с помошью if.
 
Сверху