дали задание нарисовать веб-морду на пхп для корпоративных нужд. Одновременно получилось так, что на этом задании я одновременно учусь и php. Сейчас написанное мной представляет собой мешанину из sql запросов и php. Хочу ввести в код функции. как сейчас у меня - делается запрос в бд(если надо, то несколько запросов), потом на основании этих данных строится таблица. Скрипт писал так: надо построить вначале первую таблицу на страничке - пишу sql запрос и строю ее, надо ниже вторую - строю также если под второй табличкой надо какую-нибудь кнопку, то соответсвенно в коде также после построения второй таблички пишу эту кнопку. То есть как страница идет сверху вниз, то так и примерно и код сверху вниз идет. Сейчас получается все ,к примеру, sql запросы и построение таблицы в одну функцию запихать, другая таблица - другая функция?
смотря что и как у вас там устроено, лучше на конкретном примере, где то возможно можно будет сделать перегрузку функции, где то не явные имена таблиц
PHP: <? function table() {//2 funct $select1 = "SELECT Pointall.Name, Equipment.Name, Street, Home, IP, LEVEL, Equipment.id, Equipment.Up_link_port, Pointall.Description, Pointall.id, Equipment.Up_link_equip, Corp FROM Pointall, Equipment WHERE Pointall.ID = Equipment.Point_id and Equipment.Level = 'L3';"; $res1 = mysql_query($select1, $link); echo "<br><br>"; echo "<CENTER><h1>Network DataBase </CENTER></h1>\n"; require ('point_search.php'); echo "<br>"; echo "<P><TABLE ALIGN=CENTER border=2>\n"; echo "<br><br>"; echo "<TABLE width=100% ALIGN=CENTER border=2>\n"; echo "<tr>"; echo "<th>Узел</th>"; echo "<th>Адрес</th>"; echo "<th>Модель</th>"; echo "<th>ip</th>"; echo "<th>Uplink</th>"; echo "<th>Порт</th>"; echo "<th>Level</th>"; echo "</tr>"; while ($row1=mysql_fetch_array($res1)) { echo "<tr>"; echo "<td><a href='switch.php?id=$row1[6]'>$row1[0]</a></td>"; echo "<td><a href='switch.php?point=$row1[9]'>$row1[2],"; echo "$row1[3]/$row1[11]</a></td>"; echo "<td><a href='switch.php?id=$row1[6]'>$row1[1]</a></td>"; echo "<td>$row1[4]</td>"; #получим данные по оборудованию и его адресу, кот. подключено к аплинку к исходного (запрос $row1_utk) $select2 = "select Equipment.Name, Pointall.Name, Pointall.Street, Pointall.Home, Equipment.Id from Equipment, Po where Equipment.id = '$row1[10]' and Equipment.Point_id = Pointall.Id"; $res2 = mysql_query($select2, $link); $row2 = mysql_fetch_row($res2); $z = mysql_num_rows($res2); if($z !== 0) { echo "<td><a href='switch.php?id=$row2[4]'>$row2[0]:$row2[1] $row2[2],$row2[3] </td>"; } else { echo "<td></td>"; } echo "<td>$row1[7]</td>"; echo "<td>$row1[5]</a></td>"; echo "</tr>"; } echo "</table>"; }//2 funct table(); если убрать функцию, то код работает. После введения функции строится только шапка, что не так сделал, какие-то параметры передавать надо?
вы же хотели избавиться от мешанины, а в итоге получили ту же мешанину, только спрятанную в функцию что вот тут require ('point_search.php'); и почему оно подключается внутри функции ? ммм вообще можно легко разделить все это, предлагаю сделать так: описать класс работы с бд, методы которого будут возвращать ресурс (кстати вам удобно работать с числовыми индексами?) потом можно отделить php от html для этого можно использовать шаблонизоры
то есть надо использовать ООП? принцип работы представляю совсем смутно... То есть сделать типа такого: создать некоторый класс, с помощью которого берутся все нужные данные из таблиц. Потом эти данные используются в другом классе, такой принцип? по поводу числ индексов - некоторые столбцы у таблиц имеют одинаковые названия require ('point_search.php') - это форма для поиска узла, отображается рядом с искомой табличкой
andrey1986 да но что бы правильно сделать, это целая история, чтобы изучить и правильно писать\применять вы все равно используете row1 и row2
надо почитать книжки и потренироваться на маленьких примерах. сразу переделывать ваш скрипт не стоит.
это само собой что сперва книги, скачал ООП PHP Питера Ловэйна. Просто мне сейчас надо понять - надо копаться с функциями или сразу изучать ООП? одно из преимуществ ООП как понимаю именно легкость в изменении кода в отличие простого введения функций. Изначально первоначальная часть скрипта была сделана другим человеком с помощью функций, про функции смутно предствалял что такое. Пока разбирался - мозг сломал себе)).
andrey1986 функции тоже надо знать, методы классов - те же самые функции вот тут литература http://www.php.ru/forum/viewtopic.php?t=4537 в любой большой книжке, мне кажется, должно быть описание функций
я имел ввиду не конкретно с ф-ми, а совсем вместе для меня, как для новичка, понятно это когда "как страница идет сверху вниз, так и примерно и код сверху вниз идет."
По большому счету так и есть. =) Но в этом "сверху вниз" вы же пользуетесь функциями. Некоторые из них могут быть написаны вами лично =) С ООП не многим сложнее.
функции уменьшают количество кода, описываются для много кратного применения PHP: <?php function Some($a,$b){ return $a*$b/3; } $a = Some(3,4); echo Some($a,6); ?>
У вас из базы выводится информация, согласно А вы вызываете функцию, но не передаете эти параметры, поэтому скорее всего ничего и не выводит