Есть у меня в базе таблица разделов (id-int,title-var)
Ещё таблица подразделов, в которой также указывается к какому разделу относится подраздел (id-int, title-var, razdel-int)
делаю форму чекбоксов подразделов, группируя по раздела:
echo "<form action='specializacia.php' method='post'>
<br>";
$result_razdel = mysql_query ("SELECT * FROM razdel ORDER BY id",$db);
$myrow_razdel = mysql_fetch_array ($result_razdel);
do
{
echo "<br><br>$myrow_razdel[title]";
$razdel_id = $myrow_razdel['id'];
$result_podrazdel = mysql_query ("SELECT * FROM podrazdel WHERE razdel='$razdel_id' ORDER BY id",$db);
$myrow_podrazdel = mysql_fetch_array($result_podrazdel);
do
{
printf ("<br><input type='checkbox' name='cb[]' value='%s' />%s"
,$myrow_podrazdel["id"],$myrow_podrazdel["title"]);
}
while ($myrow_podrazdel = mysql_fetch_array($result_podrazdel));
}
while ($myrow_razdel = mysql_fetch_array ($result_razdel));
echo"<br><br><input type='submit' name='submit' value='Отправить'>
</form>";
что мне следует написать в name и value чекбоксов, что потом id выбранных подразделов внести в бд, каждый выбранный подраздел в новую строчку таблицы (т.е. не сплошным текстом в одну ячейку) ?
Спустя 8 минут, 28 секунд (24.05.2011 - 22:21) Игорь_Vasinsky написал(а):
уж не пожадничай - создай для них табличку - зато порядок

Спустя 5 минут, 48 секунд (24.05.2011 - 22:26) Guest написал(а):
Игорь_Vasinsky
Да-да, в другую таблицу хочу записать, но как?
Погуглив, нашёл как все выбранные значения в одну ячейку записать, а как в разные - не нашёл
Да-да, в другую таблицу хочу записать, но как?
Погуглив, нашёл как все выбранные значения в одну ячейку записать, а как в разные - не нашёл
Спустя 14 минут, 33 секунды (24.05.2011 - 22:41) Игорь_Vasinsky написал(а):
Создать таблицу `chekboxs`
id-int | name
id-int - id раздела к которому относится checkbox
name - имя чекбокса
и ни каких auto_increment
id-int | name
id-int - id раздела к которому относится checkbox
name - имя чекбокса
и ни каких auto_increment
Спустя 14 часов, 13 минут, 24 секунды (25.05.2011 - 12:54) Pandion написал(а):
Мой вопрос такой:
что прописать в name и value чекбоксов и каким кодом в обработчике отправить их в таблицу?
что прописать в name и value чекбоксов и каким кодом в обработчике отправить их в таблицу?
Спустя 3 минуты, 1 секунда (25.05.2011 - 12:57) Игорь_Vasinsky написал(а):
Цитата |
что прописать в name и value чекбоксов |
да хоть rand()
Цитата |
и каким кодом в обработчике отправить их в таблицу? |
SQL - INSERT INTO
Спустя 19 минут (25.05.2011 - 13:16) linker написал(а):
Поповс детектед.
Мало того, что do {} while() так еще и вложенные друг в друга в виде цикличного исполнения запросов. Всё это делает одним запросом и одним циклом while(){}.
Мало того, что do {} while() так еще и вложенные друг в друга в виде цикличного исполнения запросов. Всё это делает одним запросом и одним циклом while(){}.
Спустя 17 минут, 59 секунд (25.05.2011 - 13:34) ИНСИ написал(а):
Цитата |
Всё это делает одним запросом |
Напиши

Спустя 30 минут, 29 секунд (25.05.2011 - 14:05) linker написал(а):
Я ничего не знаю о его полях, поэтому SELECT полей такой
SELECT
`podrazdel`.*
FROM
`razdel`
LEFT JOIN
`podrazdel`
ON
`podrazdel`.`razdel` = `razdel`.`id`
ORDER BY
`podrazdel`.`razdel`,
`podrazdel`.`id`
Спустя 50 минут, 44 секунды (25.05.2011 - 14:56) Pandion написал(а):
Цитата (Игорь_Vasinsky @ 25.05.2011 - 09:57) | ||||
да хоть rand()
SQL - INSERT INTO |
Я так понимаю, это в цикле надо делать. А цикл по чему?
Спустя 33 минуты, 33 секунды (25.05.2011 - 15:29) Pandion написал(а):
например, я пишу в name 'cb[]'
в value пишу id подраздела
тогда на выходе получаю одномерный массив $_POST['cb']
как каждый его элемент записать в отдельное поле таблицы?
в value пишу id подраздела
тогда на выходе получаю одномерный массив $_POST['cb']
как каждый его элемент записать в отдельное поле таблицы?
Спустя 9 минут, 31 секунда (25.05.2011 - 15:39) Pandion написал(а):
всем спасибо, сам допёр
Спустя 18 часов, 3 минуты, 46 секунд (26.05.2011 - 09:42) ИНСИ написал(а):
linker сейчас у тебя запрос, который просто вытаскивает подразделы сортируя по разделам, а у автор темы есть одно место:
Цитата |
echo "<br><br>$myrow_razdel[title]"; |
То есть, он получается выводит название Раздела, а затем снизу все подразделы. Я так понял, что запрос который ты написал этого не делает. Поэтому мне было интересно, как сделать одним запросом и циклом.
Или ты по другому можешь написать запрос?
Спустя 47 минут, 12 секунд (26.05.2011 - 10:30) linker написал(а):
А в чём проблема?
SELECTПосле него один цикл с проверкой на раздел.
`razdel`.`title`, `podrazdel`.*
FROM
`razdel`
LEFT JOIN
`podrazdel`
ON
`podrazdel`.`razdel` = `razdel`.`id`
ORDER BY
`podrazdel`.`razdel`,
`podrazdel`.`id`
$lastrazdel = '';По моему сам должен понимать как это делается.
while($row = mysql_fetch_assoc($res))
{
if ($lastrazdel != $row['razdel'])
{
echo "<br><br>$row['title']";
$lastrazdel = $row['razdel'];
}
... // Остальной ко дпо выводу подразделов
}
Спустя 27 минут, 14 секунд (26.05.2011 - 10:57) ИНСИ написал(а):
Цитата |
По моему сам должен понимать как это делается. |
Неее. Я то сразу знал как сделать, мне просто было интересно, может как-то в запросе какое-то "чудо" происходит :) Мой вариант, немного отличается от твоего, и думаю что твой вариант работать будет быстрее.
Pandion вот еще, вариант:
<form action="specializacia.php" method="post">
<?php
$rows = mysql_query("
SELECT `r`.*,`p`.*
FROM `razdel` AS `r`
LEFT JOIN `podrazdel` AS `p`
ON `p`.`razdel` = `r`.`id`
ORDER BY `p`.`razdel`,`p`.`id`
") or die(mysql_error());
if(mysql_num_rows($rows) > 0) {
$arrRazdel = array();
while($data = mysql_fetch_assoc($rows)) {
if(!in_array($data['razdel'],$arrRazdel)) {
echo '<br><br>'.$data['title'];
$arrRazdel[] = $data['razdel'];
}
echo '<br><input type="checkbox" name="cb[]" value="'.$data['id'].'" />' . $data['title'];
}
}
?>
<br><br>
<input type="submit" name="submit" value="Отправить">
</form>
Спустя 57 минут, 57 секунд (26.05.2011 - 11:55) linker написал(а):
Это
if(sizeof($rows) > 0) {глупость, даже если ничего не нашлось по запросу, то валидная ссылка на ресурс (пускай и с нулевым количеством записей) в sizeof() всегда отдаст 1. Неверный запрос отсекается or die(). Здесь нет никакого смысла проверять количество возвращаемых строк из базы.
Спустя 1 час, 24 минуты, 45 секунд (26.05.2011 - 13:20) ИНСИ написал(а):
Цитата |
глупость, даже если ничего не нашлось по запросу, то валидная ссылка на ресурс (пускай и с нулевым количеством записей) в sizeof() всегда отдаст 1. Неверный запрос отсекается or die(). Здесь нет никакого смысла проверять количество возвращаемых строк из базы. |
Упс

