Как установить и передать ассоциативный массив в функцию php - PullRequest
0 голосов
/ 16 мая 2019

В базе данных три таблицы:

1-stocks :

`stocks-id | stocks_name | description`

2-Selers :

`Selers-id | Selers_name | message`

3-Stock_Seller: //shows which seller has wich stock to sell

`Selers-id | Selers_id`

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

B - поиск в таблице продавца-продавца, чтобы найти, у какого продавца есть эти акции для продажи и получения сообщения продавца

C-Поиск в таблице Акции, чтобы найти описание акции, которая у продавца было это продать

D- распечатать сообщение продавца и акции, которые они должны продать так:

Seller1: Hi we have these requested stocks, call us: 012345678

red shirt sleeve shirt for men, size large price: 23$

blue shirt...

Sellers2: Hi, Have a nice shopping, call us: 0987654321

red short sleeve shirt for men, size large Price: 23$

orange shirt ....

purple shirt ....

мои коды приведены ниже: но проблема в том, что я не могу разделить сообщение каждого продавца и акции в одной части, и сообщение продавца напечатано много раз для каждой акции, а акции продавцов напечатаны смешанными

Я думаю, что мне следует использовать массивы, но я не знаю, как

function find($name, $name1, $name2, $name3)
{
    global $db;
    //**A**: find stocks wich have this word in their name
    $query = "select * from Stoks WHERE  REPLACE(`stocks_name`, '/', '')='" . $name . "'
                                     OR REPLACE(`stocks_name`, '/', '') ='" . $name1 . "'
                                     OR REPLACE(`stocks_name`, '/', '') ='" . $name2 . "'
                                     OR REPLACE(`stocks_name`, '/', '') ='" . $name3 . "'";
    $res = mysqli_query($db, $query);
    $num = mysqli_num_rows($res);
    //    $row = mysqli_fetch_assoc($res);
    $endresult = "";
    while ($row = mysqli_fetch_assoc($res)) //For each Stoks :
    {
        //**B**:find available sellers
        $query2 = "select distinct Selers-id from Stock_Seller WHERE stocks_id=" . $row[stocks_id];
        $res2   = mysqli_query($db, $query2);
        while ($row2 = mysqli_fetch_assoc($res2)) //For each seller
        {
            //**B**: Find sellers message
            $query_Selers = "select * from Selers WHERE Selers_id=" . $row2[Selers_id];
            $res_Selers   = mysqli_query($db, $query_Selers);
            $row_Selers   = mysqli_fetch_assoc($res_Selers);
            $endresult .= $row_Selers[message] . "\r\n";

            //Find stocks description
            $query_stocks = "select * from stocks WHERE stocks_id=" . $row[stocks_id];
            $res_stocks   = mysqli_query($db, $query_stocks);
            $row_stocks   = mysqli_fetch_assoc($res_stocks);
            $endresult .= $row_stocks[description] . "\r\n";
        }
    }
    return urlencode($endresult);
}

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

1 Ответ

1 голос
/ 16 мая 2019

Попробуйте выполнить приведенный ниже запрос, который я подготовил в соответствии с приведенной выше структурой таблицы, и какие шаги найти.
Я предположил, что слово искали в red в таблицах для запасов

SELECT s.stocks-id, s.stocks_name, s.description, sel.Selers-id, sel.Selers_name, sel.message FROM stocks AS s 
INNER JOIN stock_seller AS ss ON ss.stocks_id=s.stocks-id 
INNER JOIN selers AS sel ON sel.Selers-id = ss.Selers-id
WHERE s.stocks_name LIKE '%red%'

Дайте мне знать в комментариях в случае любой проблемы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...