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

Форум PHP

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

 

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

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

тема: Как сократить код???
 
 автор: aleksej_sumarok   (04.12.2008 в 15:46)   письмо автору
 
 

Подскажите пожалуйста как можно сократить код? Например есть код, он должен повторяться 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');}
}
?>

  Ответить  
 
 автор: bronenos   (04.12.2008 в 16:23)   письмо автору
 
   для: 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");
}
?>

  Ответить  
 
 автор: aleksej_sumarok   (04.12.2008 в 16:40)   письмо автору
 
   для: bronenos   (04.12.2008 в 16:23)
 

Большое спасибо, но я хотел узнать как сделать чтобы эта часть кода не повторялась 22 раза в коде, например сделать на подобии как функцию.

  Ответить  
 
 автор: bronenos   (04.12.2008 в 17:22)   письмо автору
 
   для: aleksej_sumarok   (04.12.2008 в 16:40)
 

У вас слишком разные условия и их количество

  Ответить  
 
 автор: sl1p   (04.12.2008 в 17:25)   письмо автору
 
   для: aleksej_sumarok   (04.12.2008 в 15:46)
 

единственное что будет в нём меняться это $worker
ну и в чём проблема?

function yourFunc($worker) {

}

  Ответить  
 
 автор: aleksej_sumarok   (04.12.2008 в 17:45)   письмо автору
 
   для: sl1p   (04.12.2008 в 17:25)
 

ну вот так я пробовал и не получается, если ставишь в функцию хтмл код то всё ок, а если соединение с базой как в данном примере, то не работает...

  Ответить  
 
 автор: sl1p   (04.12.2008 в 18:07)   письмо автору
 
   для: aleksej_sumarok   (04.12.2008 в 17:45)
 

Ну тут так ничего не скажешь глядя на код ибо не понятно что куда и зачем.
Опишите хотя бы подробней что именно не получается когда вы используете функцию, и желательно код функции в студию.

  Ответить  
 
 автор: aleksej_sumarok   (05.12.2008 в 14:14)   письмо автору
 
   для: 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   (06.12.2008 в 01:41)   письмо автору
 
   для: aleksej_sumarok   (05.12.2008 в 14:14)
 

HELP PLIIIZZ!!!

  Ответить  
 
 автор: sim5   (06.12.2008 в 02:01)   письмо автору
 
   для: aleksej_sumarok   (05.12.2008 в 14:14)
 

'weeding_rings_worker' - а это что за аргумент вы передаете в функцию?

  Ответить  
 
 автор: SDL   (06.12.2008 в 02:47)   письмо автору
 
   для: aleksej_sumarok   (05.12.2008 в 14:14)
 

все дело в том, что переменные у функций имеют локальную область видимости.
поэтому переменная $year и другие, которые участвуют в запросе для кода внутри ф-ии не опредены. соответсовенно и результат - это ноль полей (если нет пустых записей).
соответсовенно, далее происходит ошибка.

как устранить эту проблему?
есть два варианта:
1 передать все параметры вызываемой ф-ии. если много их, то не удобно. поэтому есть второй вариант
2 использовать массив $GLOBALS. сделать следующие действия: $day = $GLOBALS["day"]; и т.д для всех других внешних переменных, используемых в ф-ии. При этом значение внешней переменной не изменится. Создается переменная ф-ии с таким же именем как и внешняя (в примере выше), которая уничтожается при завершении работы ф-ии.

  Ответить  
 
 автор: SDL   (06.12.2008 в 02:51)   письмо автору
 
   для: 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!";

вот такие секреты нахождения некоторых ошибок)

  Ответить  
 
 автор: aleksej_sumarok   (06.12.2008 в 15:03)   письмо автору
 
   для: SDL   (06.12.2008 в 02:51)
 

Спасибо Вам огромное очень помогли...! :)

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

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