За последние 24 часа нас посетили 18892 программиста и 1708 роботов. Сейчас ищут 920 программистов ...

ввод в код функций

Тема в разделе "PHP для новичков", создана пользователем andrey1986, 29 июн 2010.

  1. andrey1986

    andrey1986 Активный пользователь

    С нами с:
    5 окт 2009
    Сообщения:
    17
    Симпатии:
    0
    дали задание нарисовать веб-морду на пхп для корпоративных нужд. Одновременно получилось так, что на этом задании я одновременно учусь и php. Сейчас написанное мной представляет собой мешанину из sql запросов и php.
    Хочу ввести в код функции.
    как сейчас у меня - делается запрос в бд(если надо, то несколько запросов), потом на основании этих данных строится таблица.
    Скрипт писал так: надо построить вначале первую таблицу на страничке - пишу sql запрос и строю ее, надо ниже вторую - строю также
    если под второй табличкой надо какую-нибудь кнопку, то соответсвенно в коде также после построения второй таблички пишу эту кнопку. То есть как страница идет сверху вниз, то так и примерно и код сверху вниз идет.

    Сейчас получается все ,к примеру, sql запросы и построение таблицы в одну функцию запихать, другая таблица - другая функция?
     
  2. Padaboo

    Padaboo Старожил
    Команда форума Модератор

    С нами с:
    26 окт 2009
    Сообщения:
    5.242
    Симпатии:
    1
    смотря что и как у вас там устроено, лучше на конкретном примере, где то возможно можно будет сделать перегрузку функции, где то не явные имена таблиц
     
  3. andrey1986

    andrey1986 Активный пользователь

    С нами с:
    5 окт 2009
    Сообщения:
    17
    Симпатии:
    0
    PHP:
    1. <?
    2. function table()            {//2 funct
    3.  
    4. $select1 = "SELECT Pointall.Name, Equipment.Name, Street, Home, IP, LEVEL, Equipment.id,
    5. Equipment.Up_link_port, Pointall.Description, Pointall.id, Equipment.Up_link_equip, Corp FROM Pointall, Equipment
    6. WHERE Pointall.ID = Equipment.Point_id and Equipment.Level = 'L3';";
    7. $res1 = mysql_query($select1, $link);
    8.  
    9.  
    10.         echo "<br><br>";
    11.  
    12.         echo "<CENTER><h1>Network DataBase </CENTER></h1>\n";
    13.         require ('point_search.php');
    14.         echo "<br>";
    15.         echo "<P><TABLE ALIGN=CENTER border=2>\n";
    16.  
    17.  
    18.         echo "<br><br>";
    19.         echo "<TABLE width=100% ALIGN=CENTER border=2>\n";
    20.         echo "<tr>";
    21.         echo "<th>Узел</th>";
    22.         echo "<th>Адрес</th>";
    23.         echo "<th>Модель</th>";
    24.         echo "<th>ip</th>";
    25.         echo "<th>Uplink</th>";
    26.         echo "<th>Порт</th>";
    27.         echo "<th>Level</th>";
    28.         echo "</tr>";
    29.  
    30.  
    31. while ($row1=mysql_fetch_array($res1)) {
    32.         echo "<tr>";
    33.         echo "<td><a href='switch.php?id=$row1[6]'>$row1[0]</a></td>";
    34.         echo "<td><a href='switch.php?point=$row1[9]'>$row1[2],";
    35.         echo "$row1[3]/$row1[11]</a></td>";
    36.  
    37.         echo "<td><a href='switch.php?id=$row1[6]'>$row1[1]</a></td>";
    38.         echo "<td>$row1[4]</td>";
    39.  
    40.         #получим данные по оборудованию и его адресу, кот. подключено к аплинку к исходного (запрос $row1_utk)
    41.        $select2 = "select Equipment.Name, Pointall.Name, Pointall.Street, Pointall.Home, Equipment.Id from Equipment, Po
    42. where Equipment.id = '$row1[10]' and Equipment.Point_id = Pointall.Id";
    43.         $res2 = mysql_query($select2, $link);
    44.         $row2 = mysql_fetch_row($res2);
    45.         $z = mysql_num_rows($res2);
    46.                 if($z !== 0)    {
    47.         echo "<td><a href='switch.php?id=$row2[4]'>$row2[0]:$row2[1] $row2[2],$row2[3] </td>";
    48.                                 }
    49.         else { echo "<td></td>";  }
    50.         echo "<td>$row1[7]</td>";
    51.         echo "<td>$row1[5]</a></td>";
    52.         echo "</tr>";
    53.  
    54.         }
    55.  
    56.         echo "</table>";
    57.  
    58.                                 }//2 funct
    59. table();
    60.  
    если убрать функцию, то код работает. После введения функции строится только шапка, что не так сделал, какие-то параметры передавать надо?
     
  4. Padaboo

    Padaboo Старожил
    Команда форума Модератор

    С нами с:
    26 окт 2009
    Сообщения:
    5.242
    Симпатии:
    1
    вы же хотели избавиться от мешанины, а в итоге получили ту же мешанину, только спрятанную в функцию
    что вот тут require ('point_search.php'); и почему оно подключается внутри функции ?
    ммм вообще можно легко разделить все это, предлагаю сделать так:
    описать класс работы с бд, методы которого будут возвращать ресурс (кстати вам удобно работать с числовыми индексами?)
    потом можно отделить php от html для этого можно использовать шаблонизоры
     
  5. andrey1986

    andrey1986 Активный пользователь

    С нами с:
    5 окт 2009
    Сообщения:
    17
    Симпатии:
    0
    то есть надо использовать ООП? принцип работы представляю совсем смутно... То есть сделать типа такого:
    создать некоторый класс, с помощью которого берутся все нужные данные из таблиц. Потом эти данные используются в другом классе, такой принцип?
    по поводу числ индексов - некоторые столбцы у таблиц имеют одинаковые названия

    require ('point_search.php') - это форма для поиска узла, отображается рядом с искомой табличкой
     
  6. Padaboo

    Padaboo Старожил
    Команда форума Модератор

    С нами с:
    26 окт 2009
    Сообщения:
    5.242
    Симпатии:
    1
    andrey1986
    да но что бы правильно сделать, это целая история, чтобы изучить и правильно писать\применять
    вы все равно используете row1 и row2
     
  7. iliavlad

    iliavlad Активный пользователь

    С нами с:
    24 янв 2009
    Сообщения:
    1.689
    Симпатии:
    4
    надо почитать книжки и потренироваться на маленьких примерах. сразу переделывать ваш скрипт не стоит.
     
  8. andrey1986

    andrey1986 Активный пользователь

    С нами с:
    5 окт 2009
    Сообщения:
    17
    Симпатии:
    0
    это само собой что сперва книги, скачал ООП PHP Питера Ловэйна. Просто мне сейчас надо понять - надо копаться с функциями или сразу изучать ООП? одно из преимуществ ООП как понимаю именно легкость в изменении кода в отличие простого введения функций. Изначально первоначальная часть скрипта была сделана другим человеком с помощью функций, про функции смутно предствалял что такое. Пока разбирался - мозг сломал себе)).
     
  9. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    andrey1986
    про функции смутно предствалял что такое
    Да.. Функции, они - загадошные...
     
  10. Padaboo

    Padaboo Старожил
    Команда форума Модератор

    С нами с:
    26 окт 2009
    Сообщения:
    5.242
    Симпатии:
    1
    andrey1986
    функции тоже надо знать, методы классов - те же самые функции
    вот тут литература http://www.php.ru/forum/viewtopic.php?t=4537
    в любой большой книжке, мне кажется, должно быть описание функций
     
  11. andrey1986

    andrey1986 Активный пользователь

    С нами с:
    5 окт 2009
    Сообщения:
    17
    Симпатии:
    0
    я имел ввиду не конкретно с ф-ми, а совсем вместе
    для меня, как для новичка, понятно это когда "как страница идет сверху вниз, так и примерно и код сверху вниз идет."
     
  12. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    По большому счету так и есть. =)
    Но в этом "сверху вниз" вы же пользуетесь функциями. Некоторые из них могут быть написаны вами лично =)

    С ООП не многим сложнее.
     
  13. Padaboo

    Padaboo Старожил
    Команда форума Модератор

    С нами с:
    26 окт 2009
    Сообщения:
    5.242
    Симпатии:
    1
    функции уменьшают количество кода, описываются для много кратного применения
    PHP:
    1. <?php
    2. function Some($a,$b){
    3.   return $a*$b/3;
    4. }
    5.  
    6. $a = Some(3,4);
    7. echo Some($a,6);
    8. ?>
     
  14. jenya777777

    jenya777777 Активный пользователь

    С нами с:
    16 мар 2010
    Сообщения:
    562
    Симпатии:
    0
    У вас из базы выводится информация, согласно
    А вы вызываете функцию, но не передаете эти параметры, поэтому скорее всего ничего и не выводит