|
|
|
| Уважаемые профессионалы!
Подскажите пожалуста, можно в одном числовом поле таблицы перечислят несколько отдельных цифр, чтобы потом при совпадении цифры выводились нужные данные? | |
|
|
|
|
|
|
|
для: xpom
(24.10.2006 в 17:56)
| | В числовом нет, обычно когда возникает такая ситуация проводят нормализацию базу данных, т.е. вводятся дополнительные таблицы в которых храняться записи - под каждое число отдельное число. | |
|
|
|
|
|
|
|
для: cheops
(24.10.2006 в 19:20)
| | Какова структура такой таблицы? А втекстовом поле возможен такой вариант, с отдельными словами? | |
|
|
|
|
|
|
|
для: xpom
(25.10.2006 в 11:04)
| | Да, возможно, но автоматизировать работу с такими строками будет сложно, кроме того, переход от числовых столбцов к строковым приведёт к падению скорости выполнения запросов. | |
|
|
|
|
|
|
|
для: cheops
(25.10.2006 в 12:21)
| | Можете показать как будет выглядеть скрипт, чтобы из списка выбора нескальких отдельных слов формы слова отдельно занеслись в одно поле таблицы? | |
|
|
|
|
|
|
|
для: xpom
(25.10.2006 в 20:24)
| | >чтобы из списка выбора нескальких отдельных слов формы слова отдельно занеслись в одно поле таблицы?
Вот это не очень понятно, можете привести пример? | |
|
|
|
|
|
|
|
для: cheops
(25.10.2006 в 22:40)
| | Пример не получается привести, я не знаю как это будет выглядеть в срипте, я постораюсь по понятней обьяснить. В форме есть тикие списки
<input type="radio" name="" value="" checked>
| в которых можно отмечать какие элементы из списка нужно выбрать. Нужно из такого списка отмечанные элементы поместить в одно поле таблицы, чтобы по ним потом сделать запрос? | |
|
|
|
|
|
|
|
для: xpom
(25.10.2006 в 22:53)
| | Помогите отмечающий список передать, плиз??? | |
|
|
|
|
|
|
|
для: xpom
(25.10.2006 в 22:53)
| | Что-то всё равно не понятно, радио-кнопка не имеет имени - так задуманно или ей можно присвоить любое имя? | |
|
|
|
|
|
|
|
для: cheops
(27.10.2006 в 22:27)
| | Вместо радио-кнопки нужно список с выбором нескольких значений, например вот это:
<input name="Name" type="checkbox" value="ON">
|
Ей можно присвоить любое имя, главное чтобы эти выбранные значения заносились отдельно в одно поле таблицы? | |
|
|
|
|
|
|
|
для: xpom
(27.10.2006 в 22:49)
| | Помогите отмечающий список передать, плиз??? | |
|
|
|
|
|
|
|
для: xpom
(27.10.2006 в 22:49)
| | Список как формируется и сколько значений содержит? Например, если имеется 10 флажков:
<input name="Name1" type="checkbox" value="ON">
<input name="Name2" type="checkbox" value="ON">
<input name="Name3" type="checkbox" value="ON">
<input name="Name4" type="checkbox" value="ON">
<input name="Name5" type="checkbox" value="ON">
<input name="Name6" type="checkbox" value="ON">
<input name="Name7" type="checkbox" value="ON">
<input name="Name8" type="checkbox" value="ON">
<input name="Name9" type="checkbox" value="ON">
<input name="Name10" type="checkbox" value="ON">
|
то в обработчике можно проверить их содержимое и для вставить в поле следующим образом
<?php
$arr = array();
if(!empty($_POST['Name1'])) $arr[] = 1;
if(!empty($_POST['Name1'])) $arr[] = 2;
if(!empty($_POST['Name1'])) $arr[] = 3;
if(!empty($_POST['Name1'])) $arr[] = 4;
if(!empty($_POST['Name1'])) $arr[] = 5;
if(!empty($_POST['Name1'])) $arr[] = 6;
if(!empty($_POST['Name1'])) $arr[] = 7;
if(!empty($_POST['Name1'])) $arr[] = 8;
if(!empty($_POST['Name1'])) $arr[] = 9;
if(!empty($_POST['Name1'])) $arr[] = 10;
if(!empty($arr)) $query = "INSERT INTO tbl VALUES (NULL, '".implode(",",$arr)."')";
else $query = "INSERT INTO tbl VALUES (NULL, '')";
?>
|
PS Для удоства формировать HTML-форму и обрабатывать результаты в обработчике можно в цикле. | |
|
|
|
|
|
|
|
для: cheops
(28.10.2006 в 12:24)
| | Список нужно чтобы формировался из вот этой таблицы:
CREATE TABLE IF NOT EXISTS Towns (
TID INTEGER NOT NULL AUTO_INCREMENT,
Kan INTEGER NOT NULL,
TowName VARCHAR(30),
Primary Key (TID),
FOREIGN KEY (Kan) REFERENCES Kan(KNID)
|
Подскажите как это сделать?
>сколько значений содержит?
Значения будут зависит от того какое значение имеет внешний ключ таблицы Kan. Например если Kan=1 тогда 15, если Kan=2 тогда 10.
А с флажками бедет столько сколько уже наотмечает пользователь.
После обработчика проверенные данные нужно вставить в поле Town таблицы Dan :
CREATE TABLE IF NOT EXISTS Dan (
DID INTEGER NOT NULL AUTO_INCREMENT,
Lat INTEGER NOT NULL,
Name VARCHAR(150),
About VARCHAR(255),
Town VARCHAR(300),
Primary Key (DID),
FOREIGN KEY (Lat) REFERENCES Lat(LID)
|
Помогите, пожалуйста сделать!!! | |
|
|
|
|
|
|
|
для: xpom
(28.10.2006 в 13:52)
| | >Например если Kan=1 тогда 15, если Kan=2 тогда 10.
Хм... а Kan будет принимать только два значения? Дело в том, что это значение нужно будет передавать через скрытое поле, чтобы обработчик "знал" сколько флажков было в HTML-форме. На момент формирования HTML-формы значение Kan в какой переменной доступно? | |
|
|
|
|
|
|
|
для: cheops
(28.10.2006 в 14:39)
| | >Kan будет принимать только два значения?
Нет Kan будет принимать больше значений.
>На момент формирования HTML-формы значение Kan в какой переменной доступно?
Переменная $_GET['d'], на момент формирования HTML-формы имеет значение такое как и Kan | |
|
|
|
|
|
|
|
для: xpom
(28.10.2006 в 15:15)
| | Если никто, не ответит, поднимите эту тему вечером (чтобы она не отметилась у меня как прочитанная - сейчас не успеваю скрипт написать). | |
|
|
|
|
|
|
|
для: cheops
(28.10.2006 в 16:33)
| | Плиз!плиз!плиз! | |
|
|
|
|
|
|
|
для: cheops
(28.10.2006 в 16:33)
| | Скелет скрипт должен выглядеть примерно следующим образом
<?php
// Обработчик
if(!empty($_POST))
{
$arr = array();
switch($_GET['d'])
{
case 1:
// Kan=1
for($i = 0; $i < 15; $i++)
{
if(!empty($_POST["Name".$i])) $arr[] = $i;
}
break;
case 2:
// Kan=2
for($i = 0; $i < 10; $i++)
{
if(!empty($_POST["Name".$i])) $arr[] = $i;
}
break;
}
if(!empty($arr)) $query = "INSERT INTO tbl VALUES (NULL, '".implode(",",$arr)."')";
else $query = "INSERT INTO tbl VALUES (NULL, '')";
mysql_query($query);
}
//HTML-форма
?>
<form method=post>
<?php
switch($_GET['d'])
{
case 1:
// Kan=1
for($i = 0; $i < 15; $i++)
{
echo '<input name="Name'.$i.'" type="checkbox" value="ON">'.$i.'<br>';
}
break;
case 2:
// Kan=2
for($i = 0; $i < 10; $i++)
{
echo '<input name="Name'.$i.'" type="checkbox" value="ON">'.$i.'<br>';
}
break;
}
?>
<input type=submit value="OK">
</form>
|
| |
|
|
|
|
|
|
|
для: cheops
(28.10.2006 в 22:15)
| | А как сделать запрос чтобы список строилси из таблицы? | |
|
|
|
|
|
|
|
для: xpom
(28.10.2006 в 22:28)
| | Таблица Towns имеется ввиду? Приведите пару строк из таблицы, если не сложно? | |
|
|
|
|
|
|
|
для: cheops
(28.10.2006 в 22:35)
| | >Таблица Towns имеется ввиду?
Да она!
>Приведите пару строк из таблицы, если не сложно?
INSERT INTO Towns (Kan, TowName) VALUES
('1', 'Москва'),
('1', 'Питер'),
('2', 'Киев'),
('2', 'Орел')"
|
| |
|
|
|
|
|
|
|
для: xpom
(28.10.2006 в 22:45)
| | Можно поступить следующим образом
<?php
// Устанавливаем соединение с базой данных
require_once("config.php");
// Обработчик
if(!empty($_POST))
{
if(!preg_match("|^[\d]+$|",$_POST['d'])) exit("Не верный формат запроса");
$query = "SELECT * FROM Towns WHERE Kan = ".$_POST['d'];
$twn = mysql_query($query);
if(!$twn) exit(mysql_error());
$arr = array();
if(mysql_num_rows($twn))
{
while($town = mysql_fetch_array($twn))
{
if(!empty($_POST[$town['TID']])) $arr[] = $town['TID']
}
}
if(!empty($arr)) $query = "INSERT INTO tbl VALUES (NULL, '".implode(",",$arr)."')";
else $query = "INSERT INTO tbl VALUES (NULL, '')";
mysql_query($query);
}
//HTML-форма
?>
<form method=post>
<?php
// Проверяем является ли параметр $_GET['d'] числом
if(!preg_match("|^[\d]+$|",$_GET['d'])) exit("Не верный формат запроса");
$query = "SELECT * FROM Towns WHERE Kan = ".$_GET['d'];
$twn = mysql_query($query);
if(!$twn) exit(mysql_error());
if(mysql_num_rows($twn))
{
while($town = mysql_fetch_array($twn))
{
echo '<input name="'.$town['TID'].'" type="checkbox" value="ON">'.$town['TowName'].'<br>';
}
}
?>
<input type=hidden name=d value=<?php echo $_GET['d']; ?>>
<input type=submit value="OK">
</form>
|
| |
|
|
|
|
|
|
|
для: cheops
(29.10.2006 в 00:55)
| | Помогите, пожалуйста найти ошибку, в обработчике вот в этой части кода, где пишет on line 175 в этой строке я напишу в коде то что оно пишет!
if(mysql_num_rows($twn))
{
while($town = mysql_fetch_array($twn))
{
if(!empty($_POST[$town['TID']])) $arr[] = $town['TID']
} //PHP Parse error: parse error, unexpected '}' in C:\Apache2.2\htdocs\cat\adds.php on line 175
}
|
| |
|
|
|
|
|
|
|
для: xpom
(29.10.2006 в 12:58)
| | Поставьте точку с запятой после строки
<?php
if(!empty($_POST[$town['TID']])) $arr[] = $town['TID']
?>
|
| |
|
|
|
|
|
|
|
для: cheops
(29.10.2006 в 17:51)
| | Точка с запятой почемуто не решила проблему? Все осталось так как и было, наверное где-то есть еще ошибка? Помогите плиз!!! | |
|
|
|
|
|
|
|
для: xpom
(29.10.2006 в 20:26)
| | Нет все помогло, спасибо работае. Это я в наборе ошибся. | |
|
|
|
|
|
|
|
для: xpom
(29.10.2006 в 21:05)
| | Если у вас есть время, подскажите как построить такой же список в HTML-форме, только чтобы те элементы из списка, которые есть в поле Town таблицы Dan были уже с флажками? | |
|
|
|
|
|
|
|
для: xpom
(29.10.2006 в 21:33)
| | Просто добавьте ключевое слово checked в определении флажка
<?php
echo '<input name="'.$town['TID'].'" type="checkbox" value="ON" checked>'.$town['TowName'].'<br>';
?>
|
| |
|
|
|
|
|
|
|
для: cheops
(30.10.2006 в 00:36)
| | Спасибо, насчет флажка понятно.
Подскажите пожалуйста, вот у меня список в форме строится в столбик в низ, а можно сделать чтобы элементы списка делились по 3 штуки в столбике, а остальные переносились на следующий столбик рядом? А то много вниз места занимают. | |
|
|
|
|
|
|
|
для: xpom
(30.10.2006 в 22:27)
| | Вам обязательно столбик рядом
1 4 7 10
2 5 8 11
3 6 9 12
|
или можно построчно выводить (это просто легче :)
1 2 3
4 5 6
7 8 9
10 11 12
|
| |
|
|
|
|
|
|
|
для: cheops
(30.10.2006 в 22:37)
| | Можно построчно выводить, без разницы! | |
|
|
|
|
|
|
|
для: xpom
(30.10.2006 в 22:40)
| | Используйте следующий блок
<?php
if(mysql_num_rows($twn))
{
echo "<table>";
while($town = mysql_fetch_array($twn))
{
$i = 0;
if(!empty($_POST[$town['TID']]))
{
if($i == 0) echo '<tr>';
echo '<td><input name="'.$town['TID'].'" type="checkbox" value="ON" checked>'.$town['TowName'].'</td>';
$i++;
if($i == 3)
{
echo '</tr>';
$i = 0;
}
}
}
echo "</table>";
}
?>
|
| |
|
|
|
|
|
|
|
для: cheops
(30.10.2006 в 22:52)
| | Почему-то не получается? Список выводится как и раньше вниз в столбик.
Хелп плиз!!! | |
|
|
|
|
|
|
|
для: xpom
(31.10.2006 в 10:46)
| | Ошибся чуть-чуть, замените предыдущий блок на этот
<?php
if(mysql_num_rows($twn))
{
echo "<table>";
$i = 0;
while($town = mysql_fetch_array($twn))
{
if(!empty($_POST[$town['TID']]))
{
if($i == 0) echo '<tr>';
echo '<td><input name="'.$town['TID'].'" type="checkbox" value="ON" checked>'.$town['TowName'].'</td>';
$i++;
if($i == 3)
{
echo '</tr>';
$i = 0;
}
}
}
echo "</table>";
}
?>
|
| |
|
|
|
|
|
|
|
для: cheops
(31.10.2006 в 12:50)
| | Спасибо большое работает! :)
Можете объяснить как данные заносятся в таблицу. Т.е. какая структура поля где заносятся данные? Чтобы я мог делать запрос к этим данным. Вобщем нужно чтобы данные заносились в поле Town таблицы Dan (выше структура таблицы).
$query = "INSERT INTO tbl VALUES (NULL, '".implode(",",$arr)."')";
|
Я так понял что данные заносятся в отдельную таблицу.
А что делает команда implode? | |
|
|
|
|
|
|
|
для: xpom
(01.11.2006 в 21:35)
| | Функция implode() преобразует элементы массива $arr в строку, разделяя их символом из первого параметра (в нашем случае - это запятая). | |
|
|
|
|
|
|
|
для: cheops
(01.11.2006 в 23:26)
| | Подскажите пожалуйста как сделать чтобы данные заносились в поле Town таблицы Dan (выше структура таблицы)? help please!!! | |
|
|
|
|
|
|
|
для: xpom
(01.11.2006 в 23:30)
| | Нужно выполнить SQL-запрос, а что вызывает сложности? | |
|
|
|
|
|
|
|
для: cheops
(01.11.2006 в 23:51)
| | Я делаю вот такой SQL-запрос
mysql_query("INSERT INTO Dan (Town)
VALUES
('".implode(",",$arr)."')",$db);
|
И у меня поле Town почему-то принимает значение NULL? | |
|
|
|
|
|
|
|
для: xpom
(02.11.2006 в 17:54)
| | А массив $arr что содержит (сколько в нём элементов)?
<?php
echo "<pre>";
print_r($arr);
echo "</pre>";
?>
|
| |
|
|
|
|
|
|
|
для: cheops
(02.11.2006 в 20:52)
| | А этот массиф каждый раз будет содержать разное колличество элементов? Зависит от того сколько флажков поставит пользователь.
Вот я отметил 2 флажка и вывело:
Array
(
[0] => 4
[1] => 5
)
|
| |
|
|
|
|
|
|
|
для: xpom
(03.11.2006 в 14:03)
| | Help please!!! | |
|
|
|
|
|
|
|
для: xpom
(02.11.2006 в 17:54)
| | Вы вставляете лишь одно значение Town, однако массив у вас содержит большее количество значений, вам следует реорганизовать запрос, например, так
<?php
foreach($i = 0; $i < count($arr); $i++) $arr[$i] = "('".$arr."')";
mysql_query("INSERT INTO Dan (Town)
VALUES
".implode(",",$arr)."",$db);
?>
|
| |
|
|
|
|
|
|
|
для: cheops
(03.11.2006 в 23:01)
| | Почемуто так не получается выдает ошибку: PHP Parse error: parse error, unexpected ';' in C:\Apache2.2\htdocs\cat\adds.php on line 86
вот в этой строке:
foreach($i = 0; $i < count($arr); $i++) $arr[$i] = "('".$arr."')";
|
| |
|
|
|
|
|
|
|
для: xpom
(04.11.2006 в 11:06)
| | А что находится в строке перед этой строкой? | |
|
|
|
|
|
|
|
для: cheops
(04.11.2006 в 12:01)
| | перед этой стракой находится вот такой скрипт:
if(!empty($_POST))
{
if(!preg_match("|^[\d]+$|",$_POST['d'])) exit("Не верный формат запроса");
$query = "SELECT * FROM Towns WHERE Kan = ".$_POST['d'];
$twn = mysql_query($query);
if(!$twn) exit(mysql_error());
$arr = array();
if(mysql_num_rows($twn))
{
while($town = mysql_fetch_array($twn))
{
if(!empty($_POST[$town['TID']])) $arr[] = $town['TID']
}
}
|
| |
|
|
|
|
|
|
|
для: xpom
(04.11.2006 в 12:57)
| | В my.ini закомментируйте все директивы, связанные с InnoDB. | |
|
|
|
|
|
|
|
для: cheops
(04.11.2006 в 13:23)
| | >В my.ini закомментируйте все директивы
А где это в my.ini ? | |
|
|
|
|
|
|
|
для: xpom
(04.11.2006 в 15:07)
| | Извиняюсь, это я веткой форума ошибся, не в ту тему ответил :))) | |
|
|
|
|
|
|
|
для: xpom
(04.11.2006 в 12:57)
| | Давайте новую тему заведём - эта уже слишком длинная и в ней вы прикрепите то, что у вас сейчас есть и мы продолжим терзать ваш скрипт :) | |
|
|
|