Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Почему не выполняются условия при работе с массивом?
 
 автор: Чайчайвыручай   (16.06.2011 в 14:52)   письмо автору
 
 

Здравствуйте! Помогите, пожалуйста, решить проблему:

Код:

<form action="otk.php" method="post">
<input name="a85” type="submit" value="Пропустить"><br>
<input name="a2" type="submit" value="2 этапа"><br>
<input name="a4" type="submit" value="4 этапа "><br>
<input name="a84" type="submit" value="новый день"><br>
<?php
echo "<table class='tableu'>
<tr width='750 px'>
<td >Номер этапа</td>
<td >Отк</td>
</tr>";

$namber_day=1;
$buttons = array ();
if ( isset ($_COOKIE['buts'])) {
$buts = $_COOKIE['buts'];
$buttons = explode ("#", $buts);
}
foreach ($buttons as $id)
{
if ($id)
{
$name = substr ($id, 1);
if ($name == "85")
{
echo "<tr>
<td ></td>
<td > Без отк</td>
</tr>";

elseif ($name == "84")
{
echo "<tr>
<td ></td>
<td > Номер дня $namber_day</td>
</tr>"; $namber_day++;

} else {

$query = "SELECT title FROM otk WHERE id = $name LIMIT 1";
$result = mysql_query($query, $db);
if (!$result) { exit ("Ошибка выполнения запроса - ".mysql_error());}
do {
if ($namber_upr) {
printf (
"<td></td>
<td class='tdu'>%s</td>
</tr>", mysql_result($result, 0);}
} while ($result<=$buts);
}

if ( current ($buttons)!="85" and current ($buttons)!="84" and prev ($buttons)!="84" and prev ($buttons)=="85")
{echo "<tr>
<td ></td>
<td > Номер дня $namber_day</td>
</tr>"; $namber_day++;
} }
echo "</table>";
?>



Проблема в последнем if. Не получается выводить "Номер дня $namber_day" при условиях "if ( current ($buttons)!="85" and current ($buttons)!="84" and prev ($buttons)!="84" and prev ($buttons)=="85")".
Почему не работает эта часть кода?

  Ответить  
 
 автор: Чайчайвыручай   (16.06.2011 в 14:58)   письмо автору
 
   для: Чайчайвыручай   (16.06.2011 в 14:52)
 

Пытался сделать так:
$x = count($buttons);
$ley = array_search ('a85', $buttons);

if ($x=$ley)
{echo "<tr>
<td ></td>
<td > Номер дня $namber_day</td>
</tr>"; $namber_day++;}
}
$x="";
Тоже не выходит.
Если по русски то нужно, что бы новый день ($namber_day) начинался не только после нажатия кнопки с value="новый день", но и после нажатия кнопки value="2 этапа" или value="4 этапа”, если до этого была нажата кнопка value="Пропустить".

  Ответить  
 
 автор: cheops   (16.06.2011 в 15:00)   письмо автору
 
   для: Чайчайвыручай   (16.06.2011 в 14:52)
 

Функция current() что делает?

  Ответить  
 
 автор: Чайчайвыручай   (16.06.2011 в 15:02)   письмо автору
 
   для: cheops   (16.06.2011 в 15:00)
 

Определяет текущий элемент массива

  Ответить  
 
 автор: cheops   (16.06.2011 в 15:08)   письмо автору
 
   для: Чайчайвыручай   (16.06.2011 в 15:02)
 

Т.е. вы привязываетесь к последнему элементу из цикла? Лучше что-то более простое сделать. При каких условиях должен сработать этот последний if-блок (что для этого должен сделать пользователь)?

  Ответить  
 
 автор: Чайчайвыручай   (16.06.2011 в 15:11)   письмо автору
 
   для: cheops   (16.06.2011 в 15:08)
 

Т.е. вы привязываетесь к последнему элементу из цикла?
Да.

При каких условиях должен сработать этот последний if-блок (что для этого должен сделать пользователь)?
Если по русски то нужно, что бы новый день ($namber_day) начинался не только после нажатия кнопки с value="новый день", но и после нажатия кнопки value="2 этапа" или value="4 этапа”, если до этого была нажата кнопка value="Пропустить".

  Ответить  
 
 автор: Чайчайвыручай   (16.06.2011 в 15:17)   письмо автору
 
   для: Чайчайвыручай   (16.06.2011 в 15:11)
 

Т.е. Если предпоследняя кнопка была value="Пропустить", при нажатии на кнопки value="2 этапа" или value="4 этапа”, выводится не просто "2 этапа", а друг за другом "новый день" "2 этапа".

  Ответить  
 
 автор: cheops   (16.06.2011 в 15:28)   письмо автору
 
   для: Чайчайвыручай   (16.06.2011 в 15:11)
 

Тогда проще отталкиваться от блока
if(!empty($_POST['a2']) || !empty($_POST['a4']) || !empty($_POST['a84']))
{
  // Нажата одна из трех кнопок
  ...
}

>если до этого была нажата кнопка value="Пропустить".
А вот это лучше запоминать в сессии, более того, лучше отдельно реализовать функцию id_missed(), которая будет возвращать true, если кнопка нажата и false в противном случае. С такой функцией вам будет гораздо проще реализовать скрипт. Иначе он у вас лавинообразно будет усложняться и его разработка и сопровождение потребует массы времени.

  Ответить  
 
 автор: Чайчайвыручай   (16.06.2011 в 16:43)   письмо автору
 
   для: cheops   (16.06.2011 в 15:28)
 

Спасибо за ответ. Массу времени я уже потратил на поиск решения, но вроде так его и не нашел

  Ответить  
 
 автор: cheops   (16.06.2011 в 16:46)   письмо автору
 
   для: Чайчайвыручай   (16.06.2011 в 16:43)
 

У вас слишком усложнена задача - разбивайте её на более мелкие задачи и оформляйте их в виде функций - будет проще. Чем сложнее и объемнее кусок кода, тем больше на него времени уходит.

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования