glock18
2.07.2009 - 08:26
Krevedko
большие и очень
1. вывод неформатированных данных printf
2. смешение html и php.
3. код плохо читается. не видно четко начало и конец блоков.
в общем, все перечислять даже смысла нет. лично я вижу в каждой из этих строк хотя бы маленький недочет. собственно вижу и нелогичность, которая вряд ли оправдана.
конкретно -
PHP |
if ($alp[alp]==Z) break;} |
Ну и я один раз напишу для наглядности.
PHP |
<?php while ($alp = mysql_fetch_array ($result)) {printf ("<a href='alp.php&al=%s'>%s</a>", $alp[id], $alp[alp]); echo " "; if ($alp[alp]==Z) break;} echo "<br>"; while ($alp = mysql_fetch_array ($result)) {printf ("<a href='alp.php&al=%s'>%s</a>", $alp[id], $alp[alp]); echo " "; } |
1. $alp - что обозначает? Если эта переменная находится в зоне видимости (визуальной), то можно сообразить, что массив значений, и то приходится отвлекаться, что бы разобраться в этом. Читаем мануал: Возвращает массив с обработанным рядом результата
Логично назвать переменную $row или $rows на худой конец. Тогда ясно, что это такое.
2. Применение mysql_fetch_array() тут неоправдано, потому что используется только ассоциативный массив. Бережливее и прозрачнее, а значит уместнее тут mysql_fetch_assoc()
3. Открывающая фигурная скобка спрятана так, что не сразу её разглядишь.
4. Использование printf вообще моветон. Очень путанная и непрозрачная конструкция.
5. При обращении к элементам ассоциативного массива обязательно нужно ставить апострофы, так как иначе это интерпретируется не как строка, а как константа.
6. Стиль не выдержан. Операторы сравнения не отделены пробелом, хотя выше это сделано.
7. Что такое Z? Константа? Если да, то она должна быть осмысленной, отображать суть. Если строка - то в апострофах.
8. оператор break стоит в одной строке с if, что путает. Потому что не сразу ясно, что он относится к циклу.
9. Закрывающая фигурная скобка спрятана не лучше открывающей.
10. Теперь ляп. Очень серьёзный. Текст из базы выводится в браузер без предварительной обработки. Это чревато кривостью отображения в лучшем случае, XSS в худшем.
Второй цикл аналогично. Так что почти каждый знак этого кода - кривой. Про логику отдельная тема, я не буду затрагивать. Ровно как и разделение её с представлением.
Теперь найди 10 отличий:
PHP |
while ($row = mysql_fetch_assoc ($result)) { $row = array_map('htmlspecialchars', $row);
echo '<a href="alp.php&al='.$row['id'].'">'.$row['alp'].'</a> ';
if ($row['alp'] == 'Z') break; } echo "<br />"; |
_____________
Если вам недостаточно собственных заблуждений, можно расширить их мнениями экспертов.Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках.