#php #refactoring #mysql #functional-programming
#php #рефакторинг #mysql #функциональное программирование
Вопрос:
Хорошо, итак, у меня есть этот фрагмент оскорбительного кода:
<!-- Begin the Product Group Submenu -->
<ul>
<?php do { ?>
<li><a href="prodgrouppg.php?groupid=<?php echo $row_menugroup['GroupID']; ?>amp;amp;groupname=<?php echo $row_menugroup['GroupName']; ?>"><?php echo $row_menugroup['GroupName']; ?></a>
<!-- Retrieve the individual products related to the Group -->
<?php
$groupprod_menuprod = "-1";
if (isset($row_menugroup['GroupID'])) {
$groupprod_menuprod = (get_magic_quotes_gpc()) ? $row_menugroup['GroupID'] : addslashes($row_menugroup['GroupID']);
}
mysql_select_db($database_conn_atex, $conn_atex);
$query_menuprod = sprintf("SELECT products.ProductID, products.ProductName, products.ProductGroup FROM products WHERE products.ProductGroup=%s ORDER BY products.ProductName", GetSQLValueString($groupprod_menuprod, "int"));
$menuprod = mysql_query($query_menuprod, $conn_atex) or die(mysql_error());
$row_menuprod = mysql_fetch_assoc($menuprod);
$totalRows_menuprod = mysql_num_rows($menuprod);
?>
<!-- Begin the product submenu (final menu) -->
<ul>
<? $row_menuprod = mysql_fetch_assoc($menuprod))
{
echo
<li>
<a href="productpg.php?prodid=<?php echo $row_menuprod['ProductID']; ?>">
<? echo $row_menuprod['ProductName']; ?>
</a>
</li>
</ul> <!-- end of Product Submenu -->
</li>
<?php } while ($row_menugroup = mysql_fetch_assoc($menugroup)); ?>
</ul> <!-- end of Group Submenu -->
</li>
<?php } while ($row_menusubcat = mysql_fetch_assoc($menusubcat)); ?>
</ul> <!--end of Subcategory Submenu-->
</li> <!--end of Category Submenu-->
<?php } while ($row_menupaging = mysql_fetch_assoc($menupaging)); ?>
</ul> <!--end of Menu -->
Который, по сути, просто перестал работать из ниоткуда. Если я удалю этот код, запрос для этого файла пройдет нормально, поэтому я предполагаю, что проблема в чем-то здесь. Я пытался переформатировать это уже около 5 раз, поэтому я думаю, что должно быть что-то, чего не хватает моему глазу.
Есть предложения? Приношу извинения за состояние этого кода .. пытаюсь исправлять его лучше по частям за раз..
Комментарии:
1. вероятно, помогает не называть другого человека «программистом».
2. 1 спасибо ; ; вы должны увидеть остальное …. вздох..
Ответ №1:
Не уверен, была ли это ошибка копирования / вставки или реальная проблема, но похоже, что PHP открыт, затем переключение на обычный HTML без закрытия блока PHP. (Возможно, я не использую правильные термины; я не разработчик PHP — я просто однажды останавливался в Holiday Inn Express : p )
<!-- Begin the Product Group Submenu -->
<ul>
<?php do { ?>
<li><a href="prodgrouppg.php?groupid=<?php echo $row_menugroup['GroupID']; ?>amp;amp;groupname=<?php echo $row_menugroup['GroupName']; ?>"><?php echo $row_menugroup['GroupName']; ?></a>
<!-- Retrieve the individual products related to the Group -->
<?php
$groupprod_menuprod = "-1";
if (isset($row_menugroup['GroupID'])) {
$groupprod_menuprod = (get_magic_quotes_gpc()) ? $row_menugroup['GroupID'] : addslashes($row_menugroup['GroupID']);
}
mysql_select_db($database_conn_atex, $conn_atex);
$query_menuprod = sprintf("SELECT products.ProductID, products.ProductName, products.ProductGroup FROM products WHERE products.ProductGroup=%s ORDER BY products.ProductName", GetSQLValueString($groupprod_menuprod, "int"));
$menuprod = mysql_query($query_menuprod, $conn_atex) or die(mysql_error());
$row_menuprod = mysql_fetch_assoc($menuprod);
$totalRows_menuprod = mysql_num_rows($menuprod);
?>
<!-- Begin the product submenu (final menu) -->
<ul>
<? $row_menuprod = mysql_fetch_assoc($menuprod))
{
echo ?> <!-- ### close goes here ### -->
<li>
<a href="productpg.php?prodid=<?php echo $row_menuprod['ProductID']; ?>">
<? echo $row_menuprod['ProductName']; ?>
</a>
</li>
</ul> <!-- end of Product Submenu -->
</li>
<?php } while ($row_menugroup = mysql_fetch_assoc($menugroup)); ?>
</ul> <!-- end of Group Submenu -->
</li>
<?php } while ($row_menusubcat = mysql_fetch_assoc($menusubcat)); ?>
</ul> <!--end of Subcategory Submenu-->
</li> <!--end of Category Submenu-->
<?php } while ($row_menupaging = mysql_fetch_assoc($menupaging)); ?>
</ul> <!--end of Menu -->
Работая с ASP / VBScript, я обнаружил, что перенос страницы, которая постоянно переключается с кода / html на прямой код, может помочь обнаружить небольшие странности, такие как забывание закрыть блок или поиск способа ужесточить цикл.
Комментарии:
1. 1 вы нашли строку! лол, если бы я мог 2 для holiday inn, я бы так и сделал 🙂 спасибо большое,
($menuprod))
тоже была ошибка. если это работает, я, вероятно, просто перепишу этот файл сейчас .. e_e;;2. @Garet — Я видел много похожих проблем с унаследованными проектами ASP / VBScript. Приятно знать, что я могу использовать некоторые из этих старых знаний с пользой. 🙂
3. Я не знаю, утешает ли меня мысль, что я не одинок, или просто мне больно за тебя. =P Честно говоря, это должно было быть немного легче обнаружить, но я плавал в бог знает чем последние 5 дней, лол