Как добавить ряд проверок, прежде чем сделать запись в файл?
У меня есть такой код, который из формы записывает введенные в поле input данные каждый раз с новой строки:
if(isset($_POST['fav']))
{
$uniqueid = $_POST['uniqueid'];
file_put_contents('us/db/fav/'.$us_id.'', $uniqueid."\r\n", FILE_APPEND | LOCK_EX);
echo "<meta http-equiv=refresh content='0; url=page.php'>";
exit();
}
<form action='' name='' method='post'>
<input name='uniqueid' type='text' value=''>
<button name='fav' type='submit' value='Search'>Search</button>
</form>
Этот код у меня работает прекрасно. Подскажите пожалуйста, но как добавить ряд следующих проверок с условиями, прежде чем сделать запись в файл? Когда пользователь вводит данные в поле input, то первая проверка:
- совпадают ли введенные в поле
input
данные с Названием какого-либо файла в папкеadmin/db/rec/
- Если нет полного совпадения, то никаких действий;
- Если есть полное совпадение, то перейти к следующей проверке:
- Совпадают ли введенные в поле input данные с какой-либо строкой, записанной в файле
us/db/fav/$us_id
- Если нет, то записать введенные в поле input данные в файл
us/db/fav/$us_id
; - Если да, то никаких действий.
Ответы (1 шт):
Автор решения: Ипатьев
→ Ссылка
Сил смотреть на эти мучения нет никаких
// подключаемся к базе данных
$db = new PDO("sqlite:".__DIR__."/database.sql");
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
// проверяем пользователя
$stmt = $pdo->prepare("SELECT 1 FROM users WHERE id=?");
$stmt->execute([$user_id]);
$exists = $stmt->fetchColumn();
if (!$exists) {
die("Пользователь не найден\n");
}
// вставляем значение
$stmt = $pdo->prepare("INSERT OR IGNORE INTO fav (user_id, value) VALUES (?,?)" );
$stmt->execute([$user_id,$value]);
В этом коде уже есть все проверки. Рабочая демонстрация
Как видно, если подставить несуществующего пользователя, то никаких добавлений не будет. Если попытаться добавить уже существующее у этого пользователя значение, никаких добавлений не будет