Как вывести все данные из нескольких таблиц, используя mysqli php - PullRequest
1 голос
/ 28 марта 2019

Большинство переменных будут на моем языке извините за это. Также имейте в виду, что я очень мало знаю php / mysql, так как даже мои школьные учителя не знают, что это такое.

В моей базе 4 таблицы. Таблицы имеют только первичные ключи. Таблицы не имеют внешнего ключа или ссылок на другие таблицы. Это потому, что в моем школьном проекте нам сказали не добавлять внешний ключ и ссылки. Это означает, что я не могу / не знаю, как использовать JOIN. В настоящее время я пытаюсь вывести все данные из 4 таблиц и вывести их как 1, используя html / css.

Моя основная проблема - я не знаю, как выводить данные из разных строк.

Я пытался использовать mysqli_data_seek, чтобы выбрать каждую строку с моим counter($no), но кажется, что я либо использую его неправильно, либо он просто не должен этого делать. Я также пытался использовать mysqli_fetch_assoc, но все равно получаю тот же вывод.

У меня есть соединение с моей базой данных

Это код mysqli_data_seek

<?php

    $row = mysqli_query($connection, "SELECT Kod_Barang, Kod_Rak, Harga, Tarikh_Jual from stok");
    $no = 0;

    if (mysqli_num_rows($row) > 0) {
    while ($stok = mysqli_fetch_assoc($row)) {

        $stok = mysqli_query($connection, "SELECT Kod_Barang, Kod_Rak, Harga, Tarikh_Jual from stok");
        $datastok = mysqli_data_seek($stok, $no);

        //get data from "barang' table
        $barang = mysqli_query($connection, "SELECT Nama_Barang, no_Barang from barang");
        $databarang = mysqli_data_seek($barang, $no);

        //get data from "lokasi"
        $lokasi = mysqli_query($connection, "SELECT Jenis_Barang from lokasi");
        $datalokasi = mysqli_data_seek($lokasi, $no);

        //get data from "tarikh" table
        $tarikh = mysqli_query($connection, "SELECT Tarikh_Beli from tarikh");
        $datatarikh = mysqli_data_seek($tarikh, $no);

        $no++;

тогда после этого у меня будет выход, который связан с уже созданной таблицей (это все еще находится в цикле while)

    echo '<tr>';
    echo '<td>'.$no.' </td>';
    echo '<td>'.$datastok.'</td>';
    echo '<td>'.$databarang.'</td>';
    echo '<td>'.$datalokasi.'</td>';
    echo '<td>'.$datastok.'</td>';
    echo '<tr>';

Это код с mysqli_fetch_assoc

<?php

    $rowstok = mysqli_query($connection, "SELECT Kod_Barang, Kod_Rak, Harga, Tarikh_Jual from stok");
    $no = 0;

    if (mysqli_num_rows($rowstok)> 0) {
        while ($stok = mysqli_fetch_assoc($rowstok)) {


            $stok = mysqli_query($connection, "SELECT Kod_Barang, Kod_Rak, Harga, Tarikh_Jual from stok");
            $datastok = mysqli_fetch_assoc($stok);

            //get data from "barang" table
            $barang = mysqli_query($connection, "SELECT Nama_Barang, Bil_Barang from barang");
            $databarang = mysqli_fetch_assoc($barang);

            //get data from "lokasi" table
            $lokasi = mysqli_query($connection, "SELECT Jenis_Barang from lokasi");
            $datalokasi = mysqli_fetch_assoc($lokasi);

            //get data from "tarikh" table
            $tarikh = mysqli_query($connection, "SELECT Tarikh_Beli from tarikh");
            $datatarikh = mysqli_fetch_assoc($tarikh);

            $no++;

Снова вот моя выходная таблица

    //output table
    echo '<tr>';
    echo '<td>'.$no.' </td>';
    echo '<td>'.$datastok['Kod_Barang'].'</td>';
    echo '<td>'.$databarang['Nama_Barang'].'</td>';
    echo '<td>'.$datalokasi['Jenis_Barang'].'</td>';
    echo '<td>'.$datastok['Harga'].'</td>';
    echo '<tr>';

Прямо сейчас вывод просто показывает данные первых строк несколько раз в зависимости от количества строк. А также мой counter($no) в увеличении на 2 (1,3,5,7, ....) не так, как ожидалось 1 Я пытаюсь получить данные каждой строки.

1 Ответ

1 голос
/ 28 марта 2019

Я получил ответ благодаря @ADyson.Я просто изменил свою длинную строку кода на JOIN

    $data = mysqli_query($connection , "SELECT *
FROM stok
INNER JOIN barang
      ON stok.Kod_Barang=barang.Kod_Barang
INNER JOIN lokasi
      ON stok.Kod_Rak=lokasi.Kod_Rak
INNER JOIN tarikh
      ON barang.Nama_Barang=tarikh.Nama_Barang");

снова извините за неанглийские атрибуты.

здесь я выучил JOIN из другого вопроса Внутреннее соединение SQL более двухтаблицы

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