@ikfah012
Не самый умный парень в этом чате

Как правильно составить условие и запрос?

У меня есть форма, в которой вводятся данные.
Данные сохраняются таким образом:
<?php
//Параметры подключения в БД
$host = ""; //имя хоста
$database = ""; //имя базы
$user = ""; //пользователь
$password = ""; //пароль
//$password = ""; //пароль
$dbtable = "Users"; //таблица

if (isset($_POST['name'])){
//переменные с формы
$name = strip_tags(trim($_POST['name']));
$surname = strip_tags(trim($_POST['surname']));
$secondname = strip_tags(trim($_POST['secondname']));
$phone = strip_tags(trim($_POST['phone']));
$birthdate = strip_tags(trim($_POST['birthdate']));
$birhtplace = strip_tags(trim($_POST['birhtplace']));
$citizenship = strip_tags(trim($_POST['citizenship']));
$doc = strip_tags(trim($_POST['doc']));
$docid = strip_tags(trim($_POST['docid']));
$docpublish = strip_tags(trim($_POST['docpublish']));
$docdate = strip_tags(trim($_POST['docdate']));
$regterm = strip_tags(trim($_POST['regterm']));
$comment = strip_tags(trim($_POST['comment']));
$date = date("Y-m-d");
$time = date("H:i:s");
$delivery_date = date('Y-m-d', strtotime($date. ' + 1 days'));
$user_ip = $_SERVER["REMOTE_ADDR"];

//установим соединение с бд
$link = mysqli_connect($host, $user, $password, $database)
    or die("Ошибка " . mysqli_error($link));
$link->set_charset("utf8");

$sql = "INSERT INTO ".$dbtable." (
    `ip`,
   `delivery_date`,
    `order_date`, 
    `order_time`, 
    `name`, 
    `surname`, 
    `second_name`, 
    `phone`, 
    `birth_date`,
    `birth_place`, 
    `citizenship`, 
    `doc`, 
    `doc_id`, 
    `doc_publish`, 
    `doc_date`, 
    `term`,
    `adress_register`,
    `comment`
) VALUES (
    '$user_ip',
    '$delivery_date',
    '$date', 
    '$time', 
    '$name', 
    '$surname', 
    '$secondname', 
    '$phone', 
    '$birthdate', 
    '$birhtplace', 
    '$citizenship', 
    '$doc', 
    '$docid', 
    '$docpublish', 
    '$docdate', 
    '$regterm',
    '',
    '$comment'
)";

//внесём данные с формы в БД
if (mysqli_query($link, $sql) === TRUE) {
    printf("Успешно\n");
} else {
    printf("Ошибка: %s\n", mysqli_error($link));
}

mysqli_close($link);
}

Пытаюсь сделать следующее:
1. При записи в бд провести проверку на предмет повтора значений в полях phone и ip.
2. При отсутствии совпадений записать "0" в поле repeat.
3. При нахождении совпадений записать "1" в поле repeat и значение id, которое было присвоено той записи с повторяющимся номером или ip в поле repeat_id.
Подскажите, пожалуйста, как это реализовать?
  • Вопрос задан
  • 53 просмотра
Пригласить эксперта
Ответы на вопрос 1
@ishimitsu
Веб-разработчик
$userId = 2;
// Получаем записи, если есть повторения
$checkRepeat = "SELECT *  FROM ".$dbTable." WHERE id = 1 OR name = 'user'";
$results = mysqli_query($link, $checkRepeat);
if($checkRepeat) {
    // тут код для записи "1"
   // Запускаем цикл, если повторений будет больше чем одно
    while($row = mysqli_fetch_assoc($results)){
        $sqlInsert = "UPDATE users SET repeat_id = ".$userId." WHERE id = ".$row['id']." ";
        $result = mysqli_query($link, $sqlInsert);
        print_r($row['id'] . "\n");
        $sqlInsert = "INSERT TO users ( repeat ) VALUES ('1')";
        $result = mysqli_query($link, $sqlInsert);
        print_r($userId . "\n");
    }
}else {
    // тут код для записи "0"
}

Это простой пример, который я написал за 5 минут, можно много чего оптимизировать в нем. Но это работает, думаю тут все понятно
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы