Надо в ссылку меню адрес считывать из БД в момент перехода.
Есть динамически изменяющаяся запись в БД, имя файла. Надо при переходе по ссылке меню организовать считывание из БД это имя файла и потом подставить в ссылку перехода.
Как организовать считывание информации в момент перехода по ссылке? Раньше, позже считывание не актуально, меню загружается один раз , а имя файла меняется за сессию несколько и все эти изменения должны динамически учитываться в ссылке. Плиз хелп. Хоть натолкните на мысль. |
А причем тут джаваскрипт? Серверная часть на NodeJS чтоли? Не пэхэпэ ли?
|
Есть такая ссылка
<a href="https://maps.google.com/maps?q=http://trademosh.com/Document.kml" target="_blank">MAP</a> Надо вместо Document.kml подставлять имя файла которое записано в базу. Но оно пишется после загрузки страницы. Имя (и сам файл) формируется в процессе поиска по сайту. Т е если я просто считываю информацию из БД (обычным кодом php), то получаю имя, которое было сгенерированно в прошлую сессию. А мне его надо считать именно в момент нажатия на ссылку(пункт меню). Я с трудом представляю как это вообще сделать, вот и подумал, может какой обработчик есть, вряд ли это уникальное задание. Хотя гуглил, не нашел. |
History API
|
Ну так в чем проблема то?
Так и пиши: <? $file = get_my_file(); // тут получаешь нужное значение ?> <a href="https://maps.google.com/maps?q=http://trademosh.com/<?=$file?>" target="_blank">MAP</a> |
проблема в знании :)
Спасибо, сейчас разберусь, а с помощью 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 это и будет моя функция обработки запроса к БД? |
Цитата:
|
Сделал вот так
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 </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> И не работает, все равно старый файл грузит. Хоть убей. Файл создается правильно, есть проверка в другом месте. |
Ну могу сказать одно: он будет грузить тот файл, который присутствует в таблице на момент запроса и имеет id = 1. Помоему это очевидно. Проблема видимо в логике а не в коде :)
|
Цитата:
|
И все же нет.
Часть кода отправки письма юзеру, который вызывается попапом на той же странице. // отправка письма по ссытке вверху страницы ------------------------- 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"; И в ней все работает корректно. Т.е. правильно. |
Ну ищи код, который записывает в базу эти самые файлы. Видимо на момент запроса в бд, он еще не записан.
|
Цитата:
Это я к тому что код файлик то записал, а считывания не происходит. Ниже код генерации контента на сайт после поиска и генерация сабжевого файла. Не сильно нужный код я вырезал. Кусочек кода механизма поиска: $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)); } |
Да че ж ты мозг трахал все это время. У тя поиска на аяксе. Он обновляет содержимое div'а с результатами, а ссылка так и остается старая. Тебе нужно это исправить - передавать вместе с результатами еще и имя файла, и обновлять ссылку.
|
Ты говоришь слова,в которых мне понятны только буквы :(.
Подскажи, как мне это исправить, как передавать имя файла и обновлять ссылку. Пожалуста:cray: Ибо слаб я еще. Это вот здесь contentAddsMobile(desctop) надо формировать имя файла? |
Надо добавить имя файла в переменную $data. Это на сервере. А на клиенте, в обработчике ответа сервера извлечь имя файла и обновить ссылку.
|
вот эта ча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; } ?> Я правильно понимаю? |
Цитата:
Ну типа $data['file'] = $searchkml; А в js обновлять ссылку, используя полученный file var href = $('a.maplink').prop('href'); href = href.substring(0, href.lastIndexOf('/')) + file; $('a.maplink').prop('href', href); |
Огромное спасибо, пока конечно ничего мне непонятно, буду разбираться :write:
Но хотябы понятно куда двигаться. |
Часовой пояс GMT +3, время: 00:39. |