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

Форум PHP

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

 

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

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

тема: Не понятное выражение
 
 автор: Le-mers   (01.11.2006 в 00:07)   письмо автору
 
 

Разбирала пример и наткнулась на непонятное мне выражение. Сокорее всего это регулярное выражение вот только не пойму что оно означает. Может вы поможете разобраться.
gname='-@@$##%#$%#$';

   
 
 автор: Trianon   (01.11.2006 в 00:14)   письмо автору
 
   для: Le-mers   (01.11.2006 в 00:07)
 

Это не регулярное выражение. Маловероятно, что этот набор символов вообще что-то осмысленное означапет. Хотя и возможно. Надо смотреть контекст, в котором эта строка используется.

   
 
 автор: Le-mers   (01.11.2006 в 00:20)   письмо автору
 
   для: Trianon   (01.11.2006 в 00:14)
 

примерно это выглядит вот так:
$gname = '-@@$##%#$%#$';
$gnode = null;
while($row = mysql_fetch_array($result)) {
if($gname!=$row[3]) {
$node->appendChild($gnode = new DOMElement('group'));
$gnode->setAttribute('name', $row[3]);
$gnode->setAttribute('id', $row[4]);
}

   
 
 автор: DEM   (01.11.2006 в 00:24)   письмо автору
 
   для: Le-mers   (01.11.2006 в 00:20)
 

а как называется третья строка в таблице? Может это означает какое нить звание или что-то типа того... но это не рег.выражение

   
 
 автор: Trianon   (01.11.2006 в 00:24)   письмо автору
 
   для: Le-mers   (01.11.2006 в 00:20)
 

Почти наверняка там ниже идет что-то вроде $gname = $row[3];
А сама эта строка используется в качестве значения, которое (как считает автор скрипта) никогда не встретится в столбце 3 результата запроса.

   
 
 автор: Le-mers   (01.11.2006 в 00:32)   письмо автору
 
   для: Trianon   (01.11.2006 в 00:24)
 

нет, gname больше нигде не используется, а в третьей строке запроса содержится типа описание проекта

   
 
 автор: Trianon   (01.11.2006 в 00:36)   письмо автору
 
   для: Le-mers   (01.11.2006 в 00:32)
 

а как выглядят оставшиеся строки тела цикла (до соответствующей закрывающей фигурной скобки)?

   
 
 автор: Le-mers   (01.11.2006 в 00:42)   письмо автору
 
   для: Trianon   (01.11.2006 в 00:36)
 

это полностью файл который подключается на главной странице, может так понятнее будет:

global $last_param, $userid;
if($userid) {
$query = sprintf ("SELECT p.id, p.name, p.description, coalesce(g.name, ''), p.OwnerGroup, TaskDescription, ua.family, coalesce(ul.family, ''), ProjectAccepted, ua.id, ul.id, substr(ua.name, 1, 1), substr(ua.secname, 1, 1) FROM `Projects` p LEFT JOIN `Groups` g ON p.OwnerGroup = g.id LEFT JOIN `Users` ua ON p.Author = ua.id LEFT JOIN `Users` ul ON p.Leader = ul.id
WHERE isArchive = 0 AND p.id='%s' ORDER BY p.name",$last_param);
$result = mysql_query($query);
$gname = '-@@$##%#$%#$';
$gnode = null;
while($row = mysql_fetch_array($result)) {
if($gname!=$row[3]) {
$node->appendChild($gnode = new DOMElement('group'));
$gnode->setAttribute('name', $row[3]);
$gnode->setAttribute('id', $row[4]);
}
$gnode->appendChild($x = new DOMElement('project'));
$x->appendChild(new DOMElement('name', $row[1]));
$x->setAttribute('id', intval($row[0]));
$x->appendChild(new DOMElement ('description', $row[2]));
$x->setAttribute('task-description', intval($row[5]));
$x->appendChild($author = new DOMElement('author', sprintf('%s %s.%s.', $row[6], $row[11], $row[12])));
$author->setAttribute('id', $row[9]);
$x->appendChild($leader = new DOMElement('leader', $row[7]));
$leader->setAttribute('id', $row[10]);
$x->setAttribute('accepted', intval($row[8]));
} }

   
 
 автор: Trianon   (01.11.2006 в 01:10)   письмо автору
 
   для: Le-mers   (01.11.2006 в 00:42)
 

Понятно, что этот код создает элементы иерархии таблицы рабочих групп, проектов, их авторов и руководителей. И в целом даже понятно, как он это делает.
Сравнение if($gname!=$row[3]) , вероятно, должно было предотвращать создание повторов элементов одной и той же группы, но автор не дописал логику. А может намеренно убрал, чтобы вызвать повторы. В любом случае, если групп с таким именем(-@@$##%#$%#$) в таблице нет, то сама по себе эта строка не означает ничего.

   
Rambler's Top100
вверх

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