|
|
|
| Подскажите пожалуйста как можно сократить код? Например есть код, он должен повторяться 22 раза в пхп файле, единственное что будет в нём меняться это $worker. Может возможно это сделать через функцию?
<?
$worker = 'weeding_rings_worker';
$results = mysql_query("SELECT * FROM orders WHERE day='$day' AND month='$month' AND year='$year'");
while($rows = mysql_fetch_array($results))
{
$res = strpos($row['list_city'], $city);
if ($rows['day']."-".$rows['month']."-".$rows['year'] == $day."-".$month."-".$year && $rows[$worker] == $row['user_id'] && $res === false){echo color('#FF0000');}
elseif ($rows['day']."-".$rows['month']."-".$rows['year'] == $day."-".$month."-".$year && $rows[$worker] == $row['user_id'] && $res !== false){echo color('#FF5500');}
}
$results = mysql_query("SELECT * FROM orders");
while($rows = mysql_fetch_array($results))
{
$res = strpos($row['list_city'], $city);
if ($rows['day']."-".$rows['month']."-".$rows['year'] == $day."-".$month."-".$year && $rows[$worker] !== $row['user_id'] && $res === false){echo color('#0070C0');}
elseif ($rows['day']."-".$rows['month']."-".$rows['year'] == $day."-".$month."-".$year && $rows[$worker] !== $row['user_id'] && $res !== false ){echo color('#00B050');}
elseif ($rows['day']."-".$rows['month']."-".$rows['year'] !== $day."-".$month."-".$year && $rows[$worker] !== $row['user_id'] && $res === false){echo color('#0070C0');}
elseif ($rows['day']."-".$rows['month']."-".$rows['year'] !== $day."-".$month."-".$year && $rows[$worker] !== $row['user_id'] && $res !== false ){echo color('#00B050');}
}
?>
|
| |
|
|
|
|
|
|
|
для: aleksej_sumarok
(04.12.2008 в 15:46)
| |
<?php
$worker = 'weeding_rings_worker';
$result = mysql_query("SELECT * FROM orders WHERE day='$day' AND month='$month' AND year='$year'");
while($row = mysql_fetch_array($result))
{
if ($row['day']!=$day || $row['month']!=$month || $row['year']!=$year || $row[$worker] != $row['user_id']) continue;
$res = strpos($row['list_city'], $city);
print color($res ? "#FF0000" : "#FF5500");
}
$result = mysql_query("SELECT * FROM orders");
while($row = mysql_fetch_array($result))
{
if ($row[$worker] != $row['user_id']) continue;
$res = strpos($row['list_city'], $city);
$noteq = ($row['day']!=$day || $row['month']!=$month || $row['year']!=$year);
if (!$noteq && !$res) print color("#0070C0");
else if (!$noteq && $res) print color("#00B050");
else if ($noteq && !$res) print color("#0070C0");
else if ($noteq && $res) print color("#00B050");
}
?>
|
| |
|
|
|
|
|
|
|
для: bronenos
(04.12.2008 в 16:23)
| | Большое спасибо, но я хотел узнать как сделать чтобы эта часть кода не повторялась 22 раза в коде, например сделать на подобии как функцию. | |
|
|
|
|
|
|
|
для: aleksej_sumarok
(04.12.2008 в 16:40)
| | У вас слишком разные условия и их количество | |
|
|
|
|
|
|
|
для: aleksej_sumarok
(04.12.2008 в 15:46)
| | единственное что будет в нём меняться это $worker
ну и в чём проблема?
function yourFunc($worker) {
}
|
| |
|
|
|
|
|
|
|
для: sl1p
(04.12.2008 в 17:25)
| | ну вот так я пробовал и не получается, если ставишь в функцию хтмл код то всё ок, а если соединение с базой как в данном примере, то не работает... | |
|
|
|
|
|
|
|
для: aleksej_sumarok
(04.12.2008 в 17:45)
| | Ну тут так ничего не скажешь глядя на код ибо не понятно что куда и зачем.
Опишите хотя бы подробней что именно не получается когда вы используете функцию, и желательно код функции в студию. | |
|
|
|
|
|
|
|
для: sl1p
(04.12.2008 в 18:07)
| |
<?
function colors($worker) {
$results = mysql_query("SELECT * FROM orders WHERE day='$day' AND month='$month' AND year='$year'");
while($rows = mysql_fetch_array($results))
{
$res = strpos($row['list_city'], $city);
if ($rows['day']."-".$rows['month']."-".$rows['year'] == $day."-".$month."-".$year && $rows[$worker] == $row['user_id'] && $res === false){echo color('#FF0000');}
elseif ($rows['day']."-".$rows['month']."-".$rows['year'] == $day."-".$month."-".$year && $rows[$worker] == $row['user_id'] && $res !== false){echo color('#FF5500');}
}
$results = mysql_query("SELECT * FROM orders");
while($rows = mysql_fetch_array($results))
{
$res = strpos($row['list_city'], $city);
if ($rows['day']."-".$rows['month']."-".$rows['year'] == $day."-".$month."-".$year && $rows[$worker] !== $row['user_id'] && $res === false){echo color('#0070C0');}
elseif ($rows['day']."-".$rows['month']."-".$rows['year'] == $day."-".$month."-".$year && $rows[$worker] !== $row['user_id'] && $res !== false ){echo color('#00B050');}
elseif ($rows['day']."-".$rows['month']."-".$rows['year'] !== $day."-".$month."-".$year && $rows[$worker] !== $row['user_id'] && $res === false){echo color('#0070C0');}
elseif ($rows['day']."-".$rows['month']."-".$rows['year'] !== $day."-".$month."-".$year && $rows[$worker] !== $row['user_id'] && $res !== false ){echo color('#00B050');}
}
}
?>
|
<?
echo colors('weeding_rings_worker');
?>
|
У меня каждое значение выводит свой цвет, а если вызываешь функцию таким способом, то вообще ни какого цвета не выводит.... | |
|
|
|
|
|
|
|
для: aleksej_sumarok
(05.12.2008 в 14:14)
| | HELP PLIIIZZ!!! | |
|
|
|
|
|
|
|
для: aleksej_sumarok
(05.12.2008 в 14:14)
| | 'weeding_rings_worker' - а это что за аргумент вы передаете в функцию? | |
|
|
|
|
|
|
|
для: aleksej_sumarok
(05.12.2008 в 14:14)
| | все дело в том, что переменные у функций имеют локальную область видимости.
поэтому переменная $year и другие, которые участвуют в запросе для кода внутри ф-ии не опредены. соответсовенно и результат - это ноль полей (если нет пустых записей).
соответсовенно, далее происходит ошибка.
как устранить эту проблему?
есть два варианта:
1 передать все параметры вызываемой ф-ии. если много их, то не удобно. поэтому есть второй вариант
2 использовать массив $GLOBALS. сделать следующие действия: $day = $GLOBALS["day"]; и т.д для всех других внешних переменных, используемых в ф-ии. При этом значение внешней переменной не изменится. Создается переменная ф-ии с таким же именем как и внешняя (в примере выше), которая уничтожается при завершении работы ф-ии. | |
|
|
|
|
|
|
|
для: aleksej_sumarok
(05.12.2008 в 14:14)
| | на будущее: если возникает подобная проблема, то выводи значения переменных, чтобы посмотреть, что там в них хранится, а лучше - эnj'mgjkmpjdfnmcz отладчиком, удобнее.
проверяй if (mysql_query(...)) echo "work!"; else echo "not work!";
смотри сколько выбрано строк с помощью ф-ии mysql_num_rows($qw).
if (mysql_num_rows($qw) > 1) echo "work!";
else echo "not work!";
вот такие секреты нахождения некоторых ошибок) | |
|
|
|
|
|
|
|
для: SDL
(06.12.2008 в 02:51)
| | Спасибо Вам огромное очень помогли...! :) | |
|
|
|