• Как рассчитать покупку криптовалюты?

    @Chesterfield25 Автор вопроса
    сергей кузьмин, а как быть если в btc_price может быть и int значение и float?
  • Как рассчитать покупку криптовалюты?

    @Chesterfield25 Автор вопроса
    сергей кузьмин,

    @FXML
        void btnBuyClicked(ActionEvent event) {
             Number btc_sum = 100000000 / parseFloat(btc_price.getText().toString());
             float usd_sum = btc_sum *  Integer.parseInt(usd_buy.getText().toString());
             float total_buy = 0.00000001 * usd_sum;
    
             float result_sum = float total_buy.getText();
        }
    
        private Number parseFloat(String text) {
            return null;
        }
    
    }
  • Как сделать множественную выборку?

    @Chesterfield25 Автор вопроса
    Дмитрий, Сейчас работает как и должно
  • Как сделать множественную выборку?

    @Chesterfield25 Автор вопроса
    Дмитрий, Ну они есть это товар 1 и 3
  • Как сделать множественную выборку?

    @Chesterfield25 Автор вопроса
    Дмитрий, С ошибкой мой косяк, разобрался только не находит товары, выдает что товар не найден.
    // сообщаем пользователю, что товары не найдены
        echo json_encode(array("message" => "Товары не найдены."), JSON_UNESCAPED_UNICODE);
  • Как сделать множественную выборку?

    @Chesterfield25 Автор вопроса
    Дмитрий, Перешел с 8 версии php на 7 показало
    Parse error:  syntax error, unexpected 'products' (T_STRING) in /api/models/products.php on line 50
  • Как сделать множественную выборку?

    @Chesterfield25 Автор вопроса
    Дмитрий, HTTP ERROR 500 А логи на хосте пустые
  • Как сделать множественную выборку?

    @Chesterfield25 Автор вопроса
    Дмитрий, Первые 2 варианта срабатывают, очень благодарен за помощь а с третьим ошибка
  • Как правильно выбрать все товары?

    @Chesterfield25 Автор вопроса
    Dr. Bacon, ошибся, у самого уже мозг кипит
  • Как сделать множественную выборку?

    @Chesterfield25 Автор вопроса
    Такое условие тоже не работает

    // выбираем все записи
        $query = "SELECT p.name, p.id 
        FROM products AS p
        LEFT JOIN product_country AS cp 
        ON cp.product_id = p.id 
        WHERE cp.country_id IN (1 AND 2)";
  • Как сделать множественную выборку?

    @Chesterfield25 Автор вопроса
    Дмитрий, товары которые продаются во всех странах, а по ссылке /api/products/readAllCountry.php?country_id=1 вывести те товары которые продаются в стране с id=1
  • Как сделать множественную выборку?

    @Chesterfield25 Автор вопроса
    Дмитрий, Если у меня запрос такого рода

    // выбираем все записи по странам где cp.country_id IN (1) это id страны
        $query = "SELECT p.name, p.id 
        FROM products AS p
        LEFT JOIN product_country AS cp 
        ON cp.product_id = p.id 
        WHERE cp.country_id IN (1)";


    или такого

    // выбираем все записи по странам где cp.country_id IN (2) это id страны
        $query = "SELECT p.name, p.id 
        FROM products AS p
        LEFT JOIN product_country AS cp 
        ON cp.product_id = p.id 
        WHERE cp.country_id IN (2)";


    То выбирает все записи по стране где cp.country_id IN (2) это id страны

    А если запрос такого рода

    // выбираем все записи по странам где cp.country_id IN (2) это id страны
        $query = "SELECT p.name, p.id 
        FROM products AS p
        LEFT JOIN product_countryNj  AS cp 
        ON cp.product_id = p.id 
        WHERE cp.country_id IN (1,2)";


    То выбирает не просто все записи а дублирует их как в таблице product_country
    Товар 1 и товар 3 выводит по два раза.
    631a3d2423835260648990.png
    631a3daf6883e916152778.png

    Если взять такое условие то выводятся всего три товар то есть либо у которых country_id=1 или country_id=2
    WHERE cp.country_id IN (1 || 2)";
    А вот условие ниже работает по какой то причине точно так же как и то что выше, а должно выводить товары у которых и country_id=1 и country_id=2
    WHERE cp.country_id IN (1 && 2)";
  • Как сделать множественную выборку?

    @Chesterfield25 Автор вопроса
    Дмитрий, При переходе по ссылке /api/products/readAllCountry.php?country_id=1
    Получить товары у которых в product_country на против в таблице country_id=1
    631a1a9e59c3e133096989.png

    А по ссылке /api/products/readAllCountry.php вывести только те товары у которых есть напротив в таблице и country_id=1 и country_id=2 то есть все города.

    Исходя из таблицы product_country выше если переход на страницу /api/products/readAllCountry.php должен вывестись только товар с id 1 так как этот товар продается во всех странах в данном случае в двух. А перейдя по ссылке /api/products/readAllCountry.php?country_id=1 я должен получить уже два товара с id=1 и 2
  • Как сделать множественную выборку?

    @Chesterfield25 Автор вопроса
    Дмитрий, 1 продукт привязан к двум странам а 2 к одной
    В файле readAllCountry.php
    Добавил строку
    $product->country_id = isset($_GET["country_id"]) ? $_GET["country_id"] : die();

    И при переходе по ссылке /api/products/readAllCountry.php?country_id=1 и по ссылке /api/products/readAllCountry.php?country_id=2
    Я получаю один и тот же результат
  • Как сделать множественную выборку?

    @Chesterfield25 Автор вопроса
    Создал такую функцию

    // метод readCountryIdAll() - получение абсолютно всех товаров которы продаются во всех странах
       function readCountryIdAll() {
    
        // выбираем все записи
        $query = "select 
        country.* ,
       products.*
    from country
    join product_country on country.id = product_country.country_id
    join products on products.id = product_country.product_id";
    
        // подготовка запроса
        $stmt = $this->conn->prepare($query);
    
        // выполняем запрос
        $stmt->execute();
    
        return $stmt;
    }


    В файле readAllCountry.php вывожу в JSON формате. То если я перехожу по ссылке /api/products/readAllCountry.php получаю два раза один и тот же продукт c id1 и один продукт с id2. Всего в бд 2 продукта

    <?php
    // необходимые HTTP-заголовки
    header("Access-Control-Allow-Origin: *");
    header("Content-Type: application/json; charset=UTF-8");
    
    // подключение базы данных и файл, содержащий объекты
    include_once "../config/database.php";
    include_once "../models/products.php";
    
    // получаем соединение с базой данных
    $database = new Database();
    $db = $database->getConnection();
    
    // инициализируем объект
    $product = new Product($db);
     
    // запрашиваем товары
    $stmt = $product->readCountryIdAll();
    $num = $stmt->rowCount();
    
    // проверка, найдено ли больше 0 записей
    if ($num>0) {
    
        // массив товаров
        $products_arr = array();
        $products_arr["records"] = array();
    
        // получаем содержимое нашей таблицы
        // fetch() быстрее, чем fetchAll()
        while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
    
            // извлекаем строку
            extract($row);
    
            $product_item = array(
                "id" => $id,
                "name" => $name,
                "description" => html_entity_decode($description),
                "price" => $price,
                "subcategory_id" => $subcategory_id,
                "subcategory_name" => $subcategory_name
            );
    
            array_push($products_arr["records"], $product_item);
        }
    
        // устанавливаем код ответа - 200 OK
        http_response_code(200);
    
        // выводим данные о товаре в формате JSON
        echo json_encode($products_arr);
    } else {
    
        // установим код ответа - 404 Не найдено
        http_response_code(404);
    
        // сообщаем пользователю, что товары не найдены
        echo json_encode(array("message" => "Товары не найдены."), JSON_UNESCAPED_UNICODE);
    }


    Только у него разные подкатегории и цены

    {"records":[
    {"id":"1",
    "name":"Sony Noise Cancelling Headphones WHCH710N: Wireless Bluetooth Over the Ear Headset with Mic for Phone-Call, Black","description":"Sony Noise Cancelling Headphones WHCH710N: Wireless Bluetooth Over the Ear Headset with Mic for Phone-Call, Black","price":"98","subcategory_id":"1","subcategory_name":null},
    {"id":"1",
    "name":"Sony Noise Cancelling Headphones WHCH710N: Wireless Bluetooth Over the Ear Headset with Mic for Phone-Call, Black","description":"Sony Noise Cancelling Headphones WHCH710N: Wireless Bluetooth Over the Ear Headset with Mic for Phone-Call, Black","price":"98","subcategory_id":"1","subcategory_name":null},
    {"id":"2",
    "name":"PlexDisc DVD-R 4.7GB 16x Branded Logo Recordable Media Disc - 100 Disc (no Container) FFP 632-817-BX","description":"PlexDisc DVD-R 4.7GB 16x Branded Logo Recordable Media Disc - 100 Disc (no Container) FFP 632-817-BX","price":"21","subcategory_id":"2","subcategory_name":null}]}
  • Как структурировать бд?

    @Chesterfield25 Автор вопроса
    Одиночка Айс, Так какой вариант лучше подойдет для моего решения?
    63186894e921d099128023.png

    У меня есть таблица с странами далее таблица разделов, категорий относящихся к определенным разделам, подкатегорий относящихся к определенным категориям и таблица продуктов которая относится к определенной подкатегорие и одной, нескольким или всем странам. Для реализации изначально поставленного вопроса подойдет products_countries (product_id, country_id) данное решение. Ну как быть если после того как пользователь выберет определенную страну, в ней выводить не все разделы, категории и подкатегории а только те в которых есть продукты относящиеся к выбранной стране?
  • Как структурировать бд?

    @Chesterfield25 Автор вопроса
    Женя Ренессанс, А если нужно что бы и страна имела много продуктов и продукт имел много стран, в некоторых случаях это может быть и одна страна а в некоторых и все которые я укажу. Как тогда структурировать бд?
  • Как структурировать бд?

    @Chesterfield25 Автор вопроса
    SagePtr, Правильно я понял?

    CREATE TABLE IF NOT EXISTS `product_country` (
        `product_id` int(11) NOT NULL,
        `country_id` int(11) NOT NULL,
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8 ;
    
    CREATE TABLE IF NOT EXISTS `product_shop` (
        `product_id` int(11) NOT NULL,
        `shop_id` int(11) NOT NULL,
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8 ;
    
    CREATE TABLE IF NOT EXISTS `product_section` (
        `product_id` int(11) NOT NULL,
        `section_id` int(11) NOT NULL,
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8 ;
    
    CREATE TABLE IF NOT EXISTS `product_category` (
        `product_id` int(11) NOT NULL,
        `category_id` int(11) NOT NULL,
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8 ;
    
    CREATE TABLE IF NOT EXISTS `product_subcategory` (
        `product_id` int(11) NOT NULL,
        `subcategory_id` int(11) NOT NULL,
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8 ;


    А у таблицы products удалить shop_id, country_id и subcategory_id?
  • Как структурировать бд?

    @Chesterfield25 Автор вопроса
    Женя Ренессанс, Правильно я понял?

    CREATE TABLE IF NOT EXISTS `product_country` (
        `product_id` int(11) NOT NULL,
        `country_id` int(11) NOT NULL,
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8 ;
    
    CREATE TABLE IF NOT EXISTS `product_shop` (
        `product_id` int(11) NOT NULL,
        `shop_id` int(11) NOT NULL,
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8 ;
    
    CREATE TABLE IF NOT EXISTS `product_section` (
        `product_id` int(11) NOT NULL,
        `section_id` int(11) NOT NULL,
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8 ;
    
    CREATE TABLE IF NOT EXISTS `product_category` (
        `product_id` int(11) NOT NULL,
        `category_id` int(11) NOT NULL,
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8 ;
    
    CREATE TABLE IF NOT EXISTS `product_subcategory` (
        `product_id` int(11) NOT NULL,
        `subcategory_id` int(11) NOT NULL,
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8 ;


    А у таблицы products удалить shop_id, country_id и subcategory_id?