Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Получение значения (https://javascript.ru/forum/jquery/51014-poluchenie-znacheniya.html)

Kloniy 21.10.2014 00:00

Получение значения
 
<script type="text/javascript">
        $(document).ready( function() {
            // обрабатываем событие нажатия на любую из ссылок
            
                        
            // обрабатываем событие нажатия на кнопку "Сохранить изменения""
            $('input[name=addArticle]').click( function () {
               
                
                var s_id = $(this).attr("id");
 
                var nan = $("#nan").text();
                var datas = $("#datas").text();
                
                var names = $("#names").text();
                
                
                
 
                $.ajax({
                    type: "POST",
                   
                    url: "http://localhost/zzzzz/addArticle.php",
                    data: "s_id=" + s_id
                    + "&names=" + names
                    + "&nan=" + nan
                    + "&datas=" + datas,
 
                   
                    success: function(response) {
                        if(response == "OK")
                        {
                            alert("Запись " + names + " добавлена!");
                            location.reload();
                        }
                        else
                            alert("Ошибка в запросе!);
                    }
                });
    
                
            });
        });
        </script>

Из БД выводится список

$connect = mysql_connect("localhost", ".....", ".....");
            mysql_select_db("textx",$connect);
            $qr_result = mysql_query("select * from ttttex");
            
            echo '<table border="1">';
            echo '<thead>';
            echo '<tr>';
            echo '<th></th>';
            echo '<th>Название</th>';
            echo '<th>Сумма</th>';
            echo '<th>Длительность</th>';
            echo '<th></th>';
            echo '</tr>';
            echo '</thead>';
            echo '<tbody>';
            
            while ($data = mysql_fetch_array($qr_result)){
                echo '<tr>';
                echo '<td><span ><img border=0 src='.$data['img'].'></span></td>';
                echo '<td><span id="names" >' .$data['name'] . '</span></td>';
                echo '<td><span id="sum">'.$data['summa'] . '</span></td>';
                echo '<td><span id="datas">' .$data['date_s'] . '</span></td>';
                echo '<td><input type="button" id='.$data['id'].' name="addArticle" value="Подписать"></td>'; 
                
                
                echo '</tr>';
            }
            echo '</tbody>';
            echo '</table>';


Как получить эти три переменные, для выбранной записи?

var nan = $("#nan").text();
                var datas = $("#datas").text();
                
                var names = $("#names").text();

В маем варианте в переменные nan, datas, names попадают первые первые значения из списка, а надо чтобы попадали соответствующие выборному элементу из списка

danik.js 21.10.2014 00:17

Цитата:

Сообщение от Kloniy
while ...<span id="names" >

Опаньки. Нарушаем?

http://htmlbook.ru/html/attr/id :
Цитата:

Идентификатор в коде документа должен быть в единственном экземпляре, иными словами, встречаться только один раз.
Если пренебрегаешь такими правилами, как можешь рассчитывать на адекватную работу скрипта? Замени id на классы. Но дело не только в этом.

Добавь код:
var row = $(this).closest('tr');

И далее уже используй $('.names', row).text() и тп

рони 21.10.2014 00:19

Kloniy,
а id сделать разные не судьба?
по клику найти ближайшую строку и по ней делать выборку

Vlasenko Fedor 21.10.2014 00:39

И я дам совет. Переходи на PDO сразу.
И не стоит писать 10 раз echo
Это безграмотно :cray:
$html = 'a';
$html .= 'b';
$html .= 'c';
echo $html;

И да с echo прекрасно работает запятая :haha:
так что можно и так, это лучше чем конкатенация(сложение), быстрее
echo 'a', 'b', 'c';

danik.js 21.10.2014 00:50

Вообще писать html в php-строках - это безграмотно ))

Вот в моем понимании читаемый код:
<?

$connect = mysql_connect("localhost", ".....", ".....");
mysql_select_db("textx",$connect);
$qr_result = mysql_query("select * from ttttex");

?>

<table border="1">
<thead>
    <tr>
        <th></th>
        <th>Название</th>
        <th>Сумма</th>
        <th>Длительность</th>
        <th></th>
    </tr>
</thead>
<tbody>
<? while ($data = mysql_fetch_array($qr_result)){ ?>
    <tr>
        <td><span ><img border=0 src="<?= $data['img'] ?>"></span></td>
        <td><span id="names"><?= $data['name'] ?></span></td>
        <td><span id="sum"><?= $data['summa'] ?></span></td>
        <td><span id="datas"><?= $data['date_s'] ?></span></td>
        <td><input type="button" id="<?= $data['id'] ?>" name="addArticle" value="Подписать"></td>
    </tr>
<? } ?>
</tbody>
</table>


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

danik.js 21.10.2014 00:52

Цитата:

Сообщение от danik.js
<table border="1">

Вот тут этот атрибут в тему.
Цитата:

Сообщение от danik.js
<img border=0

А тут - уже нафиг не нужен.

Vlasenko Fedor 21.10.2014 01:03

Цитата:

Вот в моем понимании читаемый код
увы это не так здесь спутан код модели и представления если брать идеологию MVC
а по сути код для работы с базой данных нужно вынести в отдельный класс

danik.js 21.10.2014 04:32

Poznakomlus,
Цитата:

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

Но код не особо то и спутан. Он даже визуально отделен. Иногда незачем городить "ЭмьВиСи", если не планируется расширение сайта.


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