|
|
|
| Разбирала пример и наткнулась на непонятное мне выражение. Сокорее всего это регулярное выражение вот только не пойму что оно означает. Может вы поможете разобраться.
gname='-@@$##%#$%#$'; | |
|
|
|
|
|
|
|
для: Le-mers
(01.11.2006 в 00:07)
| | Это не регулярное выражение. Маловероятно, что этот набор символов вообще что-то осмысленное означапет. Хотя и возможно. Надо смотреть контекст, в котором эта строка используется. | |
|
|
|
|
|
|
|
для: 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]);
} | |
|
|
|
|
|
|
|
для: Le-mers
(01.11.2006 в 00:20)
| | а как называется третья строка в таблице? Может это означает какое нить звание или что-то типа того... но это не рег.выражение | |
|
|
|
|
|
|
|
для: Le-mers
(01.11.2006 в 00:20)
| | Почти наверняка там ниже идет что-то вроде $gname = $row[3];
А сама эта строка используется в качестве значения, которое (как считает автор скрипта) никогда не встретится в столбце 3 результата запроса. | |
|
|
|
|
|
|
|
для: Trianon
(01.11.2006 в 00:24)
| | нет, gname больше нигде не используется, а в третьей строке запроса содержится типа описание проекта | |
|
|
|
|
|
|
|
для: Le-mers
(01.11.2006 в 00:32)
| | а как выглядят оставшиеся строки тела цикла (до соответствующей закрывающей фигурной скобки)? | |
|
|
|
|
|
|
|
для: 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]));
} } | |
|
|
|
|
|
|
|
для: Le-mers
(01.11.2006 в 00:42)
| | Понятно, что этот код создает элементы иерархии таблицы рабочих групп, проектов, их авторов и руководителей. И в целом даже понятно, как он это делает.
Сравнение if($gname!=$row[3]) , вероятно, должно было предотвращать создание повторов элементов одной и той же группы, но автор не дописал логику. А может намеренно убрал, чтобы вызвать повторы. В любом случае, если групп с таким именем(-@@$##%#$%#$) в таблице нет, то сама по себе эта строка не означает ничего. | |
|
|
|