Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Надо в ссылку меню адрес считывать из БД в момент перехода. (https://javascript.ru/forum/dom-window/37893-nado-v-ssylku-menyu-adres-schityvat-iz-bd-v-moment-perekhoda.html)

andreydial 13.05.2013 03:21

Надо в ссылку меню адрес считывать из БД в момент перехода.
 
Есть динамически изменяющаяся запись в БД, имя файла. Надо при переходе по ссылке меню организовать считывание из БД это имя файла и потом подставить в ссылку перехода.
Как организовать считывание информации в момент перехода по ссылке?
Раньше, позже считывание не актуально, меню загружается один раз , а имя файла меняется за сессию несколько и все эти изменения должны динамически учитываться в ссылке.
Плиз хелп. Хоть натолкните на мысль.

danik.js 13.05.2013 08:16

А причем тут джаваскрипт? Серверная часть на NodeJS чтоли? Не пэхэпэ ли?

andreydial 13.05.2013 11:59

Есть такая ссылка
<a href="https://maps.google.com/maps?q=http://trademosh.com/Document.kml" target="_blank">MAP</a>
Надо вместо Document.kml подставлять имя файла которое записано в базу. Но оно пишется после загрузки страницы. Имя (и сам файл) формируется в процессе поиска по сайту.
Т е если я просто считываю информацию из БД (обычным кодом php), то получаю имя, которое было сгенерированно в прошлую сессию. А мне его надо считать именно в момент нажатия на ссылку(пункт меню).
Я с трудом представляю как это вообще сделать, вот и подумал, может какой обработчик есть, вряд ли это уникальное задание. Хотя гуглил, не нашел.

dmitriymar 13.05.2013 12:12

History API

danik.js 13.05.2013 13:08

Ну так в чем проблема то?
Так и пиши:
<? $file = get_my_file(); // тут получаешь нужное значение ?>
<a href="https://maps.google.com/maps?q=http://trademosh.com/<?=$file?>" target="_blank">MAP</a>

andreydial 13.05.2013 13:18

проблема в знании :)
Спасибо, сейчас разберусь, а с помощью get_my_file как считать имя из Базы?
У меня имя вот так формируется
mt_srand((double)microtime()*1000000);
	$searchkmlrand = mt_rand();
             $searchkmlrand .= ".kml";
             $searchkml = $searchkmlrand;
	$qr = "UPDATE filekml SET file = '$searchkml' WHERE (`id`='1')";	query($qr, $searchkml); //echo mysql_error();

как прикрутить к обработчику такой файл.
$qr = "SELECT file FROM filekml WHERE id = 1";
     	$resultkml = query($qr);
     	$searchkml2 = mysql_result($resultkml,'file');
	$customkml = $searchkml2;

Извините за скорее всего ламерский вопрос.:help:
Или get_my_file это и будет моя функция обработки запроса к БД?

danik.js 13.05.2013 14:57

Цитата:

Сообщение от andreydial
Или get_my_file это и будет моя функция обработки запроса к БД?

Ну да )

andreydial 13.05.2013 17:40

Сделал вот так
function get_my_file() {
    $qr = "SELECT file FROM filekml WHERE id = 1";
    $resultkml = query($qr);
    $searchkml2 = mysql_result($resultkml,'file');
    $customkml = $searchkml2;
    return $customkml;
    }
?>
<a href="<?php echo LINK_baseUrl.$linckHome?>">Home &nbsp;&nbsp;</a> <a href="https://maps.google.com/maps?q=http://trademosh.com/kml/<? echo $file = get_my_file(); ?>" target="_blank">SEARCH RESULT on MAP</a>


И не работает, все равно старый файл грузит. Хоть убей.
Файл создается правильно, есть проверка в другом месте.

danik.js 13.05.2013 17:47

Ну могу сказать одно: он будет грузить тот файл, который присутствует в таблице на момент запроса и имеет id = 1. Помоему это очевидно. Проблема видимо в логике а не в коде :)

andreydial 13.05.2013 17:54

Цитата:

Сообщение от danik.js (Сообщение 250249)
Ну могу сказать одно: он будет грузить тот файл, который присутствует в таблице на момент запроса и имеет id = 1. Помоему это очевидно. Проблема видимо в логике а не в коде :)

Я уже тоже подумал, может создание файла происходит позже. В любом случае огромное спасибо за помощь. Вектор поиска пока понятен буду копать.

andreydial 13.05.2013 17:59

И все же нет.
Часть кода отправки письма юзеру, который вызывается попапом на той же странице.
// отправка письма по ссытке вверху страницы -------------------------

if ($action=="sendLeter")
{
	$qr = "SELECT file FROM filekml WHERE id = 1";
     	$resultkml = query($qr);
     	$searchkml2 = mysql_result($resultkml,'file');
            $customkml = $searchkml2;

	$text_letter="Send_to_mobile.htm";
	$url = "";
            $title_mess = "";
            $urlkml = "This link contain search map result. Enjoy. $customkml";

И в ней все работает корректно. Т.е. правильно.

danik.js 13.05.2013 18:12

Ну ищи код, который записывает в базу эти самые файлы. Видимо на момент запроса в бд, он еще не записан.

andreydial 13.05.2013 22:45

Цитата:

Сообщение от danik.js (Сообщение 250255)
Ну ищи код, который записывает в базу эти самые файлы. Видимо на момент запроса в бд, он еще не записан.

Если есть возможность, посмотри. Сайт ввв.trademosh.com Главная страница. Внизу есть ссылка Search result on map. Вверху есть линк Share map. Если осуществить поиск по сайту сгенерируется файл случайное_название.kml Внизу линк будет ссылаться на предыдущий файл, а форма отправки письма share map отправит на почту правильный файл (надо только себе мыло отправить и пройти по ссылке). Если не перезагружая страницу еще раз попробовать перейти, то переход будет осуществлен по старому имени. Если перезагрузить страницу то внизу ссылка будет на тот файл который пришел на мыло. Надеюсь не совсем запутанно рассказал.

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

Ниже код генерации контента на сайт после поиска и генерация сабжевого файла. Не сильно нужный код я вырезал.
Кусочек кода механизма поиска:
$qr = "SELECT * FROM markers WHERE   ( ( {$location} ) AND ( {$search} ) AND price BETWEEN {$minPrice} AND {$maxPrice}  ) AND varifMail='Ok' ORDER BY `date` DESC ";
 $data["qr"]= IS_DEBUG===TRUE?$qr:"is debug off";
 $_SESSION['query']=$qr;

кучка кода, затем генерация контента на сайт
if (!empty($isMobile))
{
	//echo "Search result file kml";
	$d = _t::contentAddsMobile($resForData);
}else
{
	//echo "Search result file kml";
	$d = _t::contentAddsDesctop($resForData);

потом еще несколько строк кода, и наконец генерация необходимого файла и его имени
addKML("searched",$address,"","","","","","","",$lon,$lat);
   // End XML file
   //формируем переменную имени кастомного kml файла
   mt_srand((double)microtime()*1000000);
   //$name_kml = mt_srand();
   $searchkmlrand = mt_rand();
   $searchkmlrand .= ".kml";
   $searchkml = $searchkmlrand;

	$qr = "UPDATE filekml SET file = '$searchkml' WHERE (`id`='1')";         //UPDATE filekml SET file = '0' WHERE (`id`='1')
	query($qr, $searchkml); //echo mysql_error();
   endKML($searchkml);
   exit(json_encode($data));

}

danik.js 14.05.2013 05:50

Да че ж ты мозг трахал все это время. У тя поиска на аяксе. Он обновляет содержимое div'а с результатами, а ссылка так и остается старая. Тебе нужно это исправить - передавать вместе с результатами еще и имя файла, и обновлять ссылку.

andreydial 14.05.2013 14:30

Ты говоришь слова,в которых мне понятны только буквы :(.
Подскажи, как мне это исправить, как передавать имя файла и обновлять ссылку. Пожалуста:cray:
Ибо слаб я еще.
Это вот здесь contentAddsMobile(desctop) надо формировать имя файла?

danik.js 14.05.2013 14:48

Надо добавить имя файла в переменную $data. Это на сервере. А на клиенте, в обработчике ответа сервера извлечь имя файла и обновить ссылку.

andreydial 14.05.2013 15:39

вот эта чаcть кода остается без изменений
<a href="https://maps.google.com/maps?q=http://trademosh.com/kml/<? echo $file = get_my_file(); ?>" target="_blank">SEARCH RESULT on MAP</a>



а переменная customkml и функция get_my_file() должна быть там где генерируется $data
function get_my_file() {
	    $qr = "SELECT file FROM filekml WHERE id = 1";
	    $resultkml = query($qr);
	    $searchkml2 = mysql_result($resultkml,'file');
	    $customkml = $searchkml2;
	    return $customkml;
	    }
	?>

Я правильно понимаю?

danik.js 14.05.2013 16:03

Цитата:

Сообщение от andreydial
Я правильно понимаю?

Нет. Перед exit(json_encode($data)) записать в $data $searchkml

Ну типа $data['file'] = $searchkml;

А в js обновлять ссылку, используя полученный file

var href = $('a.maplink').prop('href');
href = href.substring(0, href.lastIndexOf('/')) + file;

$('a.maplink').prop('href', href);

andreydial 14.05.2013 16:23

Огромное спасибо, пока конечно ничего мне непонятно, буду разбираться :write:
Но хотябы понятно куда двигаться.


Часовой пояс GMT +3, время: 20:25.