Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Загрузка данных из БД MySQL
 
 автор: Mad_Max   (26.10.2004 в 11:35)   письмо автору
 
 

В общем, с помощью php подгружаю данные из БД:

<?php
$link 
mysql_connect("localhost"$login_mysql$passwd_mysql)
        or die(
"Could not connect : " mysql_error());
mysql_select_db("garantekb",$link) or die("Could not select database");    
$query="select * from represent order by city";
$result mysql_query($query,$link) or die("Query failed : " mysql_error());
echo 
"<div id=norm>";
while (
$row=mysql_fetch_array ($result)) {
echo 
"<li><a href=".chr(34)."javascript:show_info('".$row["id_represent"]."');".chr(34).">".$row["city"]." <br>(".$row["firm_name"].")</a><br>";
}
mysql_free_result ($result);
echo 
"</div>";

?>

где show_info:
<script>
// <!--
  function show_info(id)
  {
        
        window.open('info.php?firm='+id, 'info', 'width=450,height=370,history=no,resizable=no,status=no,scrollbars=yes,toolbar=no,location=no,menubar=no');
  }
// -->
</script>

и вроде бы здесь нет проблем, но при выполнении функции show_info, info.php не отображается ссылаясь на внутреннюю ошибку, хотя там вроде тоже все в порядке, вот его код:

<?php

include ("/home/localhost/www/inc/main.init.ini");
include (
"/home/localhost/www/inc/style.inc");
echo 
"<body bgColor=#f0f0f0 text=norm>";

$link mysql_connect("localhost"$login_mysql$passwd_mysql)
        or die(
"Could not connect : " mysql_error());

mysql_select_db("garantekb",$link) or die("Could not select database");    
$query="select * from represent where id_represent=".$firm;
$result mysql_query($query,$link) or die("Query failed : " mysql_error());
$row=mysql_fetch_array ($result);  

echo 
"<center><TABLE border=1 class=new cellspacing=0 cellpadding=8>";
//echo "<div id=norm>";
if ($row["firm_name"]<>'') {echo "<tr><td>Название представительства:</td><td> ".$row["firm_name"]."</td></tr>";}
if (
$row["phone"]<>'') {echo "<tr><td>Телефон/Факс :</td><td> ".$row["phone"]."</td></tr>";}
if (
$row["email"]<>'') {echo "<tr><td>email:</td><td> <a href=mailto:".$row["email"].">".$row["email"]."</a></td></tr>";}
if (
$row["www"]<>'') {echo "<tr><td>www:</td><td> <a href=".$row["www"]." target=_blank>".$row["www"]."</a></td></tr>";}
if (
$row["address"]<>'') {echo "<tr><td>Адрес:</td><td> ".$row["address"]."</td></tr>";}
if (
$row["director"]<>'') {echo "<tr><td>ФИО директора:</td><td> ".$row["director"]."</td></tr>";}
if (
$row["contact"]<>'') {echo "<tr><td>ФИО контактного лица:</td><td> ".$row["contact"]."</td></tr>";}
if (
$row["city"]<>'') {echo "<tr><td>Город:</td><td> ".$row["city"]."</td></tr><br>";}
//echo "</div>";

echo "</table>";
mysql_free_result ($result);
echo 
"<br><div id=norm><a href='' onclick=".chr(39)."window.close();".chr(39).">Закрыть это окно</a></div></center>";

echo 
"</body>";
?>

Буду очень признателен за какой-нибудь совет

   
 
 автор: elenaki   (26.10.2004 в 12:37)   письмо автору
 
   для: Mad_Max   (26.10.2004 в 11:35)
 

>'info.php?firm='+id

а зачем тут +?
скорее всего, Java-scripty не нравятся какие-нибудь спецсимволы, которые могут встретиться
в info.php, кавычки или переводы строк. у меня было такое, когда я скрипту давала инфу из
базы.

   
 
 автор: glsv (Дизайнер)   (26.10.2004 в 13:17)   письмо автору
 
   для: Mad_Max   (26.10.2004 в 11:35)
 

А какую ошибку пишет? Это ошибка JavaScript или PHP?

У меня Ваша функция JavaScript отработала отлично. Info.php тоже заработал после того, как я подставил свою базу данных и параметры ее подключения.

Может быть ошибка в подключаемых файлах?

//include ("/home/localhost/www/inc/main.init.ini"); 
//include ("/home/localhost/www/inc/style.inc"); 


Как эсперимент - попробуйте вставить код из этих файлов прямо в код info.php - и посмотреть что выйдет.

   
 
 автор: Mad_Max   (27.10.2004 в 10:45)   письмо автору
 
   для: glsv (Дизайнер)   (26.10.2004 в 13:17)
 

Спасибо за советы, сейчас попробую

   
 
 автор: Mad_Max   (27.10.2004 в 14:23)   письмо автору
 
   для: Mad_Max   (27.10.2004 в 10:45)
 

Спасибо за советы. На локальной машине все работает прекрасно. но дело все в том, что аналогичный код не работает на сервере сайта. Причем раньше он там работал, но после того как я у себя переустановил локальные web- и sql- сервера, именно, эти данные из таблицы не хотят подгружаться, хотя другие таблицы работают прекрасно.
А ошибка имеет следующий вид:
500. Внутренняя ошибка
Запрашиваемый документ /reg/info.php не может быть предоставлен в связи с внутренней ошибкой.
Попробуйте начать с заглавной страницы сайта или связаться с его вебмастером.
Вероятной причиной ошибки может быть одна из следующих:
Некорректный скрипт (ошибка компиляции)
Некорректный вывод скрипта (отсутствие заголовка Content-Type)
Права файла скрипта не допускают его выполнение
Некорректная директива в локальном файле конфигурации .htaccess

   
 
 автор: cheops   (27.10.2004 в 16:01)   письмо автору
 
   для: Mad_Max   (27.10.2004 в 14:23)
 

А вы действительно ничего в .htaccess не запрещали - 500 ошибка... мало вероятно, что на сервере кривое ПО, я её видел только если запрещал лишнего чего в директории .htaccess-ом, да на ASP-хостинге (ну Windows простительно)...

   
 
 автор: Mad_Max   (29.10.2004 в 09:15)   письмо автору
 
   для: cheops   (27.10.2004 в 16:01)
 

У меня доступ настроен через FTP- клиента,а там скрытые файлы не отображаются. Спасибо за совет, попробую настроить SSH и посмотрю что там творится в этом .htaccess -е.

   
 
 автор: cheops   (29.10.2004 в 09:54)   письмо автору
 
   для: Mad_Max   (29.10.2004 в 09:15)
 

Странно, вообще большинство FTP-менеджеров скрытые файлы отображает. Если вы сами или другой человек работающий над сайтом не создавали .htaccess - его там скорее всего не будет...

   
 
 автор: Mad_Max   (01.11.2004 в 12:36)   письмо автору
 
   для: cheops   (29.10.2004 в 09:54)
 

Скорее всего его действительно нет. Может вы могли бы подсказать как правильно настроить файл .htaccess, чтобы ошибка исчезла, тем более, что раньше этого файла тоже не было и все работало нормально. Буду очень благодарен

   
 
 автор: glsv (Дизайнер)   (01.11.2004 в 12:53)   письмо автору
 
   для: Mad_Max   (01.11.2004 в 12:36)
 

>Может вы могли бы подсказать как правильно настроить файл .htaccess
Если его нет(htaccess) то ошибка не в нем.

Вам нужно смотреть reg/info.php...
Попробуйте переписать этот файл с нуля. Сначала пусть выполняется пустой файл. Напишите в нем только вывод в браузер

echo "info.php -  работает"


И постепенно добавлять блоки кода. Таким образом можно определить когда и где именно возникает 500-ая ошибка.

   
 
 автор: Mad_Max   (01.11.2004 в 15:03)   письмо автору
 
   для: glsv (Дизайнер)   (01.11.2004 в 12:53)
 

Спасибо за совет. Даже при выполнении кода вывода в браузер
echo "info.php -  работает";

появляется таже 500-ая ошибка.Если менять путь к нему, то ничего не меняется. Может ли быть, что на самом сервере стала недоступным функция для вывода нового окна?

   
 
 автор: glsv (Дизайнер)   (01.11.2004 в 15:32)   письмо автору
 
   для: Mad_Max   (01.11.2004 в 15:03)
 

Вот это здорово! :(

Т.е. если вы сами в строке браузера набираете http://server/reg/info.php
И в info.php находится только одна строчка
<?
echo "info.php - работает";
?>
То все равно выдается сообщение об ошибке?
А другие документы с расширением php работают нормально?

>Может ли быть, что на самом сервере стала недоступным функция для вывода нового окна?
Маловероятно, это практически невозможно отследить. Открытие нового окна выполняется ява-скриптом на клиенте и сервер про это ничего не знает. Да и зачем делать такой запрет...

   
 
 автор: glsv (Дизайнер)   (01.11.2004 в 15:56)   письмо автору
 
   для: Mad_Max   (01.11.2004 в 15:03)
 

Если ошибка только при открытии нового окна JavaScript-ом, то значит что то не то передается в качестве параметра.

Измените функцию show_info, что посмотреть с каким параметром идет обращение к странице info.php.

function show_info(id) 
  { 
         
    alert("window.open('info.php?firm='"+id+", 'info', 'width=450,height=370,history=no,resizable=no,status=no,scrollbars=yes,
toolbar=no,location=no,menubar=no')");   

}


А еще попробуйте изменить скрипт вот так:

<script language="JavaScript1.1">  
<!--
function show_info(id) 
  { 
    url="info.php?firm="+id;
        
    window.open(url, 'info', 'width=450,height=370,history=no,resizable=no,status=no,
scrollbars=yes,toolbar=no,location=no,menubar=no'); 
  }
-->
</script>

   
 
 автор: Mad_Max   (02.11.2004 в 08:14)   письмо автору
 
   для: glsv (Дизайнер)   (01.11.2004 в 15:56)
 

Не понимаю, почему так происходит, но дело в том, что другие файлы с расширением php работают, но только те, которые там уже есть. То есть когда я передаю файл типа test.php3, который имеет точно такой же код, как файл уже имеющийся на сервере test1.php3 - он не работает (500-ая ошибка), а код файла test1.php3 работает прекрасно. Мой локальный сервер не поддерживает *.php3, но test.php работает.

   
 
 автор: cheops   (02.11.2004 в 10:25)   письмо автору
 
   для: Mad_Max   (02.11.2004 в 08:14)
 

>Мой локальный сервер не
>поддерживает *.php3, но test.php работает.
Кстати, включить поддержку расширения для PHP-файлов можно, зарегистрировав его расширение в конфигурационном файле apache - httpd.conf, добавив его к списку после директивы AddType application/x-httpd-php
 AddType application/x-httpd-php phtml php php3

   
 
 автор: glsv (Дизайнер)   (02.11.2004 в 10:39)   письмо автору
 
   для: Mad_Max   (02.11.2004 в 08:14)
 

> но дело в том, что другие файлы с расширением php работают, но только те, которые там уже есть

Раз так, то вполне вероятно, что права файла скрипта не допускают его выполнение. Т.е. те скрипты, что существуют имеют права на выполнение, а те что создаете Вы сами - не имеют оных.
Вам, наверное, нужно выяснить этот вопрос у админов хостинга.

>Мой локальный сервер не поддерживает *.php3, но test.php работает.
Имеется ввиду ваша локальная машина? Или хостинг?
Если речь идет о "домашней" машине, то это легко исправить. В файле настройки Apache httpd.conf нужно изменить строчку, отвечающую за расширения файлов php-скриптов:

AddType application/x-httpd-php phtml php php3

Нужные Вам раширения нужно перечислить через пробел.

   
 
 автор: Mad_Max   (02.11.2004 в 10:54)   письмо автору
 
   для: glsv (Дизайнер)   (02.11.2004 в 10:39)
 

Хорошо, спасибо!

   
 
 автор: Mad_Max   (03.11.2004 в 11:59)   письмо автору
 
   для: glsv (Дизайнер)   (02.11.2004 в 10:39)
 

Спасибо большое за помощь! Проблема благополучно разрешилась. Необходимо было в атрибуте передаваемого файла поставить соответствующие параметры!

   
 
 автор: glsv (Дизайнер)   (03.11.2004 в 12:46)   письмо автору
 
   для: Mad_Max   (03.11.2004 в 11:59)
 

Права на исполнение, когда вы копируете файл на хостинг?

   
 
 автор: Mad_Max   (04.11.2004 в 09:11)   письмо автору
 
   для: glsv (Дизайнер)   (03.11.2004 в 12:46)
 

Да, после копирования файла на сервер, нужно в его атрибутах поставить галочки на право записи, чтения, исполнения (примерно так ххх х-х х-х)

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования