Как правильно отправить SQL запрос UPDATE?

Статус
В этой теме нельзя размещать новые ответы.
Сообщения
0
Реакции
-2
Доброе утро! Проблему помогите решить плиз. Долго бьюсь.

У меня страница php выгружает базу из SQL. После клика на картинку появляется кнопка с помощью <script> функции

if (type == "h" || type == "s" || type == "b") {eq.innerHTML = '<button onclick="Eq1()">Обновить данные</button>';}

До этого момента все отлично. Все работает.

Эта кнопка должна вызвать OnClick=Eq1(), которая отправит в базу запрос UPDATE.

Как это сделать?

Как-то умудриться вызвать php функцию из script? или через <script> как-то можно отправить запрос?
Я запутался. При этом подключение к базе есть в php и собраны все переменные.
19 Дек 2018
Нашел вот такой обходной путь интересный. Помогите плиз это обыграть на отправку запроса SQL UPDATE

Код:
<?php
$a = "hello";
?>

<script>
function echoHello()
{
alert("<?php hello(); ?>");
}
</script>

<?php
function hello() {
global $a;
echo $a;
}
?>

<button onclick="echoHello()">Say Hello</button>
[BGCOLOR=transparent]
19 Дек 2018
УРАА!! РЕшил! Спасибо! Вот ответ!![/BGCOLOR]
Код:
<?php
$a = "hello";
?>

<script>
function Eq1()
{
alert("<?php hello(); ?>");
}
</script>

<?php
function hello() {
global $a;
echo $a;
$db = mysql_connect('адрес','пользователь','пароль');
mysql_select_db('таблица', $db);

$result = mysql_query("UPDATE табилца SET значение=123 WHERE login='OverMouse'");
if ($result == 'true')
{
echo "Данные успешно обновлены.";
}
else
{
echo "Данные не обновлены!";
}
}

?>
Кнопка!!!
<button onclick="Eq1()">Обновить данные</button>
 
В этой теме было размещено решение! Перейти к решению.
Последнее редактирование модератором:
Сообщения
957
Реакции
1,185
Помог
52 раз(а)
Вот только апдейт происходит у вас при открытии страницы, а не по нажатию кнопки)
Чтобы сделать как хотите - нужно юзать AJAX. При помощи него дергать скрипт PHP, который уже будет непосредственно работать с СУБД.
 
Сообщения
0
Реакции
-2
Да. Я уже видел про AJAX. Но особо не вник еще. Проект срочный.
Кнопка нажимается > Данные отправились > Поставил обновление страницы. Стала пропадать $_POST. Сейчас пробую загонять в сессию инфу из POST. Должно получиться.

Я уже понял что по уму надо AJAX юзать
 
Сообщения
2,491
Реакции
2,791
Помог
61 раз(а)
Используйте форму с hidden полями и submit кнопкой.
 
Сообщения
0
Реакции
-2
Спасибо fantom. Спустя 5 часов ковыряний именно так и сделал ))) форма с hidden подошла идеально. Пришлось только все равно заморочиться с ней, чтобы кнопка верная появилась

<form action="testreg2.php" method="post">
<?php
echo '<input type="hidden" name="login" value="'.$login.'">';
echo '<input type="hidden" name="password" value="'.$password.'">';
?>
<p class=dline id="button"></p>
</form>

////
id=button тут inner.HTML дописывает еще <input type="submit" value="Надеть" onclick="Eq()">'; Т.к. в зависимости от нажатого объекта, появляется кнопка с отправкой POST нужно вызывать разные функции.

20 Дек 2018
Застрял в SQL сейчас. Вот так у меня работает

$result = mysql_query ("UPDATE amx_test SET body='$left' WHERE login='$sql_login'");

Но чтобы меньше было строк и проверок. Реально ли за место body вставить переменную?

$result = mysql_query ("UPDATE amx_test SET '$type'='$left' WHERE login='$sql_login'");

Вот в таком виде не работает. Переменные все проверил. Вся информация нужная там есть.
$type - строка.
$left - число.
 
Сообщения
265
Реакции
315
Помог
10 раз(а)
Обратите внимание, если вы хотите заключить сделку с этим пользователем, он заблокирован
OverMouse,
$result = mysql_query ("UPDATE amx_test SET `$type`='$left' WHERE login='$sql_login'");
 
Сообщения
0
Реакции
-2
Значит не в запросе дело. Хотя с body все ок. Запутался.
Sonyx
Везде в учебниках и примерах это используется. За что руки отрывать? Вы как-то по другому пишите это?
Если есть решение предоставьте. Щас бы руки отрывать за переписку на форумах хотя чат есть телеграмм!
 
Сообщения
2,491
Реакции
2,791
Помог
61 раз(а)
OverMouse, это веб. Тут каждый год что то устаревает и что то новое. Так то расширение mysql_* уже много лет как устарело и в php 7 его просто нет. Я вам уже писал о уроках Попова. Не стоит по ним учится. Также настоятельно рекомендую использовать подготовленные запросы, ибо сейчас у вас в коде чистые SQL иньекции.
 
Сообщения
207
Реакции
420
Помог
10 раз(а)
В текущем варианте если из базы строка с кавычкой придет - страница сломается.
И наоборот. Кавычка в запросе -- mysql error.
 
Сообщения
0
Реакции
-2
Изучил. Вник ) Действительно намного удобней переменные записывать в bind_param.

PHP:
$sqlUpdate = $mysqli->prepare("UPDATE amx_test SET inv2=? WHERE login=?");
$sqlUpdate->bind_param('is', $left, $sql_login);
Код весь адаптировал.

Дальше

Код:
<script>
function Eq2()
{
alert("<?php hello2(); ?>");
}
</script>

<?php
function hello2() {
$sql_login = $_SESSION['login'];
$left = $_SESSION['inv2'];
echo "Заменилось";
$sqlUpdate = $mysqli->prepare("UPDATE amx_test SET inv2=? WHERE login=?");
$sqlUpdate->bind_param('is', $left, $sql_login);
$sqlUpdate->execute();

}
?>
Без 3х строчек с $sqlUpdate все работает.
А с ними страница грузится только до первого $sqlUpdate
20 Дек 2018
Изучил. Вник ) Действительно намного удобней переменные записывать в bind_param.

PHP:
$sqlUpdate = $mysqli->prepare("UPDATE amx_test SET inv2=? WHERE login=?");
$sqlUpdate->bind_param('is', $left, $sql_login);
Код весь адаптировал.

Дальше

Код:
<script>
function Eq2()
{
alert("<?php hello2(); ?>");
}
</script>

<?php
function hello2() {
$sql_login = $_SESSION['login'];
$left = $_SESSION['inv2'];
echo "Заменилось";
$sqlUpdate = $mysqli->prepare("UPDATE amx_test SET inv2=? WHERE login=?");
$sqlUpdate->bind_param('is', $left, $sql_login);
$sqlUpdate->execute();

}
?>
Без 3х строчек с $sqlUpdate все работает.
А с ними страница грузится только до первого $sqlUpdate
Понял. Это все из-за alert. Надо как-то при нажатии кнопки обновить данные в SQL и Перейти на страницу с POST попорядку. Сначала SQL . Затем переход.
 
Сообщения
207
Реакции
420
Помог
10 раз(а)
Сообщения
0
Реакции
-2
Вот сейчас понял, что ajax нужно все же. Но не понял как вызвать его

PHP:
<script>
function Eq3() {
$.ajax({
  type: "POST",
  url: "testreg.php",
  data: "login=Azz&password=123",
  success: function(msg){
    alert( "Прибыли данные: " + msg );
  }
});
}
</script>
Решил стандартный пример взять. И тот не работает. Впервые использую ajax. Да и вообще я с php 4 дня как знаком. Раньше html в блокноте да память о колледже, что там проходили СУБД Access. Если он на JQuery, как я понял. Может надо присоединить библиотеку его? Или я перепутал все.

CrazyHackGUT, Сейчас попробую и то и другое. Весь проект встал на день из-за этого ))
21 Дек 2018
Решил задачу! Всем спасибо!

PHP:
<form action="sql_update.php" method="post">
<?php
echo '<input type="hidden" name="login" value="'.$login.'">';
echo '<input type="hidden" name="password" value="'.$password.'">';
echo '<input type="hidden" name="left" value="'.$left.'">';
echo '<input type="hidden" name="right" value="'.$right.'">';
?>
<p class=dline id="but_inv2"></p>
</form>
id="but_inv2" - это кнопка, вставляется в форму с помощью от функции <script>
eq.innerHTML = '<eq.innerHTML = '<input type="submit" value="Обновить">

При нажатии открывается sql_update.php
Там обрабатывается SQL запрос с подставленными переменными и вызывается возврат на страницу со всей POST информацией c помощью
PHP:
header("location: testreg.php", true, 307);
 
Сообщения
957
Реакции
1,185
Помог
52 раз(а)
Зачем так извращать элементарную задачу то?))

PHP:
<form action="sql_update.php" method="post">
<input type="hidden" name="login" value="<?=$login?>">
<input type="hidden" name="password" value="<?=$password?>">
<input type="hidden" name="left" value="<?=$left?>">
<input type="hidden" name="right" value="<?=$right?>">
<input type="submit" value="Обновить">
</form>
 
Сообщения
0
Реакции
-2
Снова всем привет! )) Огромное всем еще раз спасибо!

Мне для улучшения функционала, нужно как-то запомнить логин и пароль пользователя. Т.е. он заходит на страницу php , а там
форма:
Поле - логин
Поле - пароль
Кнопка - вход в ЛК.
Чекбокс - запоминить меня.

Прошу помощи понять, как сделать лучше?
1) Вариант, это пользователь ставит галочку снизу. Мол запомнить меня. И в файл записывается ему на комп 2 строки. Типа C:\log.txt (место положение вообще не важно). С его логином и паролем. А потом при входе читается. Вот меня смущает. Возможно ли сохранить вообще файл через php на комп клиенту? Ведь это по сути как-то странно.

2) Других вариантов пока придумать не могу. Может создать на хостинге файл и добавлять в его всех, кто жмет? Потом как-то прочитывать файл. Но тогда как php страница узнает, тот ли человек вообще зашел..чтобы автоматически нужные логин и пароль в поля забить.

3) Может это какие-то кукисы? Я с ними не работал. Может в них решение?

В общем опять я сел (((
26 Дек 2018
Такс.. Вроде это куки) Там время задавать можно. Пробую их щас реализовать
26 Дек 2018
Все получилось) Прошу прощения)
Регистрация куки получается такой. На год решил поставить)) Если правильно указал

PHP:
setcookie('AMX_Log',$login,time() + (86400 * 360));
setcookie('AMX_Pass',$password,time() + (86400 * 360));
А вызов вот такой. Круто!


PHP:
    $Cook_log = $_COOKIE['AMX_Log'];
    $Cook_pass = $_COOKIE['AMX_Pass'];
<input name="login" type="text" value="<?php echo $Cook_log; ?>" size="30" maxlength="30">
 
Сообщения
2,491
Реакции
2,791
Помог
61 раз(а)
И в файл записывается ему на комп 2 строки. Типа C:\log.txt (место положение вообще не важно). С его логином и паролем. А потом при входе читается. Вот меня смущает. Возможно ли сохранить вообще файл через php на комп клиенту?
нельзя так сделать. сайт не может просто так взять и записать файлы на клиент. Тогда бы выход в интернет был как поход в джунгли без споряжения - равно гибели.

Может это какие-то кукисы? Я с ними не работал. Может в них решение?
Как правило пишут в кукы (или localStorage если JWT). Но никто не записивает туда логин и пароль. Ибо тогда угнать тот самый пароль не составит труда


А в целом пользуйтесь готовими авторизациями. Благо их выбор богат
26 Дек 2018
Все получилось) Прошу прощения)
получилось очень и очень плохо. Стоит просто погуглить https://habr.com/post/109475/. Первая же ссилка из гугла
 
Сообщения
0
Реакции
-2
Мне нужно, чтобы клиент не сразу входил в Личный кабинет, а просто поля автозаполнялись. Т.к. он может у меня сменить имя и пароль. Если еще раз регистрировался. Это нормально для моего проекта. Нет цели сделать автовход.

Эмм.. вот интересно. Если можно кукисы так использовать. Зачем были такие сложности с POST? Если я мог просто в кукисы записывать логин и пароль и юзать их при обновлении страницы и тогда, в отличии от POST, ничего бы не терялось.
Я как бы чувствую разницу. Но-о-о...
 
Сообщения
2,491
Реакции
2,791
Помог
61 раз(а)
Тогда localStorage или кукы. Но в любом случае хранить пароль открыто плохая затея
 
Сообщения
0
Реакции
-2
fantom, спасибо. Сейчас попробую реализовать сразу все по нормальному.
 
Статус
В этой теме нельзя размещать новые ответы.

Пользователи, просматривающие эту тему

Сейчас на форуме нет ни одного пользователя.
Сверху Снизу