Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   Серверные технологии и Flash (http://www.flasher.ru/forum/forumdisplay.php?f=62)
-   -   PHP скрипт в HTML (http://www.flasher.ru/forum/showthread.php?t=124434)

dmk777 29.04.2009 17:40

PHP скрипт в HTML
 
Привет! Есть такая проблема:

В HTML страничку вставлен PHP-скрипт как SSI. Его задача выводить список ссылок на самого себя, т.е. выбор категорий с помощью GET.
script.php?category=3

Но после вывода он должен вернуться на страницу которая его вызывала,
т.е. index.html, что не происходит. А если вызывать из Javascript, то PHP не получает параметры, т.е. GET пустой.

В общем нужно, чтобы PHP скрипт выполнялся, строил ссылки, но при нажатии на сылку не было перехода на другую страницу, а просто менялась картинка в соответствии с выбранной сылкой.

Если все делать или на PHP или JS+HTML - работает, но PHP нужен для выборки изображений из базы. У меня связка HTML+PHP не работает.

Вот код:
PHP код:

require("eg_config.php");//Настройки сервера

$selected 1;

$click $_GET['category'];//В параметре выбор по клику
if ($click == 0)
   {
    echo 
"Параметра нет!";
   }
  else
   {
    echo 
"Категория №".$click;
    
$selected $click;
   };
  
  
$call_page "index.html";
  
$self_page "eg_category_load.php";

  
$num_records GetCategoryCount();
  
ob_start();//Начинаем кэшировать страницу
  
echo "<span class=\"neg_small_cyan_u\">";//Используем свой стиль для вывода ссылок
  
for ($i 0$i $num_records$i++)
    {
     
$rec ReadCategoryRec($i);//Читаем запись
     
$data_id $i 1;//Индекс категории начинается с единицы
     
$data_str rtrim($rec["name"]);//Название категории
     
if ($i == ($selected 1)) { $sel "›"; } else { $sel ""; };
     echo 
"<a href=/".$self_page."?category=$data_id".">".$data_str." </a> ".$sel.$br;//Выводим ссылки на запрос по категориям
     //echo "<a href=\"javascript:void(0)\" onClick=\"ChangeRef('".$data_id."')\">".$data_str."</a>".$sel.$br;
    
};//for
  
echo "</span>";
  
header("Location: $call_page");
  
ob_end_flush(); 

Добавлено через 11 минут
Переменная должна хранится на стороне пользователя, только не в куках!

artem_fs 29.04.2009 18:42

так на html+php и не будет (никак) работать в таком виде, чтобы страница заново вся не подгружалась.
надо такой связкой делать - html+js+php
адрес будет script.php#category=3
с помощью jquery например хватаете эту переменную, и подгружаете php скрипт, который будет выдавать нужную картинку

dmk777 29.04.2009 20:41

Неужели никак нельзя передать 1 единственное значение?
Через скрытое поле или еще как? В HTML ничего для этого не предусмотрено?
Или обязательно нужен SUBMIT?

Добавлено через 3 часа 50 минут
Это test.html

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Demo</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /></head>
<body>
Hello world - PHP include next<BR>
<!--#include virtual="test.php" -->//Никаких параметров не передается
<BR>
that was the PHP include output
<BR>Now include php with a fixed parameter ...<BR>
<!--#include virtual="test.php?a=1" -->//Передается параметр a=1
</script>
</body>
</html>

и test.php

<?php
$a=htmlspecialchars($_REQUEST['a']);
echo "value of parameter a=".$a;
?>



Когда задаешь параметр в теле HTML, то все прекрасно.
Параметры через SSI передаются нормально.
Вот теперь как средствами HTML заменить строку
<!--#include virtual="test.php?a=1" -->
на
<!--#include virtual="test.php?a=2" --> и т.д.

Через JS не выходит. Apache не понимает внутри поля <script> ничего.
Поэтому формирование строчки

sURL = "test.php?a="+index;
s = "<"+"!"+"--"+"#"+"include virtual="+sURL+" -->";
document.write(s);

что в итоге дает правильную строку, но не дает включение PHP-файла.

Добавлено через 3 часа 50 минут
Sorry

PHP код:

Это test.html

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Demo</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /></head>
<body>
Hello world - PHP include next<BR>
<!--#include virtual="test.php" -->//Никаких параметров не передается
<BR>
that was the PHP include output
<BR>Now include php with a fixed parameter ...<BR>
<!--#include virtual="test.php?a=1" -->//Передается параметр a=1
</script>
</body>
</html>

и test.php

<?php
$a
=htmlspecialchars($_REQUEST['a']);
echo 
"value of parameter a=".$a;
?>



Когда задаешь параметр в теле HTML, то все прекрасно.
Параметры через SSI передаются нормально.
Вот теперь как средствами HTML заменить строку
<!--#include virtual="test.php?a=1" -->
на
<!--#include virtual="test.php?a=2" --> и т.д.

Через JS не выходит. Apache не понимает внутри поля <script> ничего.
Поэтому формирование строчки 

sURL = "test.php?a="+index;
s = "<"+"!"+"--"+"#"+"include virtual="+sURL+" -->";
document.write(s);

что в итоге дает правильную строку, но не дает включение PHP-файла.


duhowka 30.04.2009 23:13

или я че-то не понимаю, но почему в php файле нельзя юзать html?
например, так файл test.php
Код:

<html><h1> это хтмл</h1>
<?php print "это php"; ?>

в одном файле сразу

dmk777 08.05.2009 11:42

Усе! сделал через JS<->PHP. Работает раза в 3-4 быстрее и ссылки не видно в строке.

2duhowka
Много всего наверстано в дриме. Поэтому нужны только внешние PHP.
А так я просто с SSI разбирался. Кстати передать параметры через SSI
возможно. Только неудобно.

duhowka 09.05.2009 17:55

зачем SSI я так и не понял.
имхо если есть php, то проще использовать require или include.
Я использовал ssi, когда еще только был "perl", но у заказчика иной раз был хостинг без него приходилось делать все на html, а при использовании SSI - shtml и даже получалось сделать некую динамичность. =)
параметры передать можно, но страница при этом перезагружается.

dmk777 09.05.2009 18:54

>но страница при этом перезагружается
Вот отсюда и все проблемы =)

Хочется динамики + без перегрузки страниц.
В общем сочетание PHP и JS, на мой взгляд позволяет делать все,
что душе угодно.

А SSI мне попалось потому, что до нее я не знал как выделить
область под действие PHP-скрипта. Т.е. выводить кучу верстки
средствами PHP - нудно и долго, т.к. объем HTML-кода большой.
Вот и химичил с SSI. Зато понял, что "клиент" мертв :-)

Теперь я сделал так: JS делает запрос PHP-скрипту,
PHP-скрипт передает массив данных в JS,
а JS на основе данных обновляет нужные элементы.
Вроде так нормально?

duhowka 10.05.2009 06:21

Цитата:

Сообщение от dmk777 (Сообщение 818680)
Теперь я сделал так: JS делает запрос PHP-скрипту,
PHP-скрипт передает массив данных в JS,
а JS на основе данных обновляет нужные элементы.

формулировки не совсем верны, но мне показалось, что я понял, что вы хотели сказать.
js+php+mysql очень сильная связка.
Мне кажется, что последнее время стал популярен и актуален Ajax (как считают некоторые благодаря гуглу), а если упростить, то по сути это "асинхронный" JavaScript и XML. используя его можно изменить "изображение" страницы, не перезагружая её. имхо стоит обратить на него внимание.


Часовой пояс GMT +4, время: 09:09.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.