Ломаю голову вот над какой задачкой.
Есть у меня таблица otpravki (id, office, predstavitel, tel). записей до 50.
Нужно как-то сообразить такую страничку на которой они все отображались бы, а рядышком были чекбоксы.
Выбрал нужные офисы галочками. Нажал кнопочГу и сформировалась страничка только с выбранными офисами.
Как я понимаю. Это будет не просто страничка, а форма со всеми этими офисами + чекбоксы.
Но как передать в другую страничку данные, какие офисы я выбрал?
Подскажите пожалуйста.
П.С. Может мой вариант и не верен. Может вы чего мудрого подскажите.
Зарание благодарю.
Спустя 45 минут, 58 секунд (28.09.2012 - 17:27) killer8080 написал(а):
Цитата (WisesT @ 28.09.2012 - 16:41) |
Но как передать в другую страничку данные, какие офисы я выбрал? |
Ты же сам сказал, чекбоксами
Спустя 17 минут, 20 секунд (28.09.2012 - 17:44) WisesT написал(а):
Ну, HTML часть - вроде как не проблема.
А вот РНР часть... как сформировать, как передать...
Да и это ж еще как-то правильно эту страницу с чекбоксами нужно сформировать.
А вот РНР часть... как сформировать, как передать...
Да и это ж еще как-то правильно эту страницу с чекбоксами нужно сформировать.
Спустя 3 дня, 19 часов, 45 минут, 44 секунды (2.10.2012 - 13:30) WisesT написал(а):
Подскажите хотяб что нужно для начала. Или в какую сторону правильно выгуглить)
Спустя 2 часа, 35 минут, 36 секунд (2.10.2012 - 16:06) killer8080 написал(а):
Цитата (WisesT @ 2.10.2012 - 13:30) |
Или в какую сторону правильно выгуглить) |
Чего тут гулить? Сделал запрос к таблице, и вывел содержимое циклом, формируя нужный html.
Спустя 1 минута, 57 секунд (2.10.2012 - 16:08) m4a1fox написал(а):
WisesT
Эээээээ $_POST? Чет я запутался. Давай конкретнее.
P.S. И еще. Не имей такой привычки, именовать таблицы в БД кириллическими словами, но написанными на латиницы. Не есть гуд. Если таблица называется "отправки", то назови ее - "dispatches", или если слово сложное, то просто "send".
Эээээээ $_POST? Чет я запутался. Давай конкретнее.
P.S. И еще. Не имей такой привычки, именовать таблицы в БД кириллическими словами, но написанными на латиницы. Не есть гуд. Если таблица называется "отправки", то назови ее - "dispatches", или если слово сложное, то просто "send".
Спустя 5 дней, 20 часов, 28 минут, 51 секунда (8.10.2012 - 12:37) WisesT написал(а):
Сам уже запутался:)
Давайте с начала. Что не ясно?)
Давайте с начала. Что не ясно?)
Спустя 11 минут, 29 секунд (8.10.2012 - 12:48) n58oo написал(а):
вывел записи с чекбоксами->отметил галочки->отправил массив->на основе массива сформировал новый запрос
Спустя 56 минут, 19 секунд (8.10.2012 - 13:44) WisesT написал(а):
Ну, меня хватило только на вот это.
А вот как подписать чекбокс и как его перекинуть... да и куда его кидать. Вот тут не знаю.
echo "
<tr><td>
<table border=\"1\" width=\"100%\" cellpadding=\"0\" cellspacing=\"0\">
<form action=\"\" method=\"post\" name=\"\" >
<tr style=\"border: solid 1px #000\">
<td style=\"background-color:#537BF1\"><b>Номер</b></td>
<td style=\"background-color:#537BF1\" align=\"center\"><b>Офис</b></td>
<td style=\"background-color:#537BF1\" align=\"center\"><b>Представитель</b></td>
<td style=\"background-color:#537BF1\" align=\"center\"><b>Телефон</b></td>
<td>Галочка</td>
</tr>";
for($i = 0; $i < $num; $i++)
{
echo "<tr>";
echo"<td style=\"background-color:#B7D4FF\"><a href=forms/fr_office.php?id=".$postrow[$i]['id'].">".$postrow[$i]['id']."</a></td>";
echo "
<td bgcolor=\"ffffff\">".$postrow[$i]['office']."</td>
<td style=\"background-color:#B7D4FF\">".$postrow[$i]['predstavitel']."</td>
<td style=\"background-color:ffffff\">".$postrow[$i]['tel']."</td>
<td><input type=\"checkbox\" name=\"selected\" value=".$postrow[$i]['id']."></td>
</tr>";
}
echo "</table> <input type=\"submit\" name=\"vvod\" value=\"Выбрать\"/>
</form>
";
А вот как подписать чекбокс и как его перекинуть... да и куда его кидать. Вот тут не знаю.
Спустя 22 часа, 3 минуты, 39 секунд (9.10.2012 - 11:48) WisesT написал(а):
а что дальше то делать?
Спустя 1 час, 31 минута, 40 секунд (9.10.2012 - 13:20) killer8080 написал(а):
Цитата (WisesT @ 8.10.2012 - 13:44) |
<td><input type=\"checkbox\" name=\"selected\" value=".$postrow[$i]['id']."></td> |
не должно быть несколь элементов в форме, с одинаковым именем. В такой ситуации нужно имя делать массивом
<input type="checkbox" name="selected[".$postrow[$i]['id']."]" />
Спустя 24 минуты, 28 секунд (9.10.2012 - 13:44) WisesT написал(а):
поправил. Спасибо. А дальше то каК?
Спустя 1 минута, 53 секунды (9.10.2012 - 13:46) Игорь_Vasinsky написал(а):
а ты прими $_POST в обработчике
ты увидишь что это ассоциативный массив в котором есть ряд элементов с индексами равными id товара
echo '<pre>' . print_r($_POST, 1) . '</pre>';
ты увидишь что это ассоциативный массив в котором есть ряд элементов с индексами равными id товара
Спустя 5 минут, 58 секунд (9.10.2012 - 13:52) killer8080 написал(а):
Цитата (WisesT @ 9.10.2012 - 13:44) |
А дальше то каК? |
а дальше формируешь запрос к БД
Спустя 2 минуты, 49 секунд (9.10.2012 - 13:55) WisesT написал(а):
оу. Отлично.
Выбрал 1, 3, 5 офис. Выдало следующее
Выбрал 1, 3, 5 офис. Выдало следующее
Цитата |
Array ( [selected] => Array ( [1] => on [3] => on [5] => on ) [vvod] => Выбрать ) |
только вот почему "[vvod] => Выбрать" прилетело?
Спустя 1 минута, 8 секунд (9.10.2012 - 13:56) Игорь_Vasinsky написал(а):
это кнопка епт)) афтор жжёт :D
тебе нужно проьежатьс foreach по подмассиву selected
ну канешь проверить его в начале не мешает)
тебе нужно проьежатьс foreach по подмассиву selected
foreach($_POST['selected'] as $selected){
....
}
ну канешь проверить его в начале не мешает)
if(isset($_POST['selected']))
Спустя 3 минуты, 2 секунды (9.10.2012 - 13:59) killer8080 написал(а):
... WHERE `id` IN ('.implode(',', $_POST['selected']).')
Спустя 1 минута, 34 секунды (9.10.2012 - 14:01) Игорь_Vasinsky написал(а):
оо. всё не как не могу превыкнуть к IN )) так быстрей
а мой - наглядней
а мой - наглядней
Спустя 6 минут, 54 секунды (9.10.2012 - 14:07) WisesT написал(а):
Таксь. Понимаю что "ездить" под данным вот этим
нужно уже в обработчике... но к чему это - не пойму. Проверяет есть ли данные как таковые в полученом массиве?
if(isset($_POST['selected']))
foreach($_POST['selected'] as $selected){
....
}
нужно уже в обработчике... но к чему это - не пойму. Проверяет есть ли данные как таковые в полученом массиве?
Спустя 2 минуты, 58 секунд (9.10.2012 - 14:10) killer8080 написал(а):
Цитата (WisesT @ 9.10.2012 - 14:07) |
но к чему это - не пойму. Проверяет есть ли данные как таковые в полученом массиве? |
Игорь подразумевал циклом формировать sql запрос.
Спустя 8 минут, 18 секунд (9.10.2012 - 14:19) WisesT написал(а):
А! а в твоем случае получается.. В обработчике пишем
Верно?
<?php
//тут коннект к базе
$query="SELECT from $table WHERE `id` IN ('.implode(',', $_POST['selected']).')";
mysql_query($query);
echo ".....
Верно?
Спустя 8 минут, 19 секунд (9.10.2012 - 14:27) Игорь_Vasinsky написал(а):
да. тока с кавычками наказарезил)
$query="SELECT from `".$table."` WHERE `id` IN ('".implode(',', $_POST['selected'])."')";
Спустя 9 минут, 59 секунд (9.10.2012 - 14:37) WisesT написал(а):
что-то не так
выводит
<?php
// Устанавливаем соединение с базой данных
include "config.php";
$query="SELECT from otpravki WHERE `id` IN ('".implode(',', $_POST['selected'])."')";
echo $query;
mysql_query($query);
?>
выводит
Цитата |
SELECT from otpravki WHERE `id` IN ('on,on,on') |
Спустя 4 минуты, 29 секунд (9.10.2012 - 14:41) killer8080 написал(а):
$items = array_map('intval', array_keys($_POST['selected']));
$query="SELECT * from otpravki WHERE `id` IN ('".implode(',', $items)."')";
только провеки на существование $_POST['selected'] не забудь.
Спустя 2 минуты, 44 секунды (9.10.2012 - 14:44) WisesT написал(а):
эм... подскажи)
Спустя 51 секунда (9.10.2012 - 14:45) killer8080 написал(а):
Цитата (WisesT @ 9.10.2012 - 14:44) |
эм... подскажи) |
Что подсказать?
Спустя 3 минуты, 55 секунд (9.10.2012 - 14:49) WisesT написал(а):
Цитата |
только провеки на существование $_POST['selected'] не забудь. |
походу if ($_POST['selected'] !='') или как?
Спустя 1 минута, 31 секунда (9.10.2012 - 14:50) killer8080 написал(а):
if (isset($_POST['selected']) && is_array($_POST['selected']))
Спустя 5 минут, 53 секунды (9.10.2012 - 14:56) WisesT написал(а):
Сделал вот так
Выбрал три записи, но на страничке вижу только первую.
<?php
// Устанавливаем соединение с базой данных
include "config.php";
if (isset($_POST['selected']) && is_array($_POST['selected'])) {
$items = array_map('intval', array_keys($_POST['selected']));
$query="SELECT * from otpravki WHERE `id` IN ('".implode(',', $items)."')";
echo $query;
$result=mysql_query($query);}
while($row = mysql_fetch_assoc($result)){
echo '<tr><td>'.implode('</td><td>', $row).'</td></tr>';
}
?>
Выбрал три записи, но на страничке вижу только первую.
Цитата |
SELECT * from otpravki WHERE `id` IN ('1,3,5')1СимферопольГриднев А. Филиппова Н.(095)146-65-13 |
Спустя 3 минуты, 52 секунды (9.10.2012 - 15:00) killer8080 написал(а):
WisesT
почему у тебя цикл while вынесен из блока условия?
почему у тебя цикл while вынесен из блока условия?
Цитата (WisesT @ 9.10.2012 - 14:56) |
if (isset($_POST['selected']) && is_array($_POST['selected'])) { $items = array_map('intval', array_keys($_POST['selected'])); $query="SELECT * from otpravki WHERE `id` IN ('".implode(',', $items)."')"; echo $query; $result=mysql_query($query);} while($row = mysql_fetch_assoc($result)){ echo '<tr><td>'.implode('</td><td>', $row).'</td></tr>'; } |
Спустя 1 минута, 27 секунд (9.10.2012 - 15:02) killer8080 написал(а):
и где теги <table></table>?
Спустя 2 минуты, 41 секунда (9.10.2012 - 15:04) WisesT написал(а):
ибо двоешник)
закинул в условия. Ничего не изменилось
закинул в условия. Ничего не изменилось
Спустя 1 минута, 43 секунды (9.10.2012 - 15:06) killer8080 написал(а):
Значит нет в базе записей с такими айдишниками, выполни этот запрос через pma и посмотри что выдаст.
Спустя 15 минут, 28 секунд (9.10.2012 - 15:22) WisesT написал(а):
Есть такие записи. Я их вижу. Вот они)
Спустя 1 минута, 48 секунд (9.10.2012 - 15:23) WisesT написал(а):
хм... а запрос "SELECT * from otpravki WHERE `id` IN ('1,2')" в phpmyadmin выдает тоже только 1 результат. Хотя записи есть.
Спустя 52 минуты, 12 секунд (9.10.2012 - 16:16) WisesT написал(а):
выводит только первую запись из массива и хоть ты тресни.
Спустя 5 минут, 7 секунд (9.10.2012 - 16:21) WisesT написал(а):
SELECT * from otpravki WHERE `id` IN (1,2)
Вот в этом была беда) без ' ' нужно было)
Спустя 1 час, 5 минут, 46 секунд (9.10.2012 - 17:26) killer8080 написал(а):
echo '<tr><td>'.implode('<br>', $row).'</td><td><input type="checkbox" name="selected['.$row['id'].']" ></td></tr>';
и для формы имя указывать не нужно, тем более пустое :)
Спустя 6 минут, 45 секунд (9.10.2012 - 17:33) WisesT написал(а):
я вот так сделал
Вроде работает. Спасибо;)
<?php
// Устанавливаем соединение с базой данных
include "config.php";
$query="SELECT * FROM otpravki";
$result=mysql_query($query);
echo"
<table border=\"1\" width=\"100%\" cellpadding=\"0\" cellspacing=\"0\">
<form action=\"selected.php\" method=\"post\" name=\"\" >
<tr style=\"border: solid 1px #000\">
<td style=\"background-color:#537BF1\"><b>Номер</b></td>
<td style=\"background-color:#537BF1\" align=\"center\"><b>Офис</b></td>
<td style=\"background-color:#537BF1\" align=\"center\"><b>Представитель</b></td>
<td style=\"background-color:#537BF1\" align=\"center\"><b>Телефон</b></td>
<td>Галочка</td>
</tr>";
while($row = mysql_fetch_assoc($result)){
echo '<tr><td>'.$row['id'].'</td><td>'.$row['office'].'</td><td>'.$row['predstavitel'].'</td><td>'.$row['tel'].'</td><td><input type="checkbox" name="selected['.$row['id'].']" ></td></tr>';
}
echo "</table> <input type=\"submit\" name=\"vvod\" value=\"Выбрать\"/>
</form>
Вроде работает. Спасибо;)
Спустя 1 минута, 38 секунд (9.10.2012 - 17:35) killer8080 написал(а):
Цитата (WisesT @ 9.10.2012 - 17:33) |
<form action=\"selected.php\" method=\"post\" name=\"\" > |
убери пустой атрибут
Спустя 12 минут, 56 секунд (9.10.2012 - 17:48) WisesT написал(а):
ах да) забыл)
Вот еще чего надумал.
Я ж не проверяю есть ли выбранные галочки или нет.
Их проверять на этой странице или в обработчике проверить не пусто ли в $_POST?
Вот еще чего надумал.
Я ж не проверяю есть ли выбранные галочки или нет.
Их проверять на этой странице или в обработчике проверить не пусто ли в $_POST?
Спустя 2 минуты, 39 секунд (9.10.2012 - 17:50) killer8080 написал(а):
Цитата (WisesT @ 9.10.2012 - 17:48) |
или в обработчике проверить не пусто ли в $_POST |
эта проверка у тебя же есть
Цитата (WisesT @ 9.10.2012 - 14:56) |
if (isset($_POST['selected']) && is_array($_POST['selected'])) { |
Спустя 4 минуты, 7 секунд (9.10.2012 - 17:55) WisesT написал(а):
чтот я тогда не пойму. Но если я не выбираю галочек и отправляю форму на исполнение - в обработчике выводится просто пустая страница.
АПД. Нафиг все. Завтра поковыряюсь;)
Спасибо еще раз.
АПД. Нафиг все. Завтра поковыряюсь;)
Спасибо еще раз.
Спустя 4 минуты, 59 секунд (9.10.2012 - 18:00) killer8080 написал(а):
Цитата (WisesT @ 9.10.2012 - 17:55) |
чтот я тогда не пойму. Но если я не выбираю галочек и отправляю форму на исполнение - в обработчике выводится просто пустая страница. |
для этого у if существует else
Спустя 15 часов, 57 минут, 7 секунд (10.10.2012 - 09:57) WisesT написал(а):
<?php
// Устанавливаем соединение с базой данных
include "config.php";
//проверка на существование массива
if (isset($_POST['selected']) && is_array($_POST['selected'])) {
//что-то...
$items = array_map('intval', array_keys($_POST['selected']));
//что в $items
//echo $items;
//запрос
$query="SELECT `office`,`predstavitel`,`tel` from otpravki WHERE `id` IN (".implode(',', $items).")";
//показываем, что летит в запрос
//echo $query;
//делаем запрос, а результат в $result
$result=mysql_query($query);
echo "
<html>
<head>
<link rel=\"stylesheet\" type=\"text/css\" media=\"print\" href=\"css/print.css\" />
</head>
<body>
<table border='1' cellpadding='2' cellspacing='0'>";
while($row = mysql_fetch_assoc($result)){
echo '<tr><td height=130 width=450><h1>'.implode('<br>', $row).'</h1></td><td width=450> </td></tr>';
}
}
echo "</table></body></html>";
//ВОТ ТУТ БЕДА
else {
echo "Pusto!";
}
?>
<div class="noprint"><INPUT TYPE="button" VALUE="Распечатать" onClick=location.href="javaScript:window.print();"></div>
видимо я что-то делаю с else не так. Страница вообще не формируется.
Спустя 1 час, 21 минута, 31 секунда (10.10.2012 - 11:18) killer8080 написал(а):
Цитата (WisesT @ 10.10.2012 - 09:57) |
видимо я что-то делаю с else не так. |
само собой не так :)
где фигурная скобка перед else? А вот если бы придерживался стиля программирования, и пользовался IDE, а не блокнотом, ошибку бы увидел сам, сразу же ;)
<?php
// Устанавливаем соединение с базой данных
include "config.php";
//проверка на существование массива
if (isset($_POST['selected']) && is_array($_POST['selected'])) {
//что-то...
$items = array_map('intval', array_keys($_POST['selected']));
//что в $items
//echo $items;
//запрос
$query = "SELECT `office`,`predstavitel`,`tel` from otpravki WHERE `id` IN (" . implode(',', $items) . ")";
//показываем, что летит в запрос
//echo $query;
//делаем запрос, а результат в $result
$result = mysql_query($query);
echo "
<html>
<head>
<link rel=\"stylesheet\" type=\"text/css\" media=\"print\" href=\"css/print.css\" />
</head>
<body>
<table border='1' cellpadding='2' cellspacing='0'>";
while ($row = mysql_fetch_assoc($result)) {
echo '<tr><td height=130 width=450><h1>' . implode('<br>', $row) . '</h1></td><td width=450> </td></tr>';
}
echo "</table></body></html>";
//ВОТ ТУТ БЕДА
} else {
echo "Pusto!";
}
?>
<div class="noprint"><INPUT TYPE="button" VALUE="Распечатать" onClick=location.href="javaScript:window.print();"></div>
Спустя 5 минут, 33 секунды (10.10.2012 - 11:24) Игорь_Vasinsky написал(а):
Цитата |
Ооо... тема ещё рулит) |
Спустя 17 секунд (10.10.2012 - 11:24) killer8080 написал(а):
Кстати, что это за лабуда?
Цитата (killer8080 @ 10.10.2012 - 11:18) |
onClick=location.href="javaScript:window.print();" |
Спустя 39 секунд (10.10.2012 - 11:25) killer8080 написал(а):
Цитата (Игорь_Vasinsky @ 10.10.2012 - 11:24) |
Ооо... тема ещё рулит) |
Да еще как
Спустя 55 минут, 52 секунды (10.10.2012 - 12:20) WisesT написал(а):
Цитата (killer8080 @ 10.10.2012 - 08:24) | ||
Кстати, что это за лабуда?
|
Ну вродь как кнопочка на чепять
Спасибо за else
А что такое IDE?
Спустя 3 минуты, 13 секунд (10.10.2012 - 12:24) n58oo написал(а):
Integrated Development Environment
NetBeans, phpStorm
NetBeans, phpStorm
Спустя 13 минут, 2 секунды (10.10.2012 - 12:37) killer8080 написал(а):
Цитата (WisesT @ 10.10.2012 - 12:20) |
Ну вродь как кнопочка на чепять |
в том то и дело, что вроде как :)
Для печати нужно вызвать функцию window.print(), location, то ту причем? Плюс, значения атрибутов всегда нужно брать в кавычки
<INPUT TYPE="button" VALUE="Распечатать" onClick="window.print()">
Цитата (WisesT @ 10.10.2012 - 12:20) |
А что такое IDE? |
Собственно выше уже ответили.
Спустя 17 минут, 28 секунд (10.10.2012 - 12:54) WisesT написал(а):
Цитата (killer8080 @ 10.10.2012 - 09:37) | ||||
в том то и дело, что вроде как :) Для печати нужно вызвать функцию window.print(), location, то ту причем? Плюс, значения атрибутов всегда нужно брать в кавычки <INPUT TYPE="button" VALUE="Распечатать" onClick="window.print()">
Собственно выше уже ответили. |
Да вроде как работает, я и не заморачивался. А код нагуглил)
Но твой вариант тоже возьму на заметку)
Спасибо.