Подтянуть несколько таблиц на страницу

311
22 января 2017, 17:32

Здравствуйте. Есть страница заказа, и на неё должны подтягиваться данные с нескольких таблиц БД. Но дело в том, что при использовании mysql_fetch_assoc получается преобразовать только данные в ассоциативный массив из первой таблицы. При повторной попытке использовать функцию получаю в ответ false.

Пробовал запихнуть эту функцию ещё в одну функцию - результат такой же. Пробовал с двух таблиц тащить данные запросом:

SELECT * FROM `modificators` , `pricing`

В SQL данные нормально подтягиваются, но вот в PHP только данные первой таблицы.

В общем, не знаю даже что делать.

Код(в комментариях показал, где используется mysql_fetch_assoc):

<?php 
function priceCalc($quantity_item, $modificator_sum, $item_price){
    $total_amout = $quantity_item * ($item_price + $modificator_sum);   
    return $total_amout;
}
function sqlDataQuery($sql_connection, $table, $other_request){
    $sql_query = "SELECT * FROM `".$table."` ".$other_request;
    $sql_response = mysql_query($sql_query) or die("Invalid query: " . mysql_error());
    return $sql_response;
}

    require_once('db.php');
    $sql_connection = dbConnect();

    $sql_response = sqlDataQuery($sql_connection, 'modificators', '');
    $input = [];
    $i = 0;
    while($row = mysql_fetch_assoc($sql_response)){ // ПЕРВОЕ ИСПОЛЬЗОВАНИЕ
        $input[$i] = $row;
        $i++;
    }

    $data = [];
    foreach($input as $d){
        $gId = $d['id_group'];

        if(!isset($data[$gId])){
            $data[$gId] = [
                    'pricing' => [],
                    'names'   => []
                 ];
        }
        $data[$gId]['pricing'][] = $d['price'];
        $data[$gId]['names'][] = sprintf("%s %+.2f", $d['name'], $d['price']);
    }

    for($b = 0; $b < count($data); $b++){
        $selected_rate = $_POST['mod'.$b];
        $sum_modificators = $sum_modificators + $data[$b]['pricing'][$selected_rate]; 
    }
    $get_price = mysql_fetch_assoc(sqlDataQuery($sql_connection, 'pricing', 'WHERE `id` = 1')); // ВТОРОЕ ИСПОЛЬЗОВАНИЕ
    echo priceCalc($_POST['items'], $sum_modificators, $get_price['price']);
?>
Answer 1

Скорее всего нужно передавать соединение по ссылке:

function sqlDataQuery(&$sql_connection, $table, $other_request)

И хорошо бы очищать память с помощью(но это чисто для экономии):

mysql_free_result($sql_response);
READ ALSO
Как настроить форму обратной связи на сайте?

Как настроить форму обратной связи на сайте?

Сайт на хостинге с cPanelПочта используется с помощью biz

291
Не правильно работает парсер php

Не правильно работает парсер php

В общем простой, незамысловатый парсер, который работает только в верхней части страницыГугл сказал, что надо использовать $start и $finish, но если...

276