Jump to content
  • 0

Вопросы по PHP.


Kompilator
 Share

Question

Здравствуйте.

Для создания сайта потребовался PHP, в этой теме буду задавать вопросы знатокам.

Пока справляюсь сам, но вот возник вопрос - при формировании таблицы для отображения данных из БД как лучше выводить HTML ? Т.е. каждый шаг цикла (строка БД) выводить посредством "echo" или накапливать всю таблицу в переменной, а потом сразу-  "echo $text;" ?

Как правильнее, или быстрее исполняется или еще что нибудь ?

Link to comment
Share on other sites

Recommended Posts

  • 0

читайте: http://php.net/manual/ru/function.setcookie.php

 

 

 

path

Путь к директории на сервере, из которой будут доступны cookie. Если задать '/', cookie будут доступны во всем домене domain. Если задать '/foo/', cookie будут доступны только из директории/foo/ и всех ее поддиректорий (например, /foo/bar/) домена domain. По умолчанию значением является текущая директория, в которой cookie устанавливается.

  • Like 1
Link to comment
Share on other sites

  • 0

Если во вьюхе то,я бы даже наоборот:

<?php foreach($data as $row): ?> <tr><td><?=$row['f1'];?></td><td><?=$row['f1'];?></td><td><?=$row['f1'];?></td></tr><?php endforeach; ?>

А ежели где ещё и это куда-то пойдёт, то тогда конечно в переменную или через буферизацию вывода:

ob_start();echo "Выши эхи";$buffer = ob_get_contents();ob_end_clean();Echo $buffer;
Link to comment
Share on other sites

  • 0
Здравствуйте. Для создания сайта потребовался PHP, в этой теме буду задавать вопросы знатокам. Пока справляюсь сам, но вот возник вопрос - при формировании таблицы для отображения данных из БД как лучше выводить HTML ? Т.е. каждый шаг цикла (строка БД) выводить посредством "echo" или накапливать всю таблицу в переменной, а потом сразу- "echo $text;" ? Как правильнее, или быстрее исполняется или еще что нибудь ?

В шаблоне можно сразу echo если вы ниже никаких манипуляций с этими данными не делаете.

Link to comment
Share on other sites

  • 0
или накапливать всю таблицу в переменной, а потом сразу- "echo $text;" ?

так у вас не получится, потому что вся таблица из бд представлена будет в виде массива и выведет вам array :)

поэтому вам в любом случае придется разобрать и прогнать весь полученный массив через цикл.

Link to comment
Share on other sites

  • 0

 

или накапливать всю таблицу в переменной, а потом сразу- "echo $text;" ?

так у вас не получится, потому что вся таблица из бд представлена будет в виде массива и выведет вам array :)

поэтому вам в любом случае придется разобрать и прогнать весь полученный массив через цикл.

 

как я понял он имел ввиду что он обойдет массив и сформирует единую строковую переменную из массива, а потом её выведет.

Link to comment
Share on other sites

  • 0

ты имеешь ввиду implode? но зачем? ведь таблица на то и существует что бы разделять в ней данные.

 

не, типо

$out = '';foreach($rows as $row){    $out .= '<div>'.$row->text.'</div>';}echo $out;

а не

foreach($rows as $row){    echo '<div>'.$row->text.'</div>';}
Link to comment
Share on other sites

  • 0

А смысл? В PHP итак есть буфер, и он и так освобождается и содержание страницы отправляется клиенту только после окончания выполнения скрипта.

Смысл в том что в переменной это можно вывести куда угодно и/или передать куда угодно, а ещё можно как-нить обработать перед выводом.

Link to comment
Share on other sites

  • 0
А смысл? В PHP итак есть буфер, и он и так освобождается и содержание страницы отправляется клиенту только после окончания выполнения скрипта.

ну бывают случаи когда вывод нужно принудительно сделать в конце, к примеру если где-то после вывода вы устанавливаете заголовки через header()

Link to comment
Share on other sites

  • 0

Спасибо, для себя выбрал вывод построчно в цикле.

Работая с phpMyAdmin, столкнулся с некоторым неудобством, а именно - сессия самозакрывается через 1440 сек. бездействия.

Кто как борет этот срамной недуг ?

Link to comment
Share on other sites

  • 0
Подскажите, после работы с базой, её закрывать обязательно ? Чем чревато незакрытие ?

что значит закрывать? Вы не путаете закрытие соединения с базой с авторизацией в приложении? Из приложения можно и не выходить по сути сессия все равно закончится рано или поздно.

Link to comment
Share on other sites

  • 0

что значит закрывать? Вы не путаете закрытие соединения с базой с авторизацией в приложении? Из приложения можно и не выходить по сути сессия все равно закончится рано или поздно.

 

Добрый день, имею в виду это:

mysql_close($link);

Обязательна ли такая команда ?

Link to comment
Share on other sites

  • 0
Обязательна ли такая команда ?

Не только не обязательная, а ещё и нежелательная, а в новых версиях ещё и нерабочая. Расширение php-mysql устарело. Используйте mysqli или PDO. 

Link to comment
Share on other sites

  • 0
Не только не обязательная, а ещё и нежелательная, а в новых версиях ещё и нерабочая. Расширение php-mysql устарело. Используйте mysqli или PDO.

Спасибо, не знал.

Т.е. мне надо заменить все - "mysql_connect, mysql_select_db, mysql_query" на "mysqli_connect, mysqli_select_db, mysqli_query" ?

Link to comment
Share on other sites

  • 0

 

только не юзайте пдо с localhost, юзайте с 127.0.0.1 если на винде.

Обоснуйте

 

Очень долго запросы выполнял если было указано localhost вместо 127.0.0.1 на openserver на винде, в какой-то из версий, думаю поэтому советуют

  • Like 1
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share


×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy