Как увеличить значение в базе данных при отправке формы с тем же полем ввода (как в прошлый раз) - PullRequest
0 голосов
/ 22 сентября 2018

Я хочу, чтобы значение (а не значение идентификатора BTW) увеличивалось, когда пользователь вводит то же значение в поле ввода.

Например, допустим, что значение находится в столбце «число» в таблице базы данных икаждый раз, когда пользователь отправляет форму с помощью допустим, что «hello» в поле ввода целочисленное значение в столбце «number» увеличивается на определенное значение.

Ответы [ 2 ]

0 голосов
/ 08 октября 2018

Я нашел код.Это в PHP 5. (что-то).
Вот код:

if(isset($_POST["Form input"])) {

$input=$_POST["input"];
$ip = getenv("REMOTE_ADDR");
$date=date("d M Y -- H");
$qry_get="select * from `table` where col = '".$input."'";
$qry_get_run=mysql_query($qry_get);
if ($qry_get_run) {
  $ret=mysql_num_rows($qry_get_run);
  if ($ret==0) {


    $qry_ins="INSERT INTO `table` (`col 1`, `col 2`, `col 3`) VALUES ('val1', 'val2', 'val3')";
    $qry_ins_run=mysql_query($qry_ins);
    if ($qry_ins_run) {
      echo "success message";
    }else{
      echo mysql_error();
    }
  }else{
     while ($get=mysql_fetch_assoc($qry_get_run)) {
        $val2=$get['col 2'];
        $id=$get['id'];



        $up_val=$val2+3;


        $qry = "update table_name set `col 2`='".$up_val."' where id='".$id."' ";
        $qry_run=mysql_query($qry);

     }
   }
 }
}
0 голосов
/ 22 сентября 2018

Вы должны использовать триггерные функции для этой задачи, потому что в таблице возможен только один ключ автоинкремента

Если вы используете postgres, вы можете использовать

create or replace function increment_version() returns trigger as $$
declare 
    new_version integer;
begin
    select max(version) into new_version from YOU_TABLE_NAME where CONDITIONS_YOU_NEED;
    new.version = new_version + 1;
    return new;

create trigger increment_version after insert on YOUR_TABLE_NAME
for each row execute increment_version();

Также вы можете использовать правила длязавершить эту задачу

create rule increment_version as on insert to YOUR_TABLE
do update YOUR_TABLE set version=versino+1 where id = new.id;

Но учтите, что в случае ошибки триггер выдаст вам исключение, а правило - не

правила в pg https://www.postgresql.org/docs/8.2/static/rules-update.html триггеры в pg https://www.postgresql.org/docs/9.6/static/plpgsql-trigger.html

Если вы используете mysql, вы также можете использовать триггеры, но синтаксис немного отличается https://dev.mysql.com/doc/refman/5.5/en/trigger-syntax.html

create trigger version after insert on YOUR_TABLE for each row begin
begin
    select max(version) into new_version from YOU_TABLE_NAME where CONDITIONS_YOU_NEED; 
    set new.version = new_version;
end;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...