|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
20.02.2012, 10:34 | #1 |
Пользователь
Регистрация: 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).'&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 код:
и как при этом клике получить имя файла, на который я нажимаю? Последний раз редактировалось LLIo6oH; 20.02.2012 в 10:39. |
20.02.2012, 11:07 | #2 |
Старожил
Регистрация: 31.05.2010
Сообщений: 3,301
|
Почему бы вам не сделать список файлов в виде radio-кнопок, в одной форме с выпадающим списком..?
Выбрали хост из списка -> Отметили нужный файл -> Отправили форму В обработчике - без проблем получили и хост, и имя файла, выполнили все требуемые действия. Без перезагрузки страницы - средствами AJAX, что не является предметом данного раздела форума. Там не сложно, на jQuery несколько строк, с использованием: click val post или ajax |
20.02.2012, 11:22 | #3 |
Пользователь
Регистрация: 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. |
20.02.2012, 11:31 | #4 |
Форумчанин
Регистрация: 04.08.2009
Сообщений: 684
|
А файл этот находится на локальной машине или на сервере? С сервера до локальной машины Вам не достучаться. Для этого используйте формы и input type = "file".
Еслия Вам помог, не поленитесь нажать на весы и оставить отзыв. Это не займет много времени, но даст понять, что я старался не зря =)
Мой ник зарегистрирован, а твой? |
20.02.2012, 11:40 | #6 |
Пользователь
Регистрация: 21.09.2009
Сообщений: 13
|
все находится на сервере.
я там маленько подправил сообщение. до файла я достучался. но вот не уверен в передаче параметров. в том числе и из формы. как правильно теперь передать значение выпадающего списка и fileName? Все делается в адресе ссылки через параметры? А как их принять и обработать? |
20.02.2012, 11:52 | #7 |
Пользователь
Регистрация: 21.09.2009
Сообщений: 13
|
|
20.02.2012, 12:46 | #8 |
Пользователь
Регистрация: 21.09.2009
Сообщений: 13
|
Разобрался почти со всем.
Осталось только выяснить, как мне передать значение выпадающего списка в качестве параметра адресной строки? |
20.02.2012, 13:16 | #9 |
Старожил
Регистрация: 31.05.2010
Сообщений: 3,301
|
|
20.02.2012, 13:22 | #10 |
Пользователь
Регистрация: 21.09.2009
Сообщений: 13
|
пробовал.
но мне кажется я неправильно сам параметр указываю. Мне его нужно будет прописать тут? PHP код:
PHP код:
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Текст в ячейке по нажатию на каждую ссылку. | 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 |