За последние 24 часа нас посетили 8744 программиста и 668 роботов. Сейчас ищут 58 программистов ...

Я пришёл к PDO ))))

Тема в разделе "PHP для новичков", создана пользователем AnteFil, 31 дек 2014.

  1. Ganzal

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

    С нами с:
    15 мар 2007
    Сообщения:
    9.838
    Симпатии:
    948
    верно. но вернее на мой взгляд заявить что универсальный класс вносит ограничения на работу с конкретной субд. то есть невозможно будет использовать некоторые низкоуровневые оптимизации так как код должен быть кросс-субд.
    как следствие - если программа пишется под мускул и в обозримом будущем а) нет планов миграции на другие субд и б) нет планов публикации сообществу которое может использовать другие субд - нафиг не нужен пдо. особо переживать по поводу не-мускула тоже имхо не нужно - это вроде как самый массовый движок если суммировать оригинал, машку, перкону и прочие форки. следовательно можно писать и оптимизировать под мускул и навязать мускул конечному "пользователю". кстати навязывание тоже достаточно распространенная штука. например такой мало распространенный софт как teamspeak3 вполне себе в открытую требует дроп-ин рейплейсмент мускула на марью. кому очень надо - будет и дальше юзать на мускуле так как они бинарно совместимы. только техподдержку им не окажут бедапичаль.
     
  2. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.439
    Симпатии:
    1.744
    Если не использовать плюшки конкретной бд, но нафик нужна эта универсальность проклятая...
     
  3. AnteFil

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

    С нами с:
    14 янв 2014
    Сообщения:
    405
    Симпатии:
    0
    Столкнулся с такой проблемой на странице должны выводиться категории и сами посты находятся в 2-х табличках
    catergorya, post.
    Делаю я запрос в базу для вывода постов по нужной категории
    Код (PHP):
    1. $post= $conn->prepare('SELECT * FROM `post` WHERE id_catergorya = :id');
    2. $post->execute(array('id' => $_GET['catergorya'])); 
    И потом на страничке в нужном месте вывожу
    Код (PHP):
    1. <?php while($result_post = $post->fetch(PDO::FETCH_BOTH)){ echo $result_post['name'];} ?>
    Потом я хочу запросить для менюшки категории
    Код (PHP):
    1. $categoriya= $conn->prepare('SELECT * FROM `categoriya` ');
    2. $categoriya->execute(); 
    В нужном месте сайта точнее меню пишу
    Код (PHP):
    1. <?php while($res = $categoriya->fetch(PDO::FETCH_BOTH)){ echo '[url="#.php?categories='.$res['id'].'"]'.$res['name'].'[/url]</br>'; } ?>
    Проблема в том что при выполнении этих 2 запросов ни чего не отображаеться если один из них удалить то тогода выполняеться второй

    Добавлено спустя 55 минут 48 секунд:
    А блин раскоментировать забыл строку. Кстати сказать а можно как то выводить работу php по другому а то каша получается.
     
  4. denis01

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

    С нами с:
    9 дек 2014
    Сообщения:
    12.131
    Симпатии:
    1.680
    Адрес:
    Молдова, г.Кишинёв
    Да, можно
     
  5. AnteFil

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

    С нами с:
    14 янв 2014
    Сообщения:
    405
    Симпатии:
    0
    Можно какой то пример? Я думал с шаблонизатором будет по проще но один фиг данные переплетаються
     
  6. denis01

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

    С нами с:
    9 дек 2014
    Сообщения:
    12.131
    Симпатии:
    1.680
    Адрес:
    Молдова, г.Кишинёв
    А что конкретно ты хочешь получить?
     
  7. Ganzal

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

    С нами с:
    15 мар 2007
    Сообщения:
    9.838
    Симпатии:
    948
    можно
     
  8. mkramer

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

    С нами с:
    20 июн 2012
    Сообщения:
    7.236
    Симпатии:
    1.402
    Данные, естественно, переплетаются - тебе же из вывести надо. При вынесении шаблона в отдельный код главный результат - не переплетаются команды подготовки этих данных, такие как запросы к БД, расчёты там всякие и т.п. Мне кажется, с разрешением в php 5.4 всегда использовать короткий синтаксис echo в большинстве внешних шаблонизаторов пропал смысл. Можно писать шаблоны прямо на php Я вообще их не люблю. Работал со smarty, с XSLT (ну если CMS этого требует, никуда не денешься) - не вижу никаких реальных преимуществ.
     
  9. AnteFil

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

    С нами с:
    14 янв 2014
    Сообщения:
    405
    Симпатии:
    0
    В иделае я хотел бы отделить php от html но как я не пытался получается всё равно в куче вот например нужно мне вывести и категории и постики я создал страницу post.php в верху страницы исполняется php потом начинается html в тоге я разкидываю по странице куски на подобие этого
    Код (PHP):
    1. <?php while($res = $categoriya->fetch(PDO::FETCH_BOTH)){ echo '[url="#.php?categories='.$res['id'].'"]'.$res['name'].'[/url]</br>'; } ?>
    Проходит несколдько дней начинает забываться что и как работает приходиться вчитываться в код что бы понять где что находиться. Как вариант я начал писать для каждой строки коментарии что бы не забывать потом начал называть переменные коментариями. НАпример
    Код (PHP):
    1. $sozdayam_massiv_dlya_opravki // Создаём массив для отправки
    2. //Или
    3. $gotovim_zapis_v_bazu // Готовим запись в базу  
    Когда мне тут показали работу с функциями через них стало чуть по легче понимать происходящее но переложить всё на функции пока не получаеться
     
  10. denis01

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

    С нами с:
    9 дек 2014
    Сообщения:
    12.131
    Симпатии:
    1.680
    Адрес:
    Молдова, г.Кишинёв
    Прочитай документацию по какому либо framework, например symfony2
    Их и делают чтобы было легче организовать разработку.
     
  11. Ganzal

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

    С нами с:
    15 мар 2007
    Сообщения:
    9.838
    Симпатии:
    948
    у тебя подход к шаблонизатору ненормальный. в модели ты должен готовить данные а в виде только выводить. не должно у тебя быть в шаблоне итерации ответа от субд. зато может быть итерация массива подготовленных данных. то есть у тебя вид это просто обертка вокруг некоторых данных. меняя вид ты должен что вполне логично менять итоговый результат но при этом не переписывать весь код. я рад что ты меня как обычно не поймешь но я получил очередную возможность разместить в твоей теме сообщение.
     
  12. mkramer

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

    С нами с:
    20 июн 2012
    Сообщения:
    7.236
    Симпатии:
    1.402
    denis01, какое symphony2, здесь ещё знаний не хватает. Ganzal, ну зачем ему MVC? AnteFil, поначалу можно не разносить подготовку и вывод по отдельным файлам, а просто разделить их в одном файле. ОДна часть посвящена только подготовке данных - всяким там запросам, расчётам и т.п., а другая - только выводу
    Код (PHP):
    1. <?php
    2. // Нет никакого смысла использовать prepared-запросы, если в запрос не подставляется никаких параметров. 
    3. //Можно воспользоваться удобным способом обработки результатов PDO
    4. foreach ($conn->query('SELECT * FROM `categoriya`') as $res)
    5.     $categories[] = $res;
    6.  
    7. // Ниже в файле
    8. <?php foreach ($categories as $cat) { ?>
    9.    <a href='<?= $cat['id']; ?>'><?= $cat["name"]; ?></a><br>
    10. <?php } ?>
     
  13. VLK

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

    С нами с:
    15 дек 2013
    Сообщения:
    3.010
    Симпатии:
    58
    CodeIgniter ему нужен, symfony2 не потянет, а нас будет ждать очередной раунд пыток.
     
  14. AnteFil

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

    С нами с:
    14 янв 2014
    Сообщения:
    405
    Симпатии:
    0
    Нет я не хочу использовать фремворки так как хочеться сначало основательно понять что и как изучть а потом уже можно
     
  15. VLK

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

    С нами с:
    15 дек 2013
    Сообщения:
    3.010
    Симпатии:
    58
    А тебя ни кто и не принуждает изучать, а просто посмотреть как там реализована система MVC, на которой реализуется 90%+++ всех сайтов и т.д.
     
  16. Ganzal

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

    С нами с:
    15 мар 2007
    Сообщения:
    9.838
    Симпатии:
    948
    вордпресс чтоль? откуда такая огромная цифра по кодынайтеру?

    Добавлено спустя 2 минуты 30 секунд:
    [​IMG]ну то есть пока не очень популярный фреймворк чтоб давать ему цифру 90%
     
  17. VLK

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

    С нами с:
    15 дек 2013
    Сообщения:
    3.010
    Симпатии:
    58
    Речь идет не о CodeIgniter, а о MVC, цифра, на глаз и для убедительности :)
     
  18. Ganzal

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

    С нами с:
    15 мар 2007
    Сообщения:
    9.838
    Симпатии:
    948
    http://www.google.com/trends/explore#q=codeigniter%2C%20yii ... ipe&cmpt=q

    Добавлено спустя 5 минут 14 секунд:
    извини но я с тобой не соглашусь. тут нужно определиться с тем что мы сравниваем. допустим на этом сайте форум phpbb с реализованный mvc структурой. и допустим на этом форуме 50 000 тысяч страниц. но форум один. и возьмем допустим десять сайтов-визиток на "чистом" пхп. им все задротства mvc не нужно но нужна динамика. поэтому они не статика но без mvc. допустим там по три страницы. тридцать страниц против пятидесяти тысяч конечно капля в море. но десять сайтов против одного - не такой убедительный но разгром уже в обратную сторону. так что нужно уточнять о чем мы говорим и по какому критерию записывается стата в тот или иной график.
     
  19. VLK

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

    С нами с:
    15 дек 2013
    Сообщения:
    3.010
    Симпатии:
    58
    Выходит я опять сел в лужу?
     
  20. Ganzal

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

    С нами с:
    15 мар 2007
    Сообщения:
    9.838
    Симпатии:
    948
    нет, почему же))) ты просто зря конкретную цифру написал так как единой её быть не может - обоснование выше. да и использование или не использование mvc это по сути выбор программиста. линейный алгоритм может оказаться быстрее для выполнения каких-то простых задач. и должен использоваться если не предполагается что задача должна решаться разными путями. с другой стороны имхо mvc дает больше гибкости проекту. естественно за гибкость мы платим некоторым оверхедом за сопровождение избыточного кода. ну и как бы мы сейчас с тобой по сути про антюшку говорим. как ты думаешь он сильно НЕ готов к mvc? я думаю твоя цифра в 90% это даже еще маловата будет))))))))
     
  21. AnteFil

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

    С нами с:
    14 янв 2014
    Сообщения:
    405
    Симпатии:
    0
    Такой вопрос я в функции пишу
    Код (PHP):
    1. global $conn;
    2.     $vopros = $conn->prepare('SELECT * FROM `vopros` WHERE id = :id');
    3.     $vopros->execute(array('id' => $str));
    4.     $vopros5 = $vopros->fetch();
    5.     if($vopros5->rowCount() == '0'){
    6.     $error = 'ТАкого топика нет'; //такого топика нет
    7.     return $error;
    8.     }
    А результате Fatal error: Call to a member function rowCount() on a non-object in
     
  22. Ganzal

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

    С нами с:
    15 мар 2007
    Сообщения:
    9.838
    Симпатии:
    948
    ну ты почитай что какая функция возвращает и подумай почему ты решил их так использовать)))))))
     
  23. denis01

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

    С нами с:
    9 дек 2014
    Сообщения:
    12.131
    Симпатии:
    1.680
    Адрес:
    Молдова, г.Кишинёв
    mkramer, VLK, AnteFil выделю важную часть моего совета: Прочитай документацию по какому либо framework
     
  24. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.439
    Симпатии:
    1.744
    достаточно разнести получение и отрисовку в разные функции, как у тебя сразу появится понимание от чего какша и что PHP уже сам по себе очень даже шаблонизатор.

    Чувак, PHP задуман для того, чтобы формировать HTML. Отделять - это плодить лишние сущности. Тебе надо просто логику и отображение разделить друг от друга.

    Добавлено спустя 47 секунд:
    Разбивай на функции, будет удобно. Разбивай по смыслу.

    Добавлено спустя 37 секунд:
    Английский учи уже

    Добавлено спустя 1 минуту 23 секунды:
    Пхп сам по себе сильный фреймворк с уймой готовых функций. Но если ты хочешь работать по этой профе, то надо учить основные фреймворки. Правда можно учить уже после того, как устроишься на работу - со старшими товарищами удобнее.

    Добавлено спустя 1 минуту 27 секунд:
    Я вообще не вижу смысла в мвц. Это нужно, когда у тебя приложение как сервер. В случае с PHP это притянуто за уши из других языков.

    Добавлено спустя 2 минуты 20 секунд:
    Зачти про Синглтон.

    Добавлено спустя 1 минуту 22 секунды:
    Если это не объект, то что? ;) Это я так типа уже ответил на твой вопрос, но тебе надо воспользоваться функцией var_dump() и зачесть доку по функции, откуда ты берёшь эту переменную. Видимо она не всегда возвращает объекты, чувак.
     
  25. AnteFil

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

    С нами с:
    14 янв 2014
    Сообщения:
    405
    Симпатии:
    0
    Можно ли вернуть из функции используя return 2 параметра. Например 1 параметр return 0 и второй return $data ?. Так как в результате выполнения функции я жду от неё ответа нормльно ли всё прошло и если да результат