[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Формирование страницы из выбраных заказов
WisesT
Приветствую, уважаемые!

Ломаю голову вот над какой задачкой.
Есть у меня таблица otpravki (id, office, predstavitel, tel). записей до 50.
Нужно как-то сообразить такую страничку на которой они все отображались бы, а рядышком были чекбоксы.
Выбрал нужные офисы галочками. Нажал кнопочГу и сформировалась страничка только с выбранными офисами.

Как я понимаю. Это будет не просто страничка, а форма со всеми этими офисами + чекбоксы.
Но как передать в другую страничку данные, какие офисы я выбрал?

Подскажите пожалуйста.

П.С. Может мой вариант и не верен. Может вы чего мудрого подскажите.

Зарание благодарю.



Спустя 45 минут, 58 секунд (28.09.2012 - 17:27) killer8080 написал(а):
Цитата (WisesT @ 28.09.2012 - 16:41)
Но как передать в другую страничку данные, какие офисы я выбрал?

Ты же сам сказал, чекбоксами smile.gif

Спустя 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)
Или в какую сторону правильно выгуглить)

Чего тут гулить? blink.gif Сделал запрос к таблице, и вывел содержимое циклом, формируя нужный html.

Спустя 1 минута, 57 секунд (2.10.2012 - 16:08) m4a1fox написал(а):
WisesT
Эээээээ $_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 в обработчике

echo '<pre>' . print_r($_POST, 1) . '</pre>';


ты увидишь что это ассоциативный массив в котором есть ряд элементов с индексами равными id товара

Спустя 5 минут, 58 секунд (9.10.2012 - 13:52) killer8080 написал(а):
Цитата (WisesT @ 9.10.2012 - 13:44)
А дальше то каК?

а дальше формируешь запрос к БД rolleyes.gif

Спустя 2 минуты, 49 секунд (9.10.2012 - 13:55) WisesT написал(а):
оу. Отлично.

Выбрал 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($_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 )) так быстрей
а мой - наглядней tongue.gif

Спустя 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 вынесен из блока условия?
Цитата (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?

Спустя 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 wink.gif

Спустя 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)
Ооо... тема ещё рулит)

Да еще как biggrin.gif

Спустя 55 минут, 52 секунды (10.10.2012 - 12:20) WisesT написал(а):
Цитата (killer8080 @ 10.10.2012 - 08:24)
Кстати, что это за лабуда?
Цитата (killer8080 @ 10.10.2012 - 11:18)
onClick=location.href="javaScript:window.print();"

Ну вродь как кнопочка на чепять blink.gif

Спасибо за else
А что такое IDE?

Спустя 3 минуты, 13 секунд (10.10.2012 - 12:24) n58oo написал(а):
Integrated Development Environment
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)
Цитата (WisesT @ 10.10.2012 - 12:20)
Ну вродь как кнопочка на чепять

в том то и дело, что вроде как :)
Для печати нужно вызвать функцию window.print(), location, то ту причем? Плюс, значения атрибутов всегда нужно брать в кавычки
<INPUT TYPE="button" VALUE="Распечатать" onClick="window.print()">


Цитата (WisesT @ 10.10.2012 - 12:20)
А что такое IDE?

Собственно выше уже ответили.

Да вроде как работает, я и не заморачивался. А код нагуглил)
Но твой вариант тоже возьму на заметку)
Спасибо.
Быстрый ответ:

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