Ситуация - в базу вносятся названия фирм. Как исключить возможность повторного внесения в базу? PHP: if(!empty($firm)){ if(('$row_firm[firm]') !== ($_POST['firm'])){ ..... Такая конструкция сравнения не работатет. Есть средство?
а я и с апострофами и без апострофов и вокруг компьютера станцевал... не помогло... Вопрос - можно ли достать из базы слово на русском и сравнить его слова из формы на русском и если они одинаковые то не вносить?
а с бубном шаманил? вдох выдох, и вопрос - что делает ЭТО ('$row_firm[firm]') !== --- Добавлено --- можно и не доставать, но это другая тема, пока вопрос выше.
Чему равна переменная ? Код (Text): $row_firm Если она равна запросу из базы "Той самой фирме которую надо проверить" то тогда зачем [firm]? И ковычки надо ставить тут ($row_firm['firm'])
это не достает ничего так как там ничего не вижу кроме строки в скобках, я не вижу там переменной - сказал интерпретатор пхп
Выведи значения переменных. Тоже склоняюсь к тому, что у тебя с ними проблема. Так как выражение должно работать.
просто надо подсветку синтаксиса врубить (с) где будет четко отображаться где '$как строка' $как переменная "$как переменная внутри строки" "{$моя быть круче} Алеша"
PHP: while($row_firm = mysqli_fetch_array($query)){ if(!empty($firm)){ if(($row_firm['firm']) !== ($_POST['firm'])){ $in_firm = "INSERT INTO firm (firm) VALUES ('$firm')"; более полная версия... Проверил print_r - выводит . значит проьлема в сравнении... ранее было сказано что не обязательно делать селект... возможно проверку можно делать на уровне инсерта? как правильно?
Спасибо. жаль стиль мне не понятный... не понимаю что там происходит --- Добавлено --- возможно с хедером проблема PHP: while($row_firm = mysqli_fetch_array($query)){ if(!empty($firm)){ if(($row_firm['firm']) !== ($_POST['firm'])){ $in_firm = "INSERT INTO firm (firm) VALUES ('$firm')"; mysqli_query($dsd, $in_firm); header('Location: '.$_SERVER['REQUEST_URI']); exit; } } }
А почему нельзя все узнать через один запрос? Код (Text): SELECT COUNT(`id`) FROM `table_name` WHERE `firm`=$_POST['firm']; Если вернет 0, значит совпадений нет. Если >0, значит такая фирма уже есть.
а можно сделать так? - SELECT firm FROM `table_name` WHERE `firm`=$_POST['firm']; то есть напрямую спросить есть ли такое слово в соответствующем поле базы?
А, я понял. Странно, я проверял на своей таблице селектом, каунтер сработал верно. Позже посмотрю еще раз. Спасибо.
Можно вроде как через unique key в таблице это контролировать --- Добавлено --- Код (Text): SELECT 1 from table_name WHERE firm_name = $_POST["firmName"]
Дубликаты определяет Почему делает INSERT даже если такая фирма уже существует в базе? где я ошибся? Замысел такой - если фирмы нет в базе, то фирма вносится, если есть в базе, то не вносится . PHP: $firm5 = $_POST['firm5']; $sql_proverka = "SELECT count(*) FROM firm WHERE firm = '$firm5'"; $query_proverka = mysqli_query($db, $sql_proverka); $result_proverka = mysqli_fetch_array($query_proverka); if($result_proverka[0] == 0){ $in = "INSERT INTO firm (firm, polzovatel_iddostup) VALUES ('$firm5', '".$_SESSION['admin']."')"; mysqli_query($db, $in); echo "такой фирмы нету"; } else{ echo 'такая фирма есть'; } --- Добавлено --- Прошу прощения, на полигоне (тренировочной странице) был ещё один INSERT , который и вносил в базу дублирующийся имена. Впрочем если кто то скажет как сделать лучше, скажу спасибо.