Как мне узнать id кнопки?

Я хочу настроить процесс загрузки файла таким образом, чтобы при его загрузке в базу данных отправлялась ссылка на файл. Однако, похоже, что я допустил ошибку, и система отправляет ссылку на картинку товара для всех товаров. Мне нужно, чтобы ссылка на картинку сохранялась только для конкретного товара в базе данных. Как правильно это реализовать?
  • 1 апреля 2025 г. 19:34
Ответы на вопрос 2
Для того чтобы правильно сохранить ссылку на изображение конкретного товара в базе данных, вам нужно убедиться, что у вас правильно настроен процесс загрузки файлов и связывания их с конкретными товарами. Вот шаги, которые могут помочь вам в этом:

1. **Определение ID товара**: Ваша кнопка загрузки файла должна быть связана с конкретным товаром. Обычно это делается с помощью ID товара. Если у вас уже есть кнопка, вы можете использовать атрибуты, например, `data-id`, чтобы хранить идентификатор товара.

    ```html
    <button class="upload-button" data-id="123">Загрузить изображение</button>
    ```

2. **Обработка события загрузки**: В JavaScript или на серверной стороне (в зависимости от того, как у вас реализован загрузчик) необходимо получить ID товара, когда пользователь нажимает кнопку.

    ```javascript
    document.querySelectorAll('.upload-button').forEach(button => {
        button.addEventListener('click', function() {
            const productId = this.getAttribute('data-id');
            // Здесь вы можете вызвать функцию для загрузки файла, передавая productId
        });
    });
    ```

3. **Загрузка файла**: Используйте AJAX или другую технологию для загрузки файла на сервер. Убедитесь, что вы также отправляете `productId` вместе с запросом.

    ```javascript
    function uploadFile(file, productId) {
        const formData = new FormData();
        formData.append('file', file);
        formData.append('productId', productId);

        fetch('/upload', {
            method: 'POST',
            body: formData
        }).then(response => {
            // Обработка ответа
        });
    }
    ```

4. **Сохранение ссылки на изображение**: На серверной стороне, после успешной загрузки файла, вы сохраняете ссылку на файл в базе данных, связывая ее с соответствующим `productId`.

    Например, если вы на PHP:

    ```php
    if (isset($_FILES['file']) && isset($_POST['productId'])) {
        $productId = $_POST['productId'];
        // Обработка загрузки файла и получение пути к нему
        $filePath = 'uploads/' . $_FILES['file']['name'];
        
        // Здесь сохраняем ссылку на изображение в базу данных, используя $productId
        $sql = "UPDATE products SET image_url = '$filePath' WHERE id = $productId";
        // Выполнение запроса...
    }
    ```

5. **Проверка и тестирование**: После реализации убедитесь, что при загрузке изображения ссылка сохраняется только для соответствующего товара. Проверьте в базе данных, что все работает как задумано.

С помощью этих шагов вы сможете правильно сохранить ссылку на изображение для каждого конкретного товара, избегая ошибок с привязкой изображений к неверным товарам.
Здесь вы вроде бы правильно обновляете картинку только у нужного товара по его айди 

$query = mysqli_query($link,"UPDATE tovars SET img = '$names$name' WHERE id = '$id'");


Но откуда ID то берется?

Передавайте идентификатор вместе с картинкой
<form method="post" enctype="multipart/form-data">
  <label for="tovar_full">Изображение товара</label> 
  <input type="hidden" name="id" value=" тут айди товара, к которому нужно прикрепить картинку " />
  <input type="file" name="filename" size="10" />
  <input type="submit"  value="Загрузить" />
</form>


и на сервере соответственно

$names = "https://smm-services.ru/admin/";
$id = $_POST['id']; // получить ID из формы
$query = mysqli_query($link,"UPDATE tovars SET img = '$names$name' WHERE id = '$id'");


PS
Нельзя вставлять данные в запрос напрямую полученные от пользователя. Узнайте, что такое sql-инъекции и как от них защищаться.
Похожие вопросы