Я пытаюсь создать способ проверки обновления поля ввода, который проверяет, является ли поле ввода пользователя пустым или нет. И затем в зависимости от ответа, если он пуст или не делать больше проверок. Так, например, если поле ввода пустое, я хочу, чтобы оно было проигнорировано, поэтому остальная часть кода выполняется, и если есть значение внутри поля ввода, будут сделаны еще некоторые проверки, чтобы проверить, находится ли оно в базе данных или нет, и если он не находится внутри базы данных, он должен быть вставлен в базу данных, а если он уже есть, просто обновите это поле.
Таблица является относительной к основной таблице, где inf_id
является основной таблицей, а userid
является реляционной, в которой я работаю
Таким образом, я пытался сделать это по-другому, но я продолжаю сталкиваться с проблемами, и каждый раз, когда я совершаю ошибку или что-то не работает, я получаю страницу HTTP 500 error
, в которой говорится, что она недоступна. Я также попытался изменить name
во входных данных на другие, чтобы увидеть, работает ли этот эффект и другие макеты или что-то другое, но я чувствую, что это что-то маленькое, что я пропускаю на
тоже устал, но я, возможно, сделал это неправильно, так как я никогда не использовал это раньше
IF EXISTS (SELECT count(*) FROM `table` WHERE inf_id = $infid)
BEGIN UPDATE GOES HERE END ELSE BEGIN INSERT GOES HERE END
Это мой Код в форме, чтобы проверить, есть ли в базе данных входные данные, если нет, то создается пустой ввод. Однако, если в базе данных есть значения, она выдает их
$vId = $_GET['i']; //this is the users unique ID that is send in the query string for testing purpose
if (mysqli_num_rows($rs_username) == 0 ){
echo '<input type="text" name="currentusername[]" class="currentusername" placeholder="Current Bikes" >';
} else {
while ($rs_bike_rows = mysqli_fetch_assoc($rs_bikes)) {
echo '<input type="text" name="currentusername[]" class="currentusername" value="' . $row['currentusername'] . '">';
echo '<input type="hidden" name="userid[]" value="' . $row['userid'] . '">';
echo '<button type="button" onclick="return deleteFromDbBike('. $rs_bike_rows['oid'] .', '. $vId .');">Delete</button>';
}
}
Это для очистки входных данных, которые пользователь вводит в файл процесса
if (isset($_POST['currentusername']) && $_POST['currentusername'] !== '') {
$currentusername = $_POST['currentusername'];
$allusername = '';
foreach ($vcurrentbike as $users) {
$allusername .= $users. ' ';
}
if (filter_var($allusername , FILTER_SANITIZE_STRING) === null) {
$vValidation++;
}
} else {
$currentusername= '';
}
позже в файле процесса, чтобы затем проверить входное значение и обновить / вставить его
$user = $_POST['userid'];
if ($currentusername != '') {
for ($i = 0; $i < count($user); $i++) {
$userid = $bike[$i];
$valueuser = $currentusername[$i];
$sqlcheck = "Select `inf_id` FROM usertable WHERE inf_id = $vId";
$resultcheck = mysqli_query($conn,$sqlcheck);
if (mysqli_num_rows($resultcheck) >= 1) {
$stmt = $conn->prepare("UPDATE usertable SET currentusername = ? WHERE inf_id = ? and userid = ?");
$stmt->bind_param("sii", $currentperson, $infid, $ownedid);
$currentperson = $valueuser ;
$infid = $vid;
$ownedid = $userid;
$stmt->execute();
//the update code works (tried and tested) just using
//exit to see where the code goes.
exit('1');
} else {
//this is where the insert value would be however I can
//never get it to echo 0 when it exits; instead i just get a HTTP 500;
exit('0');
}
};
} else {
exit('fails');
}
В конце я хочу, чтобы он мог проверить, вводил ли пользователь значения, а затем, в зависимости от того, имеют они или нет, либо вставить, либо обновить. и если пользователь не просто проигнорировал это. и перейти на следующее поле
Редактировать
это в основном имеет 2 уровня к этому утверждению
Уровень 1:
1.1) если пользовательский ввод пуст, игнорируйте его полностью.
1.2) если пользовательский ввод имеет значение, проверьте его по базе данных
Уровень 2:
2.1) если значение существует в базе данных, обновите значения
2.2) если значения не существуют, вставьте их в базу данных.
Ошибка, с которой я сталкиваюсь, состоит в том, что, если значение не находится в базе данных, для начала оно создаст пустое поле ввода.
Теперь, когда пользователь добавляет текст в пустое поле, он хочет обновить его, но его не существует. так что из-за ошибок у меня как обновить нечего
Состояния поля ввода могут быть:
1) пусто без значения
2) Имеет добавленное значение, поэтому его нет в db
3) имеет значение от первоначального представления формы в дБ
РЕДАКТИРОВАТЬ 2: добавить еще кнопку
<button type="button" onclick="addMoreRows('user')"> Add More Current Usernames</button>
<div id="currentuser"></div>
var itemTypes = {
user:{
maxLimit: 4,
currentCount: 1,
selector: '#currentuser',
newElement: '<div class="moreusersadd"><input type="text" name="currentusernameadd[]" class="currentusernameadd" placeholder="Current Bikes" ><button class="delete" onclick="deleteRow(this, \'user\')">Delete</button></div>'
}
}
function addMoreRows(type){
var item = itemTypes[type];
if (item.currentCount < item.maxLimit) {
item.currentCount++;
$(item.selector).append(item.newElement);
}
else {
alert('You Have Reached the limits')
}
}
function deleteRow(event, type){
$(event).parent('div').remove();
itemTypes[type].currentCount--;
};