|
|
|
| Подскажите пожалуйста!
Есть в БД таблица с 9 текстовыми полями, в них должны быть неповторяющиеся значения. Как лучше написать скрипт, чтобы перед вводом данных из формы, они проверялись на неповторяющиеся значения, в каждом из полей.
Заранее благодарен. | |
|
|
|
|
|
|
|
для: fsn
(24.01.2008 в 07:31)
| | Что-то типа того:
В ыорме надо указать массив полей, text[1], text[2] и т.д.
<?php
// Получаем от формы массив;
if ($text = $_POST['text']) {
// Обходим массив текстовых полей;
foreach ($text as $item) {
if (in_array($item,$text)) {
// Ошибка (обработка ошибки, вывод сообщения или замена...);
// Например;
$error = 1;
}
}
// ;
if ($error!=1) {
$sql = 'INSERT...';
...
}
}
?>
|
Можно еще перед вводом в БД, сделать SELECT и проверить нет ли такой записи уже, защита от повторной записи... | |
|
|
|
|
|
|
|
для: Петр
(24.01.2008 в 09:29)
| | Спасибо, нашел выход. Код работатет. Получилось что-то типа:
<?php
//Создаем два массива
//Перечисляем имена столбцов БД по которым необходимо провести проверку
$a = array("field1", "field2", ...);
//Перечисляем поля формы $text1=$_POST['text1'], $text2=$_POST['text2'], ...
$b = array("text1", "text2");
//Далее два вложенных цикла переборки массивов
foreach($a as $k)
{
foreach($b as $v)
{
$query = "SELECT * FROM table WHERE $k='$v'";
if(mysql_num_query($query)>0)
{
$tmp = 1; //Временная переменная
//Вызываем пользователскую функцию, например:
links(".$_POST['id_razdel'].", "Введенные данные ".$k = $v." уже существуют в поле ".$k);
}
}
}
if(empty($v) and !isset($tmp))
{
$sql = " INSERT INTO ...."
}
|
Правда такой код только на добавление данных. А на редактирование уже надо другой код, в котором надо будет применить разность массивов. | |
|
|
|
|
|
|
|
для: fsn
(24.01.2008 в 07:31)
| | например
<?
$login=$_POST['login'];
$pass=$_POST['pass'];
if ($sql=mysql_query("select id from users where login='".$login."' and pass='".$pass."'"))
{
if (mysql_num_rows($sql)>0)
{
echo "Такой пользователь уже существует";
}
else
{
//то что должно быть если нет таких значений в базе...
}
}
|
в запросе указываете через and или or то что вам нужно | |
|
|
|
|
|
|
|
для: KPETuH
(24.01.2008 в 09:43)
| | Неправильно понял вопрос... неповторяющиеся столбцы, а не строки | |
|
|
|
|
|
|
|
для: Петр
(24.01.2008 в 09:47)
| | База данных вкратце такая:
Столбцы: Номер телефона; АТС:Станция; АТС:Линия-1; АТС:Линия-2
Строка1: 22-11; 3/187; 10/156; 2/125
Строка2: 23-09; 6/387; 11/345; 10/234
и т.д. Все поля текстовые.
Номер телефона надо проверить, от неповторяющихся значений только в своем столбце.
Вводимые данные АТС:Станция,проверить в своем столбце, в столбце АТС:Линия-1 и в АТС:Линия-2
Вводимые данные АТС:Линия-1,проверить в своем столбце, в столбце АТС:Линия-2 и в АТС:Станция
Вводимые данные АТС:Линия-2,проверить в своем столбце и в столбце АТС:Линия-1 и в АТС:Станция
Заранее благодарен | |
|
|
|