Показать полную графическую версию : PHP - несколько вопросов
Ассоциированные массивы не имеют индексов. »
Я специально использую ассоциативные массивы для того, чтобы не ковыряться с индексами. Можете написать mysql_fetch_array() и тогда будет и ассоциативный, и нумерованный массив. У этой функции есть и параметры (можно глянуть в справке ;)), чтобы выбирать нужные: асс, нум или оба сразу (в одном).
Поэтому придётся использовать конструкцию типа foreach ($array as $value) »
Если вы знаете названия полей, то по полям и обращайтесь, зачем вам ещё foreach? Если названия полей не знаете, то см.выше - по индексам в нумерованном массиве.
Вот и я думал, что я их знаю... А шиш.
23 echo "<table>";
24 while ($line = mysql_fetch_assoc($result)) {
25 echo "<tr><td>$line['title']</td><td>$line['album']</td><td>$line['artist']</td></tr>";
26 }
выдаёт следующее сообщение в браузере:
Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in Z:\home\non-existent-host\folder01\search.php on line 25
Strange_V
14-08-2009, 15:49
ManHack, уберите кавычки
25 echo "<tr><td>$line[title]</td><td>$line[album]</td><td>$line[artist]</td></tr>";
Пробовал без кавычек.
Белый экран и пусто. Нифига не выводит >_<
Белый экран имеет следующий html-код:
<table><tr><td></td><td></td><td></td></tr><tr><td></td><td></td><td></td></tr><tr><td></td><td></td><td></td></tr><tr><td></td><td></td><td></td></tr><tr><td></td><td></td><td></td></tr>
Так. Всё. С этим разобрались. Оказывается надо писать имена полей с точностью до регистра букв.
Теперь другой вопрос:
Как вывести кусок html-куда? (около 800 строк, каждую обрамлять в echo "<строка>" задолбаюсь).
Есть ли какой-нибудь быстрый и лёгкий способ это всё красиво оформить? И с точки зрения быстродействия правильный.
Вообще, просвятите меня пожалуйста, лучше ли в php-файл запихивать html с использованием переменных из php или в html-страницу впихивать ссылку на php, который вернёт результаты своей работы по запросу? Второе кажется более целесообразным, т.к. не придётся для каждого запроса генерить один и тот же html (а он не маленький, 800 строк) -> нагрузка на сервер меньше, но первый вариант я не понимаю как сделать... как-бы надо запускать php-файл с параметрами и забирать обратно результаты? А как это сделать?
Я делаю поиск.
Как вывести кусок html-куда? (около 800 строк, каждую обрамлять в echo "<строка>" задолбаюсь).
Есть ли какой-нибудь быстрый и лёгкий способ это всё красиво оформить? И с точки зрения быстродействия правильный. »
800 строк в выводе по SQL-запросу? Так вот тот же код и есть:
echo "<table>";
while ($line = mysql_fetch_assoc($result)) {
echo "<tr><td>$line['title']</td><td>...</td></tr>";
}
echo "</table>";
Пока есть строки в SQL-выдаче, цикл while будет выводить их. Можете проверить на запросе "SELECT * FROM table_name".
лучше ли в php-файл запихивать html с использованием переменных из php или в html-страницу впихивать ссылку на php, который вернёт результаты своей работы по запросу? »
Не понял, что требуется сделать, т.ч. не могу посоветовать, как сделать лучше)
Я делаю поиск. »
Другими словами - вам требуется выводить, скажем, по 20 строк на страницу, а вы не хотите, чтобы SQL-сервер выдавал вам их сразу все? Используйте такой запрос:
"SELECT * FROM table_name ORDER BY field_name LIMIT 0,20"
Разумеется, у вас там своя выборка. SELECT * - это для примера.
ORDER BY field_name - упорядочивание по столбцу, чтобы... вы и сами знаете, для чего нужно упорядочивание :)
LIMIT 0, 20 - вывести 20 строк, начиная с нулевой. Или так: LIMIT 100, 20 - вывести 20 строк, начиная с 100.
За LIMIT спасибо, пригодится :)
У меня оформление динамического (искомого) содержания страницы не маленькое...
Разметка классов, описаных в CSS, да и выводить надо 5 полей не простым текстом...
+ к каждому результату крепится ссылка на небольшое флеш-приложение, с параметрами для просмотра этого конкретного результата. Если кликаем по другому результату, флешка исчезает в месте предыдущего клика и появляется в месте нового с параметрами для нового результата. Примерно так...
В общем, на оформление вывода 1 результата уйдёт куча строчек echo "<HTML>";
Вот я и интересовался, стоит ли заниматься оформлением вывода результата (общий шаблон для всех выводимых результатов) в php-файле поиска или это делается по-другому и в другом месте?
Можно сэкономить, используя AJAX, но здесь вы сами разбирайтесь - в двух словах не расскажешь... Тут уж вам решать - экономить ли трафик пользователей и разбираться с AJAX'ом, или же трафик не экономить, но сделать попроще. Чаще всего выбирают вариант "попроще")
Не обязательно, кстати, писать echo "<html>";
Можно делать "разрывы" в скрипте:
<html>
<head>
<title><?php echo $_GET['title']; ?></title>
</head>
<body>
<table>
<?php
mysql_connect(...);
...
while(...) {
echo "<tr><td>...</td><td>...</td></tr>";
}
?>
</table>
</body>
</html>
Шаблон сделать - тоже можно. Если там меняется только заголовок, таблица и ссылки, то вместо них вставьте в заранее подготовленный файл какие-нибудь тэги вроде [[TITLE]] [[TABLE]] [[LINKS]]. А потом в этом файле "найти и заменить" скриптом. Это так, самые простые шаблоны, которых часто бывает достаточно :)
Вот допустим в php-файле нужно вывести html строчку, которая забирает значения переменных ИЗ ЭТОГО ЖЕ php-файла.
К примеру, строчка такова:
<title><?php echo $search . " results page" . " | DB search | " . $slogan; ?></title>
Т.е. получается из php-файла мы выплёвываем юзеру в браузер html-код, внутри которого содержится php-код, завязанный на коде исходного ("внешнего") php-файла...
Вопрос: КАК это сделать?
Можно конечно вставку HTML-кода вынести за скобки <?php ... ?>, но тогда значения переменных потеряются безвозвратно... :(
Т.е. получается из php-файла мы выплёвываем юзеру в браузер html-код, внутри которого содержится php-код, завязанный на коде исходного ("внешнего") php-файла...
Вопрос: КАК это сделать? »
Вопрос: зачем так делать? От этого php на стороне клиента не будет никакого проку.
Используйте JavaScript-код или вставляйте форму со скрытыми полями <input type="hidden" name="var_name" value="var_value" />, если хотите сохранить какие-то переменные. В зависимости от целей, можно и дописывать переменные к ссылкам в виде get-запроса link.php?a=1&b=2&c=3.
дописывать переменные к ссылкам в виде get-запроса link.php?a=1&b=2&c=3
Вот здесь поподробнее пожалуйста.
Как я помню, добавление переменной к ссылке делается добавлением в тег <form action="search.php"> параметра id="querty"... тогда при отправке запроса пользователем браузер выдаст ссылку вида yourhost.com/search.php?querty=введённые+пользователем+слова
Правильно понимаю?
А как в PHP эту ссылку обработать?
То что делать это надо методом get, это я понял... но адекватного разъяснения в мануалах не нашёл, в одном месте вообще предлагают откомпилировать некий сценарий на Си:
#include <stdio.h> // Включаем функции ввода/вывода
#include <stdlib.h> // Включаем функцию getenv()
void main(void) {
// получаем значение переменной окружения REMOTE_ADDR
char *RemoteAddr = getenv("REMOTE_ADDR");
// ... и еще QUERY_STRING
char *QueryString = getenv("QUERY_STRING");
// печатаем заголовок
printf("Content-type: text/htmlnn");
// печатаем документ
printf("<html><body>");
printf("<h1>Здравствуйте. Мы знаем о вас все!</h1>");
printf("Ваш IP-адрес: %s
",RemoteAddr);
printf("Вот параметры, которые Вы указали: %s",QueryString);
printf("</body></html>");
}
и поместить в cgi-bin (это ж жуть! ><)
Как я помню, добавление переменной к ссылке делается добавлением в тег <form action="search.php"> параметра id="querty"... тогда при отправке запроса пользователем браузер выдаст ссылку вида yourhost.com/search.php?querty=введённые+пользователем+слова »
Не совсем так.
<form action="search.php" method="post">
<input type="hidden" name="a" value="1" />
<input type="hidden" name="b" value="2" />
<input type="text" name="c" />
<input type="submit" value="Отправить" />
</form>
Здесь отправятся три переменные a, b и c методом post по адресу search.php после нажатия на кнопку "отправить". Т.е. адрес останется просто search.php, но переменные передадутся. Можно то же самое методом get. Тогда будет строка search.php?a=1&b=2&c=some_string
Но ведь к каждой ссылке не приделаешь форму (да ещё и избавление от кнопки влечёт за собой добавление JavaScript'а), поэтому можно напрямую генерировать такие ссылки php-скриптом. Не понимаю, какие в этом сложности.
echo "<a href='search.php?a=" . $a . "&b=" . $b . "&c=" . $c . "'>ссылка</a>";
<link rel="stylesheet" href="/css/lamda.css?4" type="text/css" />
что значит ?4 после указания CSS-файла?... Встречал такое же и при описании используемых JavaScripts в head'е страничек....
Это обход кэша. Разработчик сайта неожиданно решил поменять дизайн, а дожидаться, пока у всех из кэша старая css'ка уйдёт - неизвестно сколько дней/месяцев/лет. Поэтому добавляет после вопроса случайное число (обычно просто на 1 больше, чем предыдущее). Адрес поменялся - браузер качает файл заново, дизайн сразу отображается новый.
И JS - то же самое. Можно и к картинкам дописывать, чтоб из кэша не брались.
Лихо :)
Тогда другой вопрос... уж менее по PHP...
Как узнать, какие у конкретного swf-флеша есть параметры для запуска (или ему ещё как-то информация извне может поступать?)... Декомпилировал swf-файл, но ответа на свой вопрос не получил, только кучу ужасающих скриптов и ресурсы...
И ещё один вопрос: как запускать swf-файл с параметрами? (можно через jQuery или swfobject, если по-другому никак).... Но как это делать через библиотеку jQuery с плагином jquery.flash.js или через swfobject.js мне тоже интересно :)
ПС> И ещё один вопрос... совсем не в тему... но как вКонтакте на страницах с музыкой аудиоплеер подгружается? там есть формочка с onclick="return operate (разные параметры, среди которых инфа о пользователе и медиафайле)" - это я понял. Но как плеер вызывается и как там, "внутри" параметры передаются понятно очень смутно... а главное как этот плеер исчезает, когда кликаешь по другой записи и появляется около новой? О.о
http://vkontakte.ru/js/audio.js
Сама флешка плеера ещё страшнее "изнутри"...
Но мне всё-равно очень хочется разобраться в их индийском коде (разумеется исключительно в ознакомительно-познавательных целях), и было бы не плохо, если б вы мне подсказали...
Кажется я задал слишком сложный или слишком глупый вопрос..... ТТ_ТТ
Спрошу попроще вопросик... Как сделать так, чтобы результаты поиска выдавались постранично, например, 20 результов на одну страничку?
Только сделать нормально, чтобы можно было переходить на любую страницу по их номерам, а не переключаться только между соседними. С prev- и next page я уже сделал из любопытства, надо доработать :)
Как обычно постраничный вывод делают? Меня алгоритм интересует, не хочу на собственных косяках учиться))
Для пущего интереса предположим, что религия запрещает изуродовать ссылку дополнительным параметром ?page=<значение> :)
Есть ли другие адекватныес способы?
Кажется я задал слишком сложный или слишком глупый вопрос..... ТТ_ТТ »
Или не в тему (PHP).
А вообще - если вы знаете ActionScript, то вам проще написать свой плеер на флэше. Если представления не имеете, то и рассказывать бессмысленно. Ведь так?
Спрошу попроще вопросик... Как сделать так, чтобы результаты поиска выдавались постранично, например, 20 результов на одну страничку? »
Выше уже спрашивали - LIMIT x, 20 в конце SQL-запроса, где x - некое число, начиная с которого отсчитываются 20 записей.
Только сделать нормально, чтобы можно было переходить на любую страницу по их номерам, а не переключаться только между соседними. »
Вызываете 5 страницу, значит x=20*5.
Для пущего интереса предположим, что религия запрещает изуродовать ссылку дополнительным параметром ?page=<значение> »
Можно и просто search.php?5 передавать.
Либо search5.html или что-то подобное. В этом случае mod_rewrite для apache используется.
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.