Получение значения value скрытого поля при клике по ссылке

Обсуждение серверного программирования.

Модераторы: Duncon, Yurich

CrazyArchi
Сообщения: 7
Зарегистрирован: 05 апр 2014, 00:04

05 апр 2014, 00:36

Здравствуйте, в данном коде есть основной блок div, в который можно добавлять дополнительные блоки с текстами. Вот картинка того, что получается Изображение.
Вот сам код, который использую

это код главной странички index.php

Код: Выделить всё

<html>
    <head>
        <meta charset="UTF-8">
        <LINK rel="stylesheet" href="MyStyle.css" type="text/css">
        <title></title>
    </head>
    <body>
        <div id="main">
                   
        <?php 
   $id=0;     
        
    echo '<h1>Блок для постов</h1>';  
   
        require_once 'login.php';
$db_server=  mysql_connect($db_hostname, $db_username, $db_password);
if (!$db_server) {
    die("Что-то не получается подключиться к базе данных" . mysql_error());
}
mysql_select_db($db_database) or die('Невозможно найти базу данных');

/*mysql_query ("SET NAMES utf8");
mysql_query ("set character_set_client='utf8'");
mysql_query ("set character_set_results='utf8'");
mysql_query ("set collation_connection='utf8_general_ci'");*/

$query="CREATE TABLE IF NOT EXISTS authors("
        . "id SMALLINT NOT NULL AUTO_INCREMENT,"
        . "Author_name VARCHAR(20) NOT NULL,"
        . "Author_mail VARCHAR(50) NOT NULL,"
        . "PRIMARY KEY(id))";
if (!mysql_query($query, $db_server))
 {  echo "Не создалась таблица authors". mysql_error();}
 
 
$query="CREATE TABLE IF NOT EXISTS text("
        . "Author_id SMALLINT NOT NULL,"
        . "Author_text TEXT NOT NULL,"
        . "Create_date DATETIME NOT NULL,"
        . "id SMALLINT NOT NULL AUTO_INCREMENT,"
        . "PRIMARY KEY(id))";

if (!mysql_query($query, $db_server)) 
{  echo "Не создалась таблица text". mysql_error();}


$query= "SELECT * FROM text ORDER BY Create_date DESC"; 
 
$result=mysql_query($query, $db_server);
if (!$result) 
{  echo "Сбой при вставке данных";}

$rows=  mysql_num_rows($result);

for ($j=0; $j<$rows; ++$j)
{$row= mysql_fetch_row($result);

$query="SELECT Author_name FROM authors WHERE id=$row[0]";
$author = mysql_fetch_row(mysql_query($query));

$set='div-$row[3]';

 echo "
<div id='$set' class=poster>
            <p>$row[1]</p>

<input type='hidden' name='$set' value='$row[3]'>

<h4><a href='#repost_form'>Редактировать</a> | <a>Комментировать</a></h4>
<hr><h5>
Автор поста: <i>$author[0]</i>

Пост был создан: <i>$row[2]</i>
 </h5></div>";
}

?>
            </div>
        <div id="left">
            <a class="create" href="#create_form">Создать пост</a> 
          
        </div>
        
        <div id="create_form" class="cF">
            <div>
                <form id="crForm" method="POST" action="create_post.php"> <pre>
                 Имя <input type="text" name="Author_name">
   Электронная почта <input type="text" name="Author_mail">

         Текст поста 
 <textarea class="area" name="Author_text"
cols="90" rows="20"></textarea>


        <input type="submit" value="Подтвердить" name="confirm"></pre></form>
        <a class="a_form" href="#"
               onclick="document.getElementById(create_form).style.display='none';">Закрыть [Х]</a>      
                
            </div>
            
        </div>
        
        
        <div id="repost_form" class="cF">
            <div>
                <form id="crForm" method="POST" action="repost.php"> <pre>
                 Имя <input type="text" name="Author_name">
   Электронная почта <input type="text" name="Author_mail">
$id
         Текст поста 
 <textarea class="area" name="Author_text"
cols="90" rows="20"></textarea>


        <input type="submit" value="Подтвердить" name="confirm"></pre></form>
        <a class="a_form" href="#"
               onclick="document.getElementById(create_form).style.display='none';">Закрыть [Х]</a>      
                
            </div>
            
        </div>
        
    </body>
</html>
Аватара пользователя
Duncon
Сообщения: 1974
Зарегистрирован: 10 окт 2004, 14:11
Откуда: Питер
Контактная информация:

05 апр 2014, 00:50

onclick="alert(document.getElementById('id').value);return false"
[syntax=Delphi] [/syntax]
CrazyArchi
Сообщения: 7
Зарегистрирован: 05 апр 2014, 00:04

05 апр 2014, 01:23

Извиняюсь за неполную тему, но в первое сообщение вся тема не поместилась)
Вот продолжение...
теперь код файла create_post.php

Код: Выделить всё

<?php

require_once 'login.php';
$db_server=  mysql_connect($db_hostname, $db_username, $db_password);
if (!$db_server) {
    die("Что-то не получается подключиться к базе данных" . mysql_error());
}
mysql_select_db($db_database) or die('Невозможно найти базу данных');

if (isset($_POST['Author_name'])&&
    isset($_POST['Author_mail'])&&
    isset($_POST['Author_text']))


{
  $Author_name=get_post('Author_name');
  $Author_mail=get_post('Author_mail');
  $Author_text=get_post('Author_text');
 }
 
//вставка в таблицу forblog базы данных
$query= "INSERT INTO authors (Author_name, Author_mail) VALUES"
        . "('$Author_name', '$Author_mail')";

if (!mysql_query($query, $db_server)) 
{  echo "Сбой при вставке данных". mysql_error();}
$Author_id=mysql_insert_id();

$date=  date('Y-m-d H:i:s');
$query= "INSERT INTO text VALUES"
        . "($Author_id,'$Author_text','$date',NULL)";

if (!mysql_query($query, $db_server)) 
{  echo "Сбой при вставке данных". mysql_error();}


mysql_close($db_server);

function get_post($var)
{
    return mysql_real_escape_string($_POST[$var]);
}

header ('Location: index.php');
exit(); 
Файлик repost.php еще в стадии разработки

Код: Выделить всё

<?php

require_once 'login.php';
$db_server=  mysql_connect($db_hostname, $db_username, $db_password);
if (!$db_server) {
    die("Что-то не получается подключиться к базе данных" . mysql_error());
}
mysql_select_db($db_database) or die('Невозможно найти базу данных');

$id = $_POST['id'];
echo "$id";

$query="SELECT Author_text FROM text WHERE id=$id";
$text = mysql_fetch_row(mysql_query($query)); 
Здесь все работает хорошо. Блоки создаются без проблем и добавляются. Но вот когда я хочу редактировать какой-нибудь из блоков, мне нужно будет значение VALUE из скрытого поля, в которое я поместил номер id. С этим id я смогу извлечь текст с базы данных и вставить его в новой форме в текстовое поле, чтобы пользователь смог его отредактировать. Беда только в том, что не знаю как это осуществить.

Если можно, помогите кусочком кода, буду очень благодарен.
Теперь все влезло)


onclick="alert(document.getElementById('id').value);return false"
Я так понимаю, что данный код вставляется в тег <a> и по клику, если я знаю id скрытого поля, он должен будет вернуть мне значение переменной value?
Если так, то мне это не подойдет, так как я не знаю id скрытого поля. Нужно как-то получить значение исходя из того, что данная ссылка также принадлежит блоку, в котором находится скрытое поле.
Если не прав, то прошу прощения.)
Аватара пользователя
Duncon
Сообщения: 1974
Зарегистрирован: 10 окт 2004, 14:11
Откуда: Питер
Контактная информация:

05 апр 2014, 01:53

Можно взять parentNode и перебрать объекты на вопрос нахождения поля. Но что мешает дать этому полю идентификатор при генерации страницы?
[syntax=Delphi] [/syntax]
CrazyArchi
Сообщения: 7
Зарегистрирован: 05 апр 2014, 00:04

05 апр 2014, 11:29

Duncon писал(а):Можно взять parentNode и перебрать объекты на вопрос нахождения поля. Но что мешает дать этому полю идентификатор при генерации страницы?

идентификатор создается автоматически

Код: Выделить всё

$set='div-'.$row[3]; 
, где $row[3] - это у меня автоинкримент в базе данных таблицы, содержащей текст. Я не знаю, как записать код, чтоб по нажатию обратиться к скрытому полю. Ведь если записать,

Код: Выделить всё

<a href='#repost_form' onclick='
(document.getElementsByID('id').value);
'>Редактировать</a>  
то какой id мне писать?)
Вот чего не могу понять.
Аватара пользователя
Duncon
Сообщения: 1974
Зарегистрирован: 10 окт 2004, 14:11
Откуда: Питер
Контактная информация:

05 апр 2014, 11:55

Тот id который при генерации задаётся полю, его же прописать к ссылке.. Не понимаю в чём сложность..
<input type='hidden' name='$set' value='$row[3]'> тут вмето name или к дополнению к нему пишем id='$set' проследите чтоб он был уникальным
<a href='#repost_form' onclick='document.getElementsByID('$set').value;'>Редактировать</a>
[syntax=Delphi] [/syntax]
CrazyArchi
Сообщения: 7
Зарегистрирован: 05 апр 2014, 00:04

05 апр 2014, 12:46

Предположим, что я создал 15 блоков, и у каждого скрытого поля в этих блоках свой уникальный id и value. И если я нажму, например, на ссылку 7-ого блока "редактировать", то при коде

Код: Выделить всё

<a href='#repost_form' onclik='$id=(document.getElementById($set).value)'>Редактировать</a>
он запишет значение value в id именно этого блока по которому я кликал?
Аватара пользователя
Duncon
Сообщения: 1974
Зарегистрирован: 10 окт 2004, 14:11
Откуда: Питер
Контактная информация:

05 апр 2014, 14:53

да, наверное, id уникальные главное чтоб были везде..
[syntax=Delphi] [/syntax]
CrazyArchi
Сообщения: 7
Зарегистрирован: 05 апр 2014, 00:04

05 апр 2014, 15:26

Вот тут то и начинается моя проблемка. Я не могу написать код, чтобы по клике на ссылку передать значение скрытого поля value в div блок с id=repost_rorm.
Не огли б вы помочь с кодом? Буду дико признателен). Блок, на котором находится ссылка "редактировать" и блок с текстовым полем, куда потом (если удастся получить id) через БД будет вставляться текст находятся в одном файле index.php. Вот код:

Код: Выделить всё

<!DOCTYPE html>

<html>
    <head>
        <meta charset="UTF-8">
        <LINK rel="stylesheet" href="MyStyle.css" type="text/css">
        <title></title>
    </head>
    <body>
        <div id="main">
                   
        <?php 
   $id=0;     
        
    echo '<h1>Блок для постов</h1>';  
   
        require_once 'login.php';
$db_server=  mysql_connect($db_hostname, $db_username, $db_password);
if (!$db_server) {
    die("Что-то не получается подключиться к базе данных" . mysql_error());
}
mysql_select_db($db_database) or die('Невозможно найти базу данных');

$query="CREATE TABLE IF NOT EXISTS authors("
        . "id SMALLINT NOT NULL AUTO_INCREMENT,"
        . "Author_name VARCHAR(20) NOT NULL,"
        . "Author_mail VARCHAR(50) NOT NULL,"
        . "PRIMARY KEY(id))";
if (!mysql_query($query, $db_server))
 {  echo "Не создалась таблица authors". mysql_error();}
 
 
$query="CREATE TABLE IF NOT EXISTS text("
        . "Author_id SMALLINT NOT NULL,"
        . "Author_text TEXT NOT NULL,"
        . "Create_date DATETIME NOT NULL,"
        . "id SMALLINT NOT NULL AUTO_INCREMENT,"
        . "PRIMARY KEY(id))";

if (!mysql_query($query, $db_server)) 
{  echo "Не создалась таблица text". mysql_error();}


$query= "SELECT * FROM text ORDER BY Create_date DESC"; 
 
$result=mysql_query($query, $db_server);
if (!$result) 
{  echo "Сбой при вставке данных";}

$rows=  mysql_num_rows($result);

for ($j=0; $j<$rows; ++$j)
{$row= mysql_fetch_row($result);

$query="SELECT Author_name FROM authors WHERE id=$row[0]";
$author = mysql_fetch_row(mysql_query($query));

$set='div-'.$row[3];

 echo "
<div id='gh' class=poster>
            <p>$row[1]</p>

<input type='hidden' id='$set' value='$row[3]'>

<h4><a href='#' 
onclick='$id=document.getElementById('$set').value;    
'>Редактировать</a> | <a>Комментировать</a></h4>
<hr><h5>
Автор поста: <i>$author[0]</i>

Пост был создан: <i>$row[2]</i>
 </h5></div>";
}

?>
            </div>
        <div id="left">
            <a class="create" href="#create_form">Создать пост</a> 
          
        </div>
        
        <div id="create_form" class="cF">
            <div>
                <form id="crForm" method="POST" action="create_post.php"> <pre>
                 Имя <input type="text" name="Author_name">
   Электронная почта <input type="text" name="Author_mail">

         Текст поста 
 <textarea class="area" name="Author_text"
cols="90" rows="20"></textarea>


        <input type="submit" value="Подтвердить" name="confirm"></pre></form>
        <a class="a_form" href="#"
               onclick="document.getElementById(create_form).style.display='none';">Закрыть [Х]</a>      
                
            </div>
            
        </div>
        
        
        <div id="repost_form" class="cF">
            <div>
                <form id="crForm" method="POST" action="repost.php"> <pre>
                 Имя <input type="text" name="Author_name">
   Электронная почта <input type="text" name="Author_mail">

         Текст поста 
 <textarea class="area" name="Author_text"
cols="90" rows="20"></textarea>


        <input type="submit" value="Подтвердить" name="confirm"></pre></form>
        <a class="a_form" href="#"
               onclick="document.getElementById(create_form).style.display='none';">Закрыть [Х]</a>      
                
            </div>
            
        </div>
        
    </body>
</html>
Аватара пользователя
Duncon
Сообщения: 1974
Зарегистрирован: 10 окт 2004, 14:11
Откуда: Питер
Контактная информация:

05 апр 2014, 15:43

Не очень понимаю, в блок передать что значит, заменить всё и вставить туда значение или передать в блок полю..
[syntax=Delphi] [/syntax]
Ответить