Как поправить код

S2
На сайте с 12.06.2011
Offline
112
238

Подскажите как поправить код для перезаписи значений в базе данных. код ниже. задача такая. при запуске скрипта доп. поля на движке DLE в базе данных перезаписываются, но если еще раз запустить скрипт, то в базе данных будет затираться (удаляться) первое доп.поле со значением. как прописать условие, чтобы перезаписывались те доп.поля, которые прописаны только для выполнения в скрипте.  для наглядности записал видео - https://wdfiles.ru/1szv2

Сам код.

<?php

$dbhost = "localhost"; // Хост1
$dbuser = "*****_basekomp"; // Пользователь баз данных
$dbpassword = "*****"; // Пароль
$dbname = "*****"; // Имя баз данных


// Подключение к базе
$db = new mysqli($dbhost, $dbuser, $dbpassword, $dbname);

// Проверка подключения с баз данных
if ($db->connect_errno) {
  echo '<p>Не удалось подключиться к базе данных!</p>';
  echo $db->connect_error;
  exit;
}

$db->set_charset('utf8');

// Экранируем
$id = $db->real_escape_string($_POST['id']);
$new_companies = $db->real_escape_string($_POST['companies']);
$new_price = $db->real_escape_string($_POST['price']);
// $new_title = $db->real_escape_string($_POST['title_fulstor']);
$new_total_phones = $db->real_escape_string($_POST['total_phones']);
$new_unique_email = $db->real_escape_string($_POST['unique_email']);
$new_mobile_numbers = $db->real_escape_string($_POST['mobile_numbers']);
$new_site_compani = $db->real_escape_string($_POST['site_compani']); 


// Получаем значения xfields
$query = "SELECT xfields FROM dle_post WHERE id='$id'";
$result = $db->query($query);

if ($result) {
  $row = $result->fetch_assoc();
  $xfields = $row['xfields'];

  // Разбиваем xfields на пары
  $pairs = explode('||', $xfields);
  $data = [];
  foreach ($pairs as $pair) {
    $parts = explode('|', $pair);
    if (count($parts) == 2) {
      $data[$parts[0]] = $parts[1];
    }
  }

  // Меняем нужные значения
  $data['price'] = $new_price;
  $data['companies'] = $new_companies;
  $data['total-phones'] = $new_total_phones;
  $data['unique-email'] = $new_unique_email;
  $data['site-compani'] = $new_site_compani;
  $data['mobile-numbers'] = $new_mobile_numbers;
 
 
  // Формируем новое значение обратно в xfields
  $new_xfields = '';
foreach ($data as $key => $value) {
    $new_xfields .= "||$key|$value";
  }
$new_xfields = substr($new_xfields, 1);

  // Обновляем бд
  $update_query = "UPDATE dle_post SET xfields='$new_xfields' WHERE id='$id'";

   $update_result = $db->query($update_query);

  if ($update_result) {
    echo "Данные успешно обновлены!";
  } else {
    echo "Ошибка при обновлении данных: " . $db->error;
  }
} else {
  echo "Ошибка при выполнении запроса: " . $db->error;
}

// Закрываем соединение с базой данных
$db->close();
?>


href.li: hide your referrer
  • href.li
Create an anonymous link that will hide the HTTP Referer header.
W1
На сайте с 22.01.2021
Offline
297
#1
Ну и скажи, мил человек, что тут делает цифра 1?
$new_xfields = substr($new_xfields, 1);
Охота время тратить, чтобы записывать видео, вместо того, чтобы аккуратно написать код?
Мой форум - https://webinfo.guru –Там я всегда на связи
V
На сайте с 17.11.2010
Offline
236
#2
webinfo #:
Ну и скажи, мил человек, что тут делает цифра 1?
Охота время тратить, чтобы записывать видео, вместо того, чтобы аккуратно написать код?

Да откуда человек знает, это гопота код писала. А он как известно код писать не может. Вот эти огрызки нам сюда и кинули - что бы допилили.

S2
На сайте с 12.06.2011
Offline
112
#3
webinfo #:
Ну и скажи, мил человек, что тут делает цифра 1?
Охота время тратить, чтобы записывать видео, вместо того, чтобы аккуратно написать код?

до вас я не знаю как достучаться еще. если я спрашиваю здесь совет, значит я не понимаю этот язык или вы родились с ним в роддоме. и вы я уверен начинали с тупых вопросов как и я. хотя мне этот код другой человек посоветовал, но когда я его попробовал в деле, то он все данные из доп.полей перезаписывает, только при повторном запуске скрипт удаляет первое доп.поле. я и спрасил совет, как можно исправить? а вы мне на вопрос вопросом - " что тут делает цифра 1? ". такое ощущение, что вы мне заказали скрипт и не понимаете почему я выставил цифру 1. если я бы понимал, то меня здесь бы не было.

W1
На сайте с 22.01.2021
Offline
297
#4
sotex2 #:

почему я выставил цифру 1. если я бы понимал, то меня здесь бы не было.

Но я действительно не понимаю, зачем поставлена цифра 1. Я писал в другой теме по этому же скрипту совершенно другой код:

$new_xfields = substr($new_xfields, 2);

Зачем надо было менять цифру 2 на цифру 1, и после этого создавать ещё одну тему по тому же вопросу, да ещё и с неинформативным видео - это для меня загадка.

S2
На сайте с 12.06.2011
Offline
112
#5
webinfo #:

Но я действительно не понимаю, зачем поставлена цифра 1. Я писал в другой теме по этому же скрипту совершенно другой код:

Зачем надо было менять цифру 2 на цифру 1, и после этого создавать ещё одну тему по тому же вопросу, да ещё и с неинформативным видео - это для меня загадка.

Помогло, спасибо.

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий