[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Выборка строки с помощью button
dozent
Доброго времени суток уважаемые коддеры,

Недавно программируя столкнулся с такой проблемой: хотел писать код для выборки строки с помощью кнопки из определенной таблицы на другую страницу с методом POST. Вроде бы сделал все но результат не очень, дэбагов нет но и строка не переносится при клике соответствующей кнопки.


/* Соединяемся, выбираем базу данных */
$dblocation = "localhost";
$dbname = "baza";
$dbuser = "root";
$dbpasswd = "root";
$dbcnx = @mysql_connect($dblocation, $dbuser, $dbpasswd);
if (!$dbcnx)
{
exit("<P align='center'>B настоящий момент <B>сервер</B> базы данных недоступен, отображение страницы невозможно.</Р>");
}
if (!@mysql_select_db($dbname, $dbcnx))
{
exit("<P align='center'>B настоящий момент <B>база данных</B> недоступна, отображение страницы невозможно.</Р>");
}

print "<form name='Rezfrm' action='query_rezerv.php' method='POST' target='_parent'>";

mysql_query('SET CHARSET utf8');
/*считывание данных*/
$query = "select id, fio, gorod, adres, dom, comment from baza.zayavka;";
$result = mysql_query($query) or die("Query failed : " . mysql_error());
$id_ch=$query['id'];

/* Выводим результаты в html */
print "<table bgcolor=#D9E7F2 cellspacing=0 cellpadding=3 border=3 align=left style=\"border-style:solid; border-color:#1A658C\">\n";
print "<tr>";
print "<td style=\"color:#FFFFFF;background-color:#000099;border-style:solid; border-color:#1A658C; border-width:1px;\">ID</td>\n";
print "<td style=\"color:#FFFFFF;background-color:#000099;border-style:solid; border-color:#1A658C; border-width:1px;\">ФИО</td>\n";
print "<td style=\"color:#FFFFFF;background-color:#000099;border-style:solid; border-color:#1A658C; border-width:1px;\">Город</td>\n";
print "<td style=\"color:#FFFFFF;background-color:#000099;border-style:solid; border-color:#1A658C; border-width:1px;\">Адрес</td>\n";
print "<td style=\"color:#FFFFFF;background-color:#000099;border-style:solid; border-color:#1A658C; border-width:1px;\">Дом</td>\n";
print "<td style=\"color:#FFFFFF;background-color:#000099;border-style:solid; border-color:#1A658C; border-width:1px;\">Комментарии</td>\n";
print "<td style=\"color:#FFFFFF;background-color:#000099;border-style:solid; border-color:#1A658C; border-width:1px;\">Изменить</td>\n";
print "</tr>\n";
while ($line = mysql_fetch_array($result, MYSQL_ASSOC)) {
print "<tr>";
foreach ($line as $col_value) {
print "<td style=\"border-style:solid; border-color:#000099; border-width:1px;\">".$col_value."</td>\n";
}
print "<td style=\"border-style:solid; border-color:#000099; border-width:1px;\"><input type='submit' name='".$id_ch."' value='Выбрать'></td>\n";
while ($col<=$num_rows) {
print $col;
$col++;
}
print "</tr>\n";
}
print "</table>\n";

print "</form>";

mysql_free_result($result);

mysql_close($dbcnx);


Страница обрабтчик:

/* Соединяемся, выбираем базу данных */
$dblocation = "localhost";
$dbname = "baza";
$dbuser = "root";
$dbpasswd = "root";
$dbcnx = @mysql_connect($dblocation, $dbuser, $dbpasswd);
if (!$dbcnx)
{
exit("<P align='center'>B настоящий момент <B>сервер</B> базы данных недоступен, отображение страницы невозможно.</Р>");
}
if (!@mysql_select_db($dbname, $dbcnx))
{
exit("<P align='center'>B настоящий момент <B>база данных</B> недоступна, отображение страницы невозможно.</Р>");
}

$id=$_POST['id_ch'];

/* Выполняем SQL-запрос */
$query = "select * from baza.zayavka where id='".$id."';";
$result = mysql_query($query) or die("Query failed : " . mysql_error());

/* Выводим результаты в html */
print "<table bgcolor=#D9E7F2 cellspacing=0 cellpadding=3 border=3 align=left style=\"border-style:solid; border-color:#1A658C\">\n";
print "<tr>";
print "<td style=\"color:#FFFFFF;background-color:#000099;border-style:solid; border-color:#1A658C; border-width:1px;\">ID</td>\n";
print "<td style=\"color:#FFFFFF;background-color:#000099;border-style:solid; border-color:#1A658C; border-width:1px;\">ФИО</td>\n";
print "<td style=\"color:#FFFFFF;background-color:#000099;border-style:solid; border-color:#1A658C; border-width:1px;\">Город</td>\n";
print "<td style=\"color:#FFFFFF;background-color:#000099;border-style:solid; border-color:#1A658C; border-width:1px;\">Адрес</td>\n";
print "<td style=\"color:#FFFFFF;background-color:#000099;border-style:solid; border-color:#1A658C; border-width:1px;\">Дом</td>\n";
print "<td style=\"color:#FFFFFF;background-color:#000099;border-style:solid; border-color:#1A658C; border-width:1px;\">Комментарии</td>\n";
print "</tr>\n";
while ($line = mysql_fetch_array($result, MYSQL_ASSOC)) {
print "<tr >";
foreach ($line as $col_value) {
print "<td style=\"border-style:solid; border-color:#000099; border-width:1px;\">".$col_value."</td>\n";
}
print "</tr>\n";
}
print "</table>\n";

mysql_free_result($result);

mysql_close($dbcnx);


Файл архив вместе с базой "Выборка.rar" загружено на форум. Просмотрите кто сможет и жду ваших рекомендаций.

Заранее thanks



Спустя 30 минут, 10 секунд (29.06.2010 - 14:40) SlavaFr написал(а):
Цитата (dozent @ 29.06.2010 - 11:10)
Вроде бы сделал все но результат не очень, дэбагов нет но и строка не переносится при клике соответствующей кнопки.

ну так инсталируй себе debuger или просто с echo поработай

Спустя 19 минут, 10 секунд (29.06.2010 - 14:59) tomash написал(а):
вот эту строку переделать

input type='submit' value='".$id_ch."' name='id_sh'



Спустя 17 часов, 45 минут, 8 секунд (30.06.2010 - 08:44) dozent написал(а):
tomash

Цитата (tomash @ 29.06.2010 - 11:59)
вот эту строку переделать

input type='submit' value='".$id_ch."' name='id_sh'


ведь присваивание
value='".$id_ch."'
не играет роли здесь по моему, я посредством свойствы
name=""
отправить формой ID строки на другую, а затем обратно считывать с базы по этой ID всю строку.

Спустя 1 час, 25 минут, 34 секунды (30.06.2010 - 10:10) tomash написал(а):
dozent

value='".$id_ch."'
передаем значение в html

name='id_sh'
по этому имени переменная будет искаться в массиве $_POST

Спустя 6 дней, 4 часа, 24 минуты (6.07.2010 - 14:34) dozent написал(а):
tomash

value='".$id_ch."'
передал значение в html

name='id_sh'
по этому имени переменная должна была искаться в массиве $_POST. Но вместо всего этого ничего печатается кроме загаловков таблицы, пробовал печатать
$id=$_POST['id_sh']
- печатается буква s

Спустя 3 минуты, 7 секунд (6.07.2010 - 14:37) dozent написал(а):
SlavaFr

дебаггер тут не причем просто код процедуры в порядке на дебаг, просто считывать всю строку по id переданному методом $_POST не получается.

Спустя 25 минут, 51 секунда (6.07.2010 - 15:03) SlavaFr написал(а):
Цитата (dozent @ 6.07.2010 - 11:37)
SlavaFr

дебаггер тут не причем просто код процедуры в порядке на дебаг, просто считывать всю строку по id переданному методом $_POST не получается.

1)если дебаг непричем, то тогда зачем писать что его нет? Теперь я понимаю, что ты перепутал Баг с Дебагом. К стате мой ответ был самым вежливым который я довал при описании проблемы (Вроде бы сделал все но результат не очень)
2)метода $_POST не существует, есть просто method="post"
3)А дебаггер я бы все ровно посоветовал бы, так как он помогает самаму проблему локализировать http://xdebug.org/.

Спустя 19 часов, 30 минут, 1 секунда (7.07.2010 - 10:33) dozent написал(а):
SlavaFr

Цитата
1)если дебаг непричем, то тогда зачем писать что его нет? Теперь я понимаю, что ты перепутал Баг с Дебагом. К стате мой ответ был самым вежливым который я довал при описании проблемы (Вроде бы сделал все но результат не очень)


Я имел в виду, что все работает без ошибок кроме пустого результата, а за дебаггер брагодарен wink.gif

Уважаемые форумчане вопрос так и остался открытым cool.gif неужели не найдутся оракулы для решения этой проблемы...

Спустя 11 минут, 57 секунд (7.07.2010 - 10:45) linker написал(а):
В первом файле
$query = "select id, fio, gorod, adres, dom, comment from baza.zayavka;";
$result = mysql_query($query) or die("Query failed : " . mysql_error());
$id_ch=$query['id'];

$id_ch=$query['id']; - Что это за конструкция? Переменная $query содержит строку запросы, а вы пытаетесь ей сделать $query['id']
Уберите <form> и POST тут не нужен, как и submit, достаточно кнопки с кодом
<input type="button" value="Выбрать" onclick="parent.location=''query_rezerv.php?id=' . $line['id'] . '">
и использовать $_GET вместо $_POST.

Другой вариант с $_POST.
echo '<input type="submit" value="Выбрать" onclick="document.getElementById('id').value = ' . $line['id'] . '"></td>';
...
echo '<input type="hidden" id="id" name="id" value="0">';
print "</form>";

Спустя 21 день, 1 час, 2 минуты, 16 секунд (28.07.2010 - 11:47) dozent написал(а):
linker,

Решил сделать по другому.... т.е. выбирать не по button -ам а по checkbox -ами. Вставил следующую строку:

<input type="checkbox" name="checkb" id=" . $line['id'] . '>


а в конце таблицы вашу строку:

<input type="button" value="Выбрать" onclick="parent.location=''query_rezerv.php?id=' . $line['id'] . '">


т.е. решил сделать возможность выбора сразу несколькил строк по чекбоксу, но не факт результат cнтаксичсая ошибка с символом '[' не поймью почему.

Спустя 55 минут, 14 секунд (28.07.2010 - 12:42) tomash написал(а):
у вас одинарная кавычка лишняя

Спустя 1 час, 31 минута, 43 секунды (28.07.2010 - 14:14) dozent написал(а):
tomash

Цитата
у вас одинарная кавычка лишняя


всмысле такая строка должна быть:
<input type="button" value="Выбрать" onclick="parent.location='query_rezerv.php?id=' . $line['id'] . '">

Спустя 6 дней, 1 час, 41 минута, 19 секунд (4.08.2010 - 15:55) dozent написал(а):
Неужели нет решения!!!

Хоу сделать все через checkbox-ы... в конце каждой строки после запроса вставляю checkbox, затем в конце кнопку для обработки:

код:
$query = "select id, fio, gorod, adres, dom, comment from baza.zayavka;";
$result = mysql_query($query) or die("Query failed : " . mysql_error());
$id_ch=$query['id'];

/* Выводим результаты в html */
print "<table bgcolor=#D9E7F2 cellspacing=0 cellpadding=3 border=3 align=left style=\"border-style:solid; border-color:#1A658C\">\n";
print "<tr>";
print "<td style=\"color:#FFFFFF;background-color:#000099;border-style:solid; border-color:#1A658C; border-width:1px;\">ID</td>\n";
print "<td style=\"color:#FFFFFF;background-color:#000099;border-style:solid; border-color:#1A658C; border-width:1px;\">ФИО</td>\n";
print "<td style=\"color:#FFFFFF;background-color:#000099;border-style:solid; border-color:#1A658C; border-width:1px;\">Город</td>\n";
print "<td style=\"color:#FFFFFF;background-color:#000099;border-style:solid; border-color:#1A658C; border-width:1px;\">Адрес</td>\n";
print "<td style=\"color:#FFFFFF;background-color:#000099;border-style:solid; border-color:#1A658C; border-width:1px;\">Дом</td>\n";
print "<td style=\"color:#FFFFFF;background-color:#000099;border-style:solid; border-color:#1A658C; border-width:1px;\">Комментарии</td>\n";
print "<td style=\"color:#FFFFFF;background-color:#000099;border-style:solid; border-color:#1A658C; border-width:1px;\">Изменить</td>\n";
print "</tr>\n";
while ($line = mysql_fetch_array($result, MYSQL_ASSOC)) {
print "<tr>";
foreach ($line as $col_value) {
print "<td style=\"border-style:solid; border-color:#000099; border-width:1px;\">".$col_value."</td>\n";
}
print "<td style=\"border-style:solid; border-color:#000099; border-width:1px;\"><input type=\"checkbox\" id=\".$line['id'].\"></td>\n";
print "</tr>\n";
print "<tr>";
print "<td colspan=\"7\" style=\"border-style:solid; border-color:#000099; border-width:1px;\"><input type="button" value="Выбрать" onclick="parent.location=''query_rezerv.php?id=' . $line['id'] . '"></td>\n";
print "</tr>\n";
}
print "</table>\n";


Короче запутался конкретно, отзовитесь граждане коддеры с развязкой проблема не понимаю где ошибка dry.gif

Спустя 2 часа, 37 минут, 26 секунд (4.08.2010 - 18:33) Michael написал(а):
print "<td colspan=\"7\" style=\"border-style:solid; border-color:#000099; border-width:1px;\"><input type=\"button\" value=\"Выбрать\" onclick=\"document.location='query_rezerv.php?id={$line['id']}'\"></td>\n";

Спустя 2 часа, 57 минут, 10 секунд (4.08.2010 - 21:30) linker написал(а):
print "<td style=\"border-style:solid; border-color:#000099; border-width:1px;\"><input type=\"checkbox\" id=\".$line['id'].\"></td>\n";
переписать
print '<td style="border-style:solid; border-color:#000099; border-width:1px;"><input type="checkbox" id="' . $line['id'] . '"></td>';
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.