Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   получение id строки и передача значения переменной php (https://javascript.ru/forum/jquery/42433-poluchenie-id-stroki-i-peredacha-znacheniya-peremennojj-php.html)

msscriin 26.10.2013 09:35

получение id строки и передача значения переменной php
 
таблица полученная из БД таким образом:

$query1 = 'select * from client';
$res=mysql_query($query1);
$fields = mysql_num_fields($res);
$i=0;
echo "<table id='tab1' border=2 width=100% height='80px'>";

echo "<thead><tr>";
 while ($i<$fields) {
	$name = mysql_field_name($res, $i);
	$len = mysql_field_len($res, $i);
	echo "<td> ".$name."</td>";
	$i++;
	}
 echo "</thead></tr>";
 echo "<tbody>";
 while ($row=mysql_fetch_array($res)){
    echo ('<tr id='.$row['uid'].'><td>'.$row['uid'].'</td><td>'.$row['Surname'].'</td><td>'.$row['Name'].'</td>
 	<td>'.$row['Otchestvo'].'</td><td>'.$row['tlf'].'</td><td>'.$row['street'].'</td><td>'.$row['home'].'</td>
 	<td>'.$row['kv'].'</td></tr>');
  }

 	echo "</tbody></table>";


из этой таблицы нужно получить id строки на которую кликнули мышкой, пробовал реализовать при помощи jquery вот так:

$(function () {

     $("table#tab1 tbody tr").click(function(){
    var title = $(this).attr("id");
    alert(title);
    $.post( 'index.php', {'dat':title}, function(ok){
     alert(ok);
       myWin= open("opn.php", "displayWindow",
    "width=400,height=300,status=no,toolbar=no,menubar=no");
     });

    });
});


при клике на строку появляется сообщение с нужным мне id и в приципе все прекрасно но проблема вот в чем:
alert(title);
в title определяется значение id строки на которую кликнули, судя по всплывающему окошку все работает, но передать значение переменной title в переменную $dat методом POST не получается, php пишет что переменная пуста, если конкретнее думаю что загвоздка вот здесь:

$.post( 'index.php', {'dat':title}, function(ok){
     alert(ok);


либо я совсем делаю не то, либо что то недоделываю, как это исправить? или как можно реализовать задачу получения данных ячейки на которую кликнули и потом передать эти данные в переменную php? :help:

danik.js 26.10.2013 10:37

Цитата:

Сообщение от msscriin
title в переменную $dat методом POST не получается

А с какой стати? Если только register_globals >> on ?
Получай так:
$dat = isset($_POST['dat']) ? $_POST['dat'] : 'почему-то не передали dat';

msscriin 26.10.2013 10:52

Цитата:

Сообщение от danik.js (Сообщение 278173)
А с какой стати? Если только register_globals >> on ?
Получай так:
$dat = isset($_POST['dat']) ? $_POST['dat'] : 'почему-то не передали dat';

не работает, переменной по прежнему нет :( либо я туплю и делаю не то что надо :(

danik.js 26.10.2013 12:15

Цитата:

Сообщение от msscriin
не работает

Что именно не работает? Если хочешь вернуть значение обратно браузеру, так и пиши:
$dat = isset($_POST['dat']) ? $_POST['dat'] : 'почему-то не передали dat';
echo $dat;


Также открой вкладку сеть в отладчике браузера и наблюдай за запросом.

msscriin 26.10.2013 12:26

в общем задача такая переменная $dat это параметр запроса к базе данных по которому будет загружаться определенная строка соответствующая номеру строки в БД т.е

select * from client where uid='.$dat.'

номер строки который jquery показывает в сообщении при клике на строку в таблице в браузере, соответствует уникальному id клиента uid.

<tr id='.$row['uid'].'>

т.е нужно что бы этот номер который jquery определил при клике на строку, передавался в переменную php $dat и потом в запросе участвовал как параметр для загрузки данных из БД, вот...

msscriin 26.10.2013 13:45

а можно как-нибудь по другому реализовать эту задачу в целом, т.е при клике на строку получить ее id и эти данные передать в php переменную?

danik.js 26.10.2013 14:15

Самое простое и подходящее решение:
Повесить обработчик клика на все tr. По клику получать id и отправлять post-запросом. Если на сайте подключена либа jquery то это делается через click() и $.post() соответственно. Чем не устраивает это решение?

danik.js 26.10.2013 14:17

Цитата:

Сообщение от msscriin
а можно как-нибудь по другому реализовать эту задачу в целом

Можно например пересылать серверу координаты клика и размеры окна браузера, а на сервере моделировать страницу и по координатам находить id строки. Как тебе такой вариант?

Ну или если ищешь способ чуть по-проще, можешь например слать переменную через веб-сокет ну или придумать еще какой изврат. Ты поставил себе цель усложнить решение задачи, верно?

msscriin 26.10.2013 14:34

Цитата:

Сообщение от danik.js (Сообщение 278190)
Самое простое и подходящее решение:
Повесить обработчик клика на все tr. По клику получать id и отправлять post-запросом. Если на сайте подключена либа jquery то это делается через click() и $.post() соответственно. Чем не устраивает это решение?

на самом деле я рад любому решению только бы работало) усложнить решение задачи нееет, это явно не то что мне нужно на данный момент, в будущем я планирую заняться полным изучением и javascript и jquery и php
и тд на сколько сил хватит в общем, почему не сделать сперва ведь это было бы логично, просто сейчас поджимает время и нужно решить эту задачу любым способом, но понимания практически ноль, я думаю что знаю за что отвечает каждая строка кода но не уверен правильно ли я понимаю принцип работы во первых, во вторых не понимаю почему не получается, либо все что вы говорите я понимаю не правильно соответственно делаю что попало, по моему мнению должно быть что то типо такого:

"загрузилась страница -> пользователь кликнул на строку -> произошло событие jquery -> определилась строка на которое произошло событие -> id строки записывается в переменную -> данные переменной записываются в переменную на php -> данные переменной которые передавались из jquery сохранились в переменной php -> страница обнавилась переменная php имеет значение id строки на которую кликнул пользователь"

поправьте если не так, но как реализовать этот алгоритм я не знаю, тот который я предложил не работает, почему я тоже не знаю, может быть потому что каким то образом нужно обновить страницу, т.к данные передаются после того как все переменные на php уже загружены и jquery посылает эти данные а в php они не сохраняются, может быть это или нет?

danik.js 26.10.2013 15:00

Цитата:

Сообщение от msscriin
данные переменной записываются в переменную на php

Не совсем так. Значение переменной передается на сервер через POST или GET запрос. А скрипт на сервере получает его и что-то с ним делает.
Цитата:

Сообщение от msscriin
страница обнавилась переменная php имеет значение id строки на которую кликнул пользователь

Страница обновилась? А зачем тогда делать асинхронный запрос? И что должно дать обновление страницы? Отображается другой контент? Тогда это не $.post, а отправка формы или просто редирект.


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