W mojej bazy danych mam 3 tabele:Pokaż wartości z innych tabel w pętli
train_information:
+----------+-----------------+------------------+
| train_id | number_of_axles | number_of_bogies |
+----------+-----------------+------------------+
| 1 | 4 | 2 |
+----------+-----------------+------------------+
osi:
+---------+----------+------+----------+
| axle_id | train_id | axle | distance |
+---------+----------+------+----------+
| 1 | 1 | 1 | 2500 |
| 2 | 1 | 2 | 5000 |
| 3 | 1 | 3 | 2500 |
+---------+----------+------+----------+
wózek:
+----------+----------+---------+----------+
| bogie_id | train_id | axle_nr | bogie_nr |
+----------+----------+---------+----------+
| 1 | 1 | 1 | 1 |
| 2 | 1 | 2 | 1 |
| 3 | 1 | 3 | 2 |
| 4 | 1 | 4 | 2 |
+----------+----------+---------+----------+
Kiedy coś zostaje włożona w tabeli train_information
, spust wstawia również w innych 2 tabel (Odległość & bogie_nr aktualizowane później, ale w tym przypadku wszystko jest już wypełniony).
Teraz wykonuję model pociągu na podstawie wartości distance & axle
. Teraz wygląda to tak:
<div id="axles">
<!--This is the last (useless) axle, wich always is 0-->
<div id="useless_circle"></div>
<!--Here we create the axles and style them with the distances-->
<?php
$show_axle = $database->axles($_GET['train_id']);
$total_distance = 0;
foreach($show_axle as $number_ofaxles){
$total_distance += $number_ofaxles['distance']; ?>
<div id="axle" name="test" style="margin-left:<?= $total_distance/25000*100;?>%">
<?= "<div id='circle'>" . $number_ofaxles['axle'] . "</div>";?>
</div>
<?php } ?>
</div>
oraz:
function axles($id){
$sql = "SELECT * FROM axle WHERE train_id = :id2";
$sth = $this->pdo->prepare($sql);
$sth->bindParam(":id2", $id, PDO::PARAM_STR);
$sth->execute();
return $sth->fetchAll();
}
Teraz strona wygląda następująco (z wartościami dB):
Podany kod jest tylko dla osi! (4 koła pod pociągiem)!
Teraz, co chcę:
Teraz, po prostu poprosić o wartości tabeli osi. ale zawiera tylko 3 osie zamiast 4. To dlatego, że chcę znać odległość MIĘDZY każdą osią. więc zawsze potrzebuję 1 mniej.
Rozwiązałem to, tworząc 1 dodatkowy element div, który tworzy okrąg (oś), a miejsca znajdują się po lewej stronie.
Co chciałbym mieć, to coś w stylu: pokaż axle_nr
ze stołu bogie
(więc pokazuje 4). Uzyskaj distance
gdzie axle
= axle_nr
.
Wtedy zawsze przechowuj 1 puste. ponieważ oś 4. nie istnieje w tabeli axle
. Więc chcę zrobić czek: jeśli oś nie istnieje, to odległość = 0. Nie chcę wstawiać tego do bazy danych, ale po prostu nie potrzebuję już bezużytecznego elementu div ORAZ oś pozostaje na lewo.
Dlaczego tego chcę?
W ten sposób mogę sprawdzić, które numery wózków są takie same, więc mogę dać im każdy inny kolor itp. Również nie będę potrzebował div bezużytecznego!
EDIT:
Proste wyjaśnienie:
Chcę pokazać Axle_nr
z tabeli bogie
.(W związku z tym wyświetla 4 kółka) ! Będę potrzebował Distance
ze stołu axle
, aby utworzyć figurę pociągu.
jak widać tabela axle
ma 1 oś mniej niż tabelę bogie
.
Chcę, aby oś "Nieistniejąca" miała wartość 0. Chcę, żeby była 0, ponieważ wtedy pojawi się na początku pociągu. (Podobnie jak bezużyteczne osi teraz)
CODE EDIT:
Teraz mam to:
<div id="axles">
<?php
$testingggg = $database->axleees();
foreach ($testingggg as $lol){ ?>
<div id="axle">
<div id="circle" name="<?= $lol['axle'] ?>"><?= $lol['axle'] ?></div>
</div>
<?php } ?>
</div>
I:
function axleees() {
$sql = "SELECT ti.axle_nr, ti.train_id, ti.bogie_nr, uti.axle_id, uti.train_id, uti.axle, uti.distance
FROM bogie as ti
JOIN axle as uti
ON ti.train_id = uti.train_id
WHERE ti.train_id = :train_id";
$sth = $this->pdo->prepare($sql);
$sth->bindParam(":train_id", $_GET["train_id"], PDO::PARAM_INT);
$sth->execute();
return $sth->fetchAll();
}
I to pokazuje mi 12 Osie zamiast 4!
EDIT:
to pokazuje mi 4 osie teraz wich jest poprawna. Jednak potrzebuję również prawidłowych odległości. Kod mam:
<div id="axles">
<?php
$total_distance = 0;
foreach ($testingggg as $lol){
$total_distance += $lol['distance'];
?>
<div id="axle" style="margin-left:<?= $total_distance/25000*100;?>%">
<div id="circle" name="<?= $lol['axle'] ?>"><?= $lol['axle_nr'] ?></div>
</div>
<?php } ?>
</div>
Teraz, to pokazuje mi, że każda oś ma margines 10%. jest to poprawne (jeśli masz tylko pierwszą oś). musi to być coś w rodzaju 10-15-10-15 lub więcej. Jak mam to zrobic?
EDIT:
Teraz mam zapytanie folowing:
function axleees() {
$sql = "SELECT ti.axle_nr, ti.train_id, ti.bogie_nr, uti.axle_id, uti.train_id, uti.axle, uti.distance
FROM bogie as ti
JOIN axle as uti
ON ti.train_id = uti.train_id
WHERE ti.train_id = :train_id
GROUP BY uti.axle_id";
$sth = $this->pdo->prepare($sql);
$sth->bindParam(":train_id", $_GET["train_id"], PDO::PARAM_INT);
$sth->execute();
return $sth->fetchAll();
}
En nazywam go tutaj: EDIT
<div id="axles">
<?php
$total_distance = 0;
foreach ($testingggg as $lol){
$total_distance += $lol['distance'];
$margin = $total_distance/25000*100;
?>
<div id="axle" style="margin-left:<?= $margin; ?>%">
<div id="circle" name="<?= $lol['axle'] ?>"><?= $lol['axle_nr'] ?></div>
</div>
<?php } ?>
</div>
Obrazek:
Wciąż nie dostałem twojego pytania. Proponuję wyjaśnić to prosto. Ludzie mogą ci pomóc. – Ironic
Wykonałem edycję @ 404 – Mitch