Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 20.02.2012, 10:34   #1
LLIo6oH
Пользователь
 
Регистрация: 21.09.2009
Сообщений: 13
По умолчанию вызвать PHP функцию по нажатию на ссылку (onclick)

Смысл моей задачи таков.
У меня выводится на экран список файлов из папки.
Сортируется по префиксу и оформляется как ссылка.

так же есть web форма с одним лишь выпадающим списком, который содержит адреса хостов.

нужно, по нажатию на одну из ссылок, передать, на выбранный в списке хост, содержание файла, по имени которого кликнули.

Я сделал следующий код.

Код HTML:
<html>
<head>
<link rel="stylesheet" href="style1.css" type="text/css">

<!-- Получение текста файла и отправка на сервер -->
<?php
function getTheContent($fileName)
{
     $host =  ($_POST['hostlist']);
	 $path = '/getfile.php';
	 $socetOpen = fsockopen($host, 80, $errno, $errstr, 30);
	 if (!$socetOpen) die($errstr.' ('.$errno.')');

	 $fopen = fopen($fileName, 'r');
	 if ($fp)
	 {
	     $content = fread($fopen, filesize($fileName));
     }
	 fclose($fopen);

	 $data = 'file='.urlencode($fileName).'&amp;content='.urlencode($content);

     $headers = 'POST '.$path." HTTP/1.1\r\n";
     $headers .= 'Host: '.$host."\r\n";
     $headers .= "Content-type: application/x-www-form-urlencoded\r\n";
     $headers .= 'Content-Length: '.strlen($data)."\r\n\r\n";

     fwrite($socetOpen, $headers.$data);
	 
	 fclose($socetOpen);
}
?>

<!-- Сортировка файлов папке и вывод на экран. Срабатывает при загрузке -->

<?php 
function showTheListFaile($prefix)
{
     $not_dir=array('.','..');
     $sPath = './test'; 
     $dDir = opendir($sPath);
     $len_array=array();
     $aFileList = array();
 
     while ($sFileName=readdir($dDir)) 
     { 
         if ($sFileName!='.' && $sFileName!='..') 
         { 
		     $aFileList[]=$sFileName;
		     $len_array[] = $file_len;
         } 
     } 
     closedir ($dDir); 

     $iNumFiles=count($aFileList); 

     for ($i = 0; $i < $iNumFiles; $i++)
     {
         $len_of_name = strlen($aFileList[$i]);

         $chars = preg_split('/_/', $aFileList[$i], -1, PREG_SPLIT_NO_EMPTY);
         if ($chars[0] == $prefix)
         {
             echo "<a href='' onclick=''>";
             echo $aFileList[$i] ."</a>"."</br>"; 
         }

     }
}
?>

</head>
<!-- HTML -->
<body>
<div id = "container">
     <div id = "upper">
	     <form name = "sendForm" id = "myForm" method = "post">
		     <select name="hostlist">
			     <option> 192.168.0.0
                 <option> 192.168.0.1
                 <option> 192.168.0.2
             </select>
		 </form>
	 </div>
     <div id = "left">
	     <?php showTheListFaile(cl); ?>
	 </div>
	 <div id = "middle">
	     <?php showTheListFaile(mp); ?>
	 </div>
	 <div id = "right">
	     <?php showTheListFaile(ht); ?>
	 </div>
</div>
<?php showTheListFail(ht); ?>
</body>
</html>
Но не могу реализвоать обработку клика.
То есть как мне по клику вызвать функцию
PHP код:
function getTheContent($fileName
Это делается JS? или PHP или Ajax?
и как при этом клике получить имя файла, на который я нажимаю?

Последний раз редактировалось LLIo6oH; 20.02.2012 в 10:39.
LLIo6oH вне форума Ответить с цитированием
Старый 20.02.2012, 11:07   #2
Andkorol
Старожил
 
Регистрация: 31.05.2010
Сообщений: 3,301
По умолчанию

Почему бы вам не сделать список файлов в виде radio-кнопок, в одной форме с выпадающим списком..?

Выбрали хост из списка -> Отметили нужный файл -> Отправили форму
В обработчике - без проблем получили и хост, и имя файла, выполнили все требуемые действия.

Без перезагрузки страницы - средствами AJAX, что не является предметом данного раздела форума.
Там не сложно, на jQuery несколько строк, с использованием:
click
val
post или ajax
Andkorol вне форума Ответить с цитированием
Старый 20.02.2012, 11:22   #3
LLIo6oH
Пользователь
 
Регистрация: 21.09.2009
Сообщений: 13
По умолчанию

спасибо за подсказку по Ajax.

Тогда такой вопрос по PHP. я сам редко пишу на php, не совсем мой профиль. Но вот попросили сделать... Поэтому может вопрос глупый будет.

Я решил сделать обработку файла и отправку запроса в отдельном файле - obrabotka.php

соответственно в сылке добавил <a href = "obrabotka.php?filename=$aFileL ist[$i]"

И всю функцию getTheContent($fileName) перенес в этот файл. И еще для проверки, первым же действием написал просто echo.

Происходит распечатка моего echo и дальше "Unknown error: 0 (0)"
Как мне продебажить? чтоб отследить, где ошибка

И как мне принять, передаваемый параметр? По названию параметра в строке браузера filename?

Последний раз редактировалось LLIo6oH; 20.02.2012 в 11:32.
LLIo6oH вне форума Ответить с цитированием
Старый 20.02.2012, 11:31   #4
Wicort
Форумчанин
 
Аватар для Wicort
 
Регистрация: 04.08.2009
Сообщений: 684
По умолчанию

А файл этот находится на локальной машине или на сервере? С сервера до локальной машины Вам не достучаться. Для этого используйте формы и input type = "file".
Еслия Вам помог, не поленитесь нажать на весы и оставить отзыв. Это не займет много времени, но даст понять, что я старался не зря =)
Мой ник зарегистрирован, а твой?
Wicort вне форума Ответить с цитированием
Старый 20.02.2012, 11:38   #5
TranceSmile
Смайлик :)
Форумчанин
 
Аватар для TranceSmile
 
Регистрация: 12.12.2010
Сообщений: 445
По умолчанию

ошибка вот этого не существует
Код:
$_POST['hostlist'];
Самый перспективный framework Yii (c)
TranceSmile вне форума Ответить с цитированием
Старый 20.02.2012, 11:40   #6
LLIo6oH
Пользователь
 
Регистрация: 21.09.2009
Сообщений: 13
По умолчанию

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

как правильно теперь передать значение выпадающего списка и fileName?
Все делается в адресе ссылки через параметры? А как их принять и обработать?
LLIo6oH вне форума Ответить с цитированием
Старый 20.02.2012, 11:52   #7
LLIo6oH
Пользователь
 
Регистрация: 21.09.2009
Сообщений: 13
По умолчанию

Цитата:
Сообщение от TranceSmile Посмотреть сообщение
ошибка вот этого не существует
Код:
$_POST['hostlist'];
я догадывался.. так как распечатка этого значения ничего не дала.

Тогда пара вопросов выше
LLIo6oH вне форума Ответить с цитированием
Старый 20.02.2012, 12:46   #8
LLIo6oH
Пользователь
 
Регистрация: 21.09.2009
Сообщений: 13
По умолчанию

Разобрался почти со всем.

Осталось только выяснить, как мне передать значение выпадающего списка в качестве параметра адресной строки?
LLIo6oH вне форума Ответить с цитированием
Старый 20.02.2012, 13:16   #9
Andkorol
Старожил
 
Регистрация: 31.05.2010
Сообщений: 3,301
По умолчанию

Цитата:
Сообщение от LLIo6oH Посмотреть сообщение
Осталось только выяснить, как мне передать значение выпадающего списка в качестве параметра адресной строки?
Указать для формы метод передачи данных GET.
Andkorol вне форума Ответить с цитированием
Старый 20.02.2012, 13:22   #10
LLIo6oH
Пользователь
 
Регистрация: 21.09.2009
Сообщений: 13
По умолчанию

Цитата:
Сообщение от Andkorol Посмотреть сообщение
Указать для формы метод передачи данных GET.
пробовал.
но мне кажется я неправильно сам параметр указываю.
Мне его нужно будет прописать тут?
PHP код:
echo "<a href='obrabotka.php?filename=$aFileList[$i]'>"
Или сразу в файле обработчике нужно
PHP код:
$host =  $_GET['hostlist']; 
hostlist - это id выпадающего списка
LLIo6oH вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Текст в ячейке по нажатию на каждую ссылку. Droid HTML и CSS 18 05.09.2013 00:05
Необходимо вытащить ссылку с onclick.... BIKA777 Помощь студентам 6 02.12.2011 18:12
как вызвать по нажатию кнопки меню настройки клавиатуры, мыши, монитора 1234 Общие вопросы Delphi 2 10.09.2008 16:52
по нажатию на кнопку вызвать другой фаил с расширением exe который находится в той же папке 1234 Общие вопросы Delphi 3 05.08.2008 12:32
вызвать процедуру для tray.OnClick и закрузить в нее нужную иконку KORN Компоненты Delphi 8 02.10.2007 00:17