Мой блог о путешествиях www.crazy-traveller.ru
[ok]
Здравствуйте! Помогите пожалуйста решить проблему совмещения кода html, echo и header в одном файле.
читать дальше
Заранее благодарю всех откликнувшихся!
Здравствуйте! Помогите пожалуйста решить проблему совмещения кода html, echo и header в одном файле.
читать дальше
Заранее благодарю всех откликнувшихся!
-
-
21.12.2008 в 17:12Как будто ты обратился не к пхп-файлу, а к файлу картинки. Имеет смысл только если ты хочешь, чтобы у тебя пхп-скрипт отдал картинку, а не хтмл.
При этом echo использовать бессмысленно.
Если хочется использовать echo раньше хеадера, то сделай так:
в начале скрипта пиши
ob_start();
в конце скрипта(после header) пиши
ob_end_flush();
и радуйся)
А лучше сделай отдельный скрипт, который будет генерировать картинку по запросу, в нем тогда будет и хеадер, и контент картинки, саму картинку можно выводить, передавая этому скрипту параметры по _GET, а в основной скрипт тогда вставишь
-
-
21.12.2008 в 17:24-
-
21.12.2008 в 17:27Если ссылка на картинку - просто вставь ссылку, тогда хеадер не нужен.
Если сама картинка засунута в базу - тогда делай отдельный PHP файл c чтением картинки, в него пиши header('Content-type: image/jpeg');
а дальше через echo выводи содержимое картинки в базе)
а уже этот отдельный файл используй как изображение.
Но сначала ответь на первый вопрос.
-
-
21.12.2008 в 17:35Вот смотри. я в первом файле пишу: echo ("< b >Фотографии:< /b > "."< a href='image.php?id=".$row['id']."' target='_blank' >< img src='pictures/image.gif' >< /a >< br >");
а в файле image.php пишу:
< ?php
include "dbSettings.inc";
if ( isset( $_GET['id'] ) ) {
// Здесь $id номер изображения
$id = (int)$_GET['id'];
if ( $id > 0 ) {
$query = "SELECT `timg` FROM `tours` WHERE `id`=".$id;
// Выполняем запрос и получаем файл
$res = mysql_query($query);
if ( mysql_num_rows( $res ) == 1 ) {
$timg = mysql_fetch_array($res);
// Отсылаем браузеру заголовок, сообщающий о том, что сейчас будет передаваться файл изображения
header("Content-type: image/*");
// И передаем сам файл
echo $timg['timg'];
}
}
}
?>
Второй код я взяла из инета, не сама писала. и вот при работе всего этого безобразия при кликании на иконку картинки в первом файле у меня выдаётся "открыть или сохранить файл image.php?" =(((
-
-
21.12.2008 в 17:45тогда положи в директорию со скриптами файл
.htaccess
и напиши в него
RewriteEngine On
RewriteRule ^image\.jpg$ image.php$1
После этого в основном скрипте ссылайся уже на image.jpg с нужными параметрами, они будут переданы image.php
да, и content-type проставляй корректно, в зависимости от типа картинки
-
-
21.12.2008 в 17:49блин, я ничего не понимаю((( куда мне потом ссылаться в первом файле? Ты не мог бы писать попроще немножко, для очень-очень чайников?
-
-
21.12.2008 в 17:51-
-
21.12.2008 в 17:59тебе надо назвать файл ".htaccess" без кавычек.
а в первом файле вместо
напишешь это:
Да, кстати, обращение к файлу через знак ?param=value и есть передача параметров через GET.
Я пишу как могу просто. )
Тут надо только немного подумать и спросить про непонятные директивы, если не удастся их нагуглить
-
-
21.12.2008 в 18:06в файле заменила на image.jpg, теперь выдаётся что типа нет такого файла... не может найти его..
обращение к файлу через знак ?param=value и есть передача параметров через GET.
ого! круто)
подумать и спросить про непонятные директивы
если б я знала ещё что такое директивы) но эт всё потом. давай сначала с проблемой разберёмся...
зы: спасибо большое что откликнулся и пытаешься помочь!!!!
-
-
21.12.2008 в 18:09пожалуйста, но по-моему, ты или не читаешь то что я пишу, или не думаешь...
я писал:
После этого[...после создания файла .htaccess] в основном скрипте ссылайся уже на image.jpg с нужными параметрами, они будут переданы image.php
если ты не создала файл, то логично, что у тебя:
в файле заменила на image.jpg, теперь выдаётся что типа нет такого файла... не может найти его..
потому что если нет .htaccess то нет и перенаправления обращений image.jpg на image.php
Возьми тоталкоммандер(виндовскоммандер), например, в нем все нормально создается.
-
-
21.12.2008 в 18:26-
-
21.12.2008 в 18:30картинки крестиком - читай, что я написал про content-type
вообще дай ссылку на скрипт, посмотрю.
в-смысле, на сайте, чтобы посмотреть его в работе
-
-
21.12.2008 в 18:35вот первый файл где кликаю на иконку:
< ? include "protect.inc";
include "dbSettings.inc"; ?>
< html >
< head >
< link href="myStyle.css"
rel="stylesheet"
type="text/css" >
< /head >
< body >
< ? $query="SELECT * FROM tours WHERE id='".$id."'";
$result=mysql_query($query)
or die ("Error:query");
while ($row=mysql_fetch_array($result))
{
echo ("< b >Номер тура:< /b > ".$row["id"]."< br >");
echo ("< b >Страна:< /b > ".$row["tname"]."< br >");
echo ("< b >Фотографии:< /b > "."< a href='image.jpg?id=".$row['id']."' target='_blank' >< img src='pictures/image.gif' >< /a >< br >");
}
?>
< /body >
< /html >
а вот файл image.php:
< ?php
include "dbSettings.inc";
if ( isset( $_GET['id'] ) ) {
// Здесь $id номер изображения
$id = (int)$_GET['id'];
if ( $id > 0 ) {
$query = "SELECT `timg` FROM `tours` WHERE `id`=".$id;
// Выполняем запрос и получаем файл
$res = mysql_query($query);
if ( mysql_num_rows( $res ) == 1 ) {
$timg = mysql_fetch_array($res);
// Отсылаем браузеру заголовок, сообщающий о том, что сейчас будет передаваться файл изображения
header("Content-type: image/jpg");
// И передаем сам файл
echo $timg['timg'];
}
}
}
?>
-
-
21.12.2008 в 18:37-
-
21.12.2008 в 18:39-
-
21.12.2008 в 18:46проверь в разных браузерах.
а еще попробуй прописать не image.jpg а image.html
тогда будет так
файл, где кликаешь на иконку:
и .htaccess будет:
если не поможет - придется делать отдельный вывод страницы, в которую уже писать <img src=image.html?id= ........ это отдельно.
-
-
21.12.2008 в 18:59Переделала в image.html. Докладываю: открываеца в новом окне, но иногда глючит и выдаёт вместо картинки такой например текст: "/tmpphp4EC.tmp". Это происходит с картинками которые по весу примерно в 14 кб, а те что по 2-3 КБ они отображаются...
И ещё такой вопрос. у меня в БД на каждой строке три картинки. соответственно три иконки для кликания и должно быть три файла image.html, image1.html и image2.html. Как это отобразить с файле .htaccess и вообще можешь поподробнее объяснить что эт за файл и как он работает, что бы я понимала?
-
-
21.12.2008 в 19:02Судя по твоим описаниям, у тебя на компьютере проблема с интерпретацией php.
Чем ты пользуешься, чтобы пхп-файлы запускались?
Файл .htaccess с кодом, который мы сделали, перенаправляет обращения с image.html НА image.php
В параметрах к нему ты можешь указать любой номер картинки.
Ты же вызываешь:
Вот у тебя там есть id.
указывай какой нужно)
Или ты вообще про общую реализацию? Если да - сделай в базе в таблице три поля под картинки, а не одно.
-
-
21.12.2008 в 19:08id должен не задаваться в файле а браться из предыдущего файла. Выходит таблица в которой мы кликаем на ячейку в строке, грузится файл где отображаются другие ячейки из этой строки "номер тура, "страна" и фотка тоже берётся из ячейки... ну.. ты понимаешь ведь!
ну у меян три поля и из всех трёх нужно по отдельности картинки запрашивать.. так?
-
-
21.12.2008 в 19:12ты понимаешь ведь!
ну у меян три поля и из всех трёх нужно по отдельности картинки запрашивать.. так?
да. тогда делаешь под картинки не одно, а три поля в таблице, и в каждое заливаешь отдельно картинку. и из каждого отдельно запрашиваешь.
-
-
21.12.2008 в 19:17вот! я так и сделала и у меня получилось что в первом файле у меня три иконки для кликания (для каждой из картинок). соответственно каждая икконка пересылает на разные файлы image.html, image1.html и image2.html и вот я спрашиваю нужно ли это как то отображать в файле .htaccess? Хотя покаписала поняла что видимо не нужно. но на всяк.случай спрашиваю..
-
-
21.12.2008 в 19:23Но если волнуешься, то зайди localhost/Tools/phpMyAdmin/
выбери базу и справа-вверху выбери экспорт, и экспортируй базу в файл.
соответственно каждая икконка пересылает на разные файлы image.html, image1.html и image2.html и вот я спрашиваю нужно ли это как то отображать в файле .htaccess
думать вас явно не учат...
передавай номер картинки параметром. У тебя будет например
image.html?id=123&pic=2
а в самом файле image.php смотри, что передано в pic и выбирай соответствующую картинку.
Это все пишется за 15 минут максимум.
-
-
21.12.2008 в 19:31думать вас явно не учат...
эт не нас не учат, а я не учусь... я вообще на ИТ случайно попала. можешь считать меня блондинкой...
в файле image.php у меня идёт "SELECT `timg` FROM `tours`....." Так вот в БД в таблице у меня три столбца для трёх картинок: timg, timg1 и timg2. Тогда получается что и файлов image.php должно быть три. Или я непрально понимаю?
-
-
21.12.2008 в 19:40ок. тогда скажи какую версию скачать и где там её найти можно? на сайте денвера вижу тока кучи каких-то обновлений и дополнений...
www.denwer.ru/dis/?url=Base/Denwer3_Base_2008-0...
Дальше следуй написанным там инструкциям.
в файле image.php у меня идёт "SELECT `timg` FROM `tours`....." Так вот в БД в таблице у меня три столбца для трёх картинок: timg, timg1 и timg2. Тогда получается что и файлов image.php должно быть три. Или я непрально понимаю?
переименуй поля так, чтобы они были
timg0, timg1, timg2
т.е. нумерованные.
дальше код будет такой:
для основного файла
для image.php
-
-
21.12.2008 в 19:58ок, счас буду скачивать..
остальное сделала, вроде работает тока я поставила pic0, pic1 и pic2, т.к. у меня timg0, timg1 и timg2. А если pic1 2 и 3 то последняя не открывалась картинка.
-
-
21.12.2008 в 20:01ну вот, а говоришь, мозги не работают. именно pic=0, pic=1 и pic=2. я ошибся
-
-
21.12.2008 в 20:08ну вот они у меня работают но оч медлено и.. кароч програмирование эт просто не моё...
-
-
21.12.2008 в 20:11что у тебя "не работает"?
у меня последняя версия, работает.
Какая ошибка, что выводит?
-
-
21.12.2008 в 20:13-
-
21.12.2008 в 20:18ПАПКА_ДЕНВЕРА\denwer\Run.exe
к тому же, ты ставила его поверх старого или в отдельную папку?