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

Форум PHP

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

 

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

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

тема: PHP в JS функции
 
 автор: Spenser   (16.11.2006 в 10:42)   письмо автору
 
 

уже почти все работает, осталось самое малое.
есть функция:

<script language='JavaScript1.1' type='text/javascript'> 
<!-- 
function clicknow()
  {
 var search = document.form.typeflash.value;
 
<?
$q 
"SELECT * FROM $table3 ORDER BY flashname ";
$result = @mysql_query($q);
$number MYSQL_NUMROWS($result);
$k=0;
while(
$sublist mysql_fetch_array($result)) 
            { 
              echo 
"this.form.markflash.options[$k] = new Option(\"".$sublist['flashname']."\",\"".$sublist['flashname']."\");\n"
              
$k++; 
            } 
?>
alert("это  " + search + "<?=$number?>");
}
//--> 
</SCRIPT> 

вопрос такой:как сделать запрос $q с использование переменной search т.е.
$q = "SELECT * FROM $table3 WHERE typeflash='search ' ORDER BY flashname ";
знаю что записано неправильно. подскажите как исправить???

   
 
 автор: cheops   (16.11.2006 в 12:50)   письмо автору
 
   для: Spenser   (16.11.2006 в 10:42)
 

На стороне клиента никак. Нужно перегружать страницу, отправляя через GET-параметр значение переменной search и выполнять запрос на сервере с использованием $_GET['search'].

   
 
 автор: ita   (16.11.2006 в 13:48)
 
   для: cheops   (16.11.2006 в 12:50)
 

Попытка номер 2..
не получится у тебя передать переменную так, как ты хочешь.
есть 2 варианта
1. перезагрузка страницы, передача доп параметра..
2. использование Ajax.
по ajax.. как работает в 2х словах.. JS отправляет по http запрос скрипту на сервере, скрипт возвращает результат своей работы(XML,HTML..), JS получает результат работы скрипта. дальше JS меняет что-то на странице.. все. иначе никак.

   
 
 автор: Spenser   (17.11.2006 в 12:10)   письмо автору
 
   для: ita   (16.11.2006 в 13:48)
 

а где можно пример посмотреть про ajax для данной задачи? или если не сложно приведите примет здесь.

   
 
 автор: Spenser   (17.11.2006 в 12:13)   письмо автору
 
   для: cheops   (16.11.2006 в 12:50)
 

а примерчик можно на эту тему?

   
 
 автор: XPraptor   (17.11.2006 в 12:34)   письмо автору
 
   для: Spenser   (17.11.2006 в 12:13)
 

Все запросы выполняются через яваскрипт и php в фоновом режиме без всяких дополнительных элементов (XMLHTTP и прочей лабуды).
Вот держи пример файлов яваскрипта и запроса к нему в фоновом режиме.


Вот код скрипта .js который посылает запросы на твой php файл

url = document.location.href;
xend = url.lastIndexOf("/") + 1;
var base_url = url.substring(0, xend); 
function bgsend (url) {
if (url.substring(0, 4) != 'http') {
url = base_url + url;
}
var jsel = document.createElement('SCRIPT');
jsel.type = 'text/javascript';
jsel.src = url;
document.body.appendChild (jsel);
}

вот функция яваскрипта которая пошлет запрос из твоей формы методом GET на твой файл php

function get_from_php(strsearch){
    var url = 'http://www.site.ru/jvs/search.php?find=' + escape(strsearch);
    bgsend (url);
    return false; //чтобы не отправлять форму в никуда
}

вот так из формы эту функцию вызываешь.
У тебя должен на странице быть элемент ид которого в этом примере равен 'return_code_element'
В него будет вставлен обработанный твоим файлом php текст.

...
<td id="return_code_element">
</td>
<td>
<form name="frm_search" action="" method="GET" onsubmit="return get_from_php(frm_search.strsearch.value);">
<input type="text" name="strsearch">
</form>
</td>

Вот код твоего файла php который обработает запрос и вернет результат в страницу не перегружая ее

if(isset($_GET["find"]) && !empty($_GET["find"]))
{
    $findstring=$_GET["find"];
    //тут делаешь с поиском что хочешь, потом типа весь результат обработки поиска ты присвоил переменной и нужно ее вывести на странице.
?>

el = document.getElementById('return_code_element');

//если у тебя только текст, то просто присваиваешь его

el.innerText = '<?php print addslashes($findstring); ?>';

//а если сложный html код, то всавляеш его методом, но тогда элемент ид которого 'return_code_element' должен быть <td> либо другой поддерживающий вставку html таким методом.

el.insertAdjacentHTML 'afterBegin', '<?php print addslashes($findstring); ?>';
<?php
}



Если где то есть глюки с опечатками или синтаксисом, то сорри, я в блокноте пишу на работе и не могу проверить синтаксис.
Сам подправиш где не точночти, смысл общий ясен думаю.

[поправлено модератором]

   
 
 автор: Spenser   (17.11.2006 в 12:55)   письмо автору
 
   для: XPraptor   (17.11.2006 в 12:34)
 

смысл я понял, только один вопрос остался:
где надо написать вот это (в каком файле):

url = document.location.href; 
xend = url.lastIndexOf("/") + 1; 
var base_url = url.substring(0, xend);  
function bgsend (url) { 
if (url.substring(0, 4) != 'http') { 
url = base_url + url; 

var jsel = document.createElement('SCRIPT'); 
jsel.type = 'text/javascript'; 
jsel.src = url; 
document.body.appendChild (jsel); 


   
 
 автор: XPraptor   (17.11.2006 в 12:59)   письмо автору
 
   для: Spenser   (17.11.2006 в 12:55)
 

это любой .js файл, который ты потом в своих страницах подключаешь в head. Вот так например:
<html>
<head>
<title>...</title>
<meta http-equiv="content-type" content="text/html; charset=windows-1251">
<meta http-equiv="Content-Language" content="ru">
...
<script src="jvs/main.js" type="text/javascript"></script>
</head>
...

   
 
 автор: Spenser   (17.11.2006 в 13:02)   письмо автору
 
   для: XPraptor   (17.11.2006 в 12:59)
 

спасибо! сейчас буду пробывать. если что, то спрошу.в любом случае о результате сообщу :)

   
 
 автор: XPraptor   (17.11.2006 в 13:03)   письмо автору
 
   для: Spenser   (17.11.2006 в 13:02)
 

Функцию get_from_php() тоже можешь пихать ф этот же файл а можешь для разных страниц свои наборы функций создавать.

   
 
 автор: Spenser   (17.11.2006 в 13:19)   письмо автору
 
   для: XPraptor   (17.11.2006 в 12:59)
 

а id="return_code_element" можно поставить и на <select> ?

   
 
 автор: XPraptor   (17.11.2006 в 14:05)   письмо автору
 
   для: Spenser   (17.11.2006 в 13:19)
 

Не помню. Глянь в HTML референсах есть этот метод у SELECT элемента.
Метод - insertAjancedHTL в смысле

   
 
 автор: Jo!   (17.11.2006 в 18:32)   письмо автору
 
   для: XPraptor   (17.11.2006 в 12:34)
 

После присвоения нового значения переменной $findstring в ПХП скрипте, она должна вывестись в элементе формы. Правильно?

Если так, то код не работает

   
 
 автор: XPraptor   (18.11.2006 в 00:24)   письмо автору
 
   для: Jo!   (17.11.2006 в 18:32)
 

Что у тебя не работает? Ты хоть пути поменял в скрипте? Исправил имена файлов которые создал для теста?

   
 
 автор: ita   (20.11.2006 в 10:30)
 
   для: XPraptor   (18.11.2006 в 00:24)
 

код страницы, prototype.js искать в инете.

<script language="JavaScript" src="js/prototype.js"></script>
<script language="JavaScript">
host='http://domain/xml.php';
function XMLGET(){
    var input = $('n');
    var data = 'id='+input.value;
    var newAjax = new Ajax.Request(host,{method: 'get', parameters: data, onComplete: BuildData});

}

function GetText(local, parentElem, index) {
    result = parentElem.getElementsByTagName(local)[index];
    if (result) {
        if (result.childNodes.length > 1) {
            return result.childNodes[1].nodeValue;

        } else {
            return result.firstChild.nodeValue;            
        }
    } else {
        return "n/a";
    }
}

function BuildData(request)
{
    var items = request.responseXML.getElementsByTagName("item");
    resp = GetText("resp", items[0], 0);
    $('result').innerHTML = resp;
}
</script>
<input type="text" onKeyUp="XMLGET()" name="nomer" id="n">
<div id="result"></div>


код xml.php

$xml = '<?xml version="1.0" encoding="windows-1251" standalone="yes"?>';
$xml.= '<item><resp>'.$_GET['id'].'</resp></item>';
header ('Expires: '. gmdate ('D, d M Y H:i:s') .' GMT');
header ('Last-Modified: '. gmdate ('D, d M Y H:i:s') .' GMT');
header ('Cache-Control: no-cache');
header ('Pragma: no-cache');
header ('Content-Type: text/xml');
echo $xml;


в нем.. любые проверки, дапнные на их основе и тд и тп..

[поправлено модератором]

   
Rambler's Top100
вверх

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