Снова вопрос про формы. Еще не все понятно...

Kostyab

Новичок
Это не выход в моем случае, так как у меня форма должна рисоваться при выполнении некого условия. Если да, рисуем форму, если нет - рисуем что-то другое. Если половину HTLM написать вне тэгов <?php...?>, то этот самый HTLM будет рисоваться в любом случае. Вот я голову и ломаю.
С одной стороны, внутри echo ("...") тэги <?php...?> не работают, а вот разрывать форму внутри функции я не пробовал, так как мне в случае с функцией вообще данные не передать. Скорее всего, я помучаюсь еще немного и вопрос сформулирую конкретнее, что именно не выходит.
Удачи всем!
 

RomikChef

Guest
Unregistered тебе отвечу учть позже.
Хотя где-то пару месяцев назад у меня был очень плодотворный тред на эту тему...
Хотя, возможно, ответ Косте является и ответом тебе.

Костя, с тобой очень просто.
вот этот код выводит форму по условию
PHP:
<?
$uslovie=1;

if ($uslovie==1) {
?>
<form>
</form>
<?
} else {
выводим что-то другое
}
?>
 

RomikChef

Guest
ВНУТРИ echo разрывать теги РНР БЕССМЫСЛЕННО.

и ТО и ДРУГОЕ делает ОДНО И ТО ЖЕ - выводит информацию на экран.

Надо использовать
ИЛИ echo
ИЛИ ?> <?
 

Kostyab

Новичок
За критику спасибо, исправлюсь. Просто поговорить не с кем было. Все, теперь разобрался со всеми вопросами, все работает. НО! Не ясен ответ на вопрос, что задавала Unregistered. В моем скрипте это единственная недоработка осталась!
А именно:
"Кто-нибудь может взяться этот же селект прописать, с учетом того, что форма не в HTML, a в PHP находится?"
Удачи!
 

RomikChef

Guest
Unregistered, если я правильно понял, то тебе надо выводить форму, проверять, и выводить, если есть ошибки?
 

Liska

Guest
Unregistred, может, так, если я правильно поняла, что ты имеешь ввиду:

PHP:
echo "<select NAME='YYYY'>
...";
echo "<option value='2002'"; if($YYYY=='2002') echo 'selected'; echo ">2002";
echo "<option value='2001'"; if($YYYY=='2001') echo 'selected'; echo ">2001";
echo "...

</select> ";
А вообще, лучше все values в массив занести и в цикле проход по массиву сделать:

PHP:
$sel_str = ($YYYY==$value_arr[$i]) ? "selected": "";
echo "<option value='".$value_arr[$i]."' ".$sel_str.">".$value_arr[$i];
 

RomikChef

Guest
вот пример типа гостевой.
упрощенный
показывает логику вывода формы два раза. первый раз - при первом вызове, второй - если при заполнении была ошибка
PHP:
<?
$err='';
if (isset($submit)) {
  if (!$name) $err="Вы забыли написать свое имя<br>"; 
  if (!$notes) $err.="Вы забыли написать сам отзыв!<br>"; 
  if (!eregi("^([_\.0-9a-z-]+@)([0-9a-z][0-9a-z-]+\.)+([a-z]{2,4})$", $email) && $email) 
    $err.="Ошибка в емейле. Если не хотите, то просто не пишите!<br>";
  if (!$err) {
    $s=$name."|".$email."|".$notes."|".time()."\n";
    $fp=fopen("gbook.txt","a");
    fwrite($fp,$s);
    fclose($fp);
    /* дальше 
    ЛИБО
    выводим что хотим
    ЛИБО  */
    Header("Location: gbook.php");
    // эта команда перенаправит броузер на другой файл .который выведет, что надо.
    // и завершаем работу скрипта
    exit;
  } 
}
include 'top.php';
if ($err) echo '<font color=red><b>'.$err.'</b></font>';
?>
<form action="" method="post"><br>
Name: <input type="text" name="name" value="<? echo htmlspecialchars($HTTP_POST_VARS['name']); ?>"><br>
Email: <input type="text" name="email" value="<? echo htmlspecialchars($HTTP_POST_VARS['email']); ?>"><br>
Notes: <textarea rows="3" cols="30" name="notes"><? echo htmlspecialchars($HTTP_POST_VARS['notes']); ?></textarea><br>
<input type="submit" name="submit">
</form>
<? include 'bottom.php'; ?>
 

Unregistered

Guest
Ромик, Вы меня не поняли. Я не внутри echo тэги php разрываю, я вообще от него отказалась в данном случае!
А задача у меня была точно такая же как у Kostyab. И по Вашему коду я вижу, что Вы саму форму тоже не в PHP излагаете, а только переменные для value из него берете.
Kostyab, я не знаю, насколько профессионально я решила задачу, но Если Вы напишите функцию, например, print_form(параметры, каждый параметр равен каждому полю формы), внутри которой Вы используете последнию схему с предыдущей таблицы, и будете вызывать или не вызывать эту функцию в зависимости от ваших условий по схеме Ромика, у Вас все заработает очень четко.
А Liske спасибо, Это именно то, что я хотела знать. Теперь я вижу, что я просто не все точки с запятыми расставила. Жуть!
 

RomikChef

Guest
Unregistered
тогда я перестал понимать.
вопрос, делать эхо, или разрывать РНР теги не имеет никакой связи с if statement...

Кажется, начинаю понимать
Unregistered, все, что я могу посоветовать - это
1. нарисовать сначала желаемый HTML.
2. смотреть результат скрипта не то, что выводит браузер, а ИСХОДНЫЙ КОД.
3. сравнивать.

Пункт второй вообще надо использовать постоянно.
 

Unregistered

Guest
Да, Kostyab, у тебя наверное проблема лишь в неправильном вызове функции была, когда ты писал, что она тебе не подходит.
Первый раз ее вызываешь так (например, у меня 3 параметра= 3 поля в форме):
print_form("","","");
а когда проверяешь:
print_form($field_name1, $field_name2, $field_name3);
Вот и вся Ваша бывшая несостыковка.
А можно и всегда по второй схеме, но тогда для первого раза надо задавать значение переменных.
 

RomikChef

Guest
Unregistered, ПОЖАЛУЙСТА.
Большая просьба.
В следующий раз задавать свой отдельный вопрос в отдельной теме.
и писать не "как прописываются эти if-statements"
а привести код и задать вопрос.
 

Unregistered

Guest
Не поняла... разве это другая тема? Прошу прощения, я не знала... Честно сказать, я бы и не смогла ее отделить от этой, поскольку имела в виду конкретный if, который в селекте находится, с остальными (которые не в форме) у меня как-то проблем никогда не возникало.
 

RomikChef

Guest
У Кости здесь тысяча вопросов.
Какой из них "этот"?

Ты его поняла - очень хорошо. Ты умная, а я дурак. Вот, чтобы мне, дураку, было легче понять - и пиши, пожалуйста, свои вопросы в отдельном треде.

Про то, что ты имела в виду иф в селекте, а не в целиком файле ты написала только сейчас.
Коастя - тоже молчун тот еще.
Что-то сообразил, что-то понял, тут же убежал в свою норку писать дальше.
Потом появляется, пишет на основании своих каких-то соображений, но никто не знает, что ему понятно, а что нет!

Очень трудно разобраться.
 

Unregistered

Guest
Ну вот... Приплыли... Сказать тебе честно, сколько я потратила времени только на то, чтобы правильно все эти PHP-тэги в форме вывести?.. - неделю!!! И после этого, ты еще хочешь, чтобы я не схватила о чем речь. Так что, ты уж "дураками" и "умными" не торопись кидаться. Если бы не твои подсказки, я бы может быть, еще до сих пор с ними маялась... :)
 
Сверху