Drukowana wersja tematu
Forum PHP.pl _ Przedszkole _ [PHP][MySQL]MYSQL ŁĄCZENIE TABEL
Napisany przez: Mientus0 23.03.2020, 13:09:28
Witam, posiadam baze danych mysql i w niej 2 tabele klany oraz members. Chciałbym z tych dwóch tabeli wyciągnąć wszystkie dane poprzez SELECT ale zupełnie nie wiem jak to zrobić. Do czego mi to potrzebne?
A no chce zrobić skrypt który będzie pokazywał
Nazwe klanu, Wlasciciela klanu, Zastępce klanu(wszystkich jacy są), użytkowników klanu, oraz punkty umiejętności klanu.
Tutaj tabela klany
A tutaj members
Tutaj kolumna clan odwołuję się do id klanu w tabeli klany. Natomiast flag to flaga, 3 - Wlasciciel, 2 - Zastępca, 1 - Członek
Napisany przez: viking 23.03.2020, 13:29:07
https://www.edureka.co/blog/sql-joins-types
Napisany przez: Mientus0 23.03.2020, 13:47:57
Efekt jest słaby wyświetla wartość NULL gdzie powinny być dane z drugiej tabeli czyli clan_members.
SELECT id, clans.name as clan_name, clan_members.name as member_name, members, kills, level, wins, health, dmg, weapon, clan, flag FROM `clans` LEFT JOIN `clan_members` on `clans.id = clan_members.clan'
Napisany przez: nospor 23.03.2020, 13:57:19
Bo nie
on `clans.id = clan_members.clan'
a
on clans.id = clan_members.clan
I nie KRZYCZ
MYSQL ŁĄCZENIE TABEL
Glusi nie jestesmy
Napisany przez: Mientus0 23.03.2020, 14:20:26
Przepraszam capslock.
Oki to działa tylko wpisy się dublują (nazwy klanu).
Napisany przez: nospor 23.03.2020, 14:31:26
Zgadza sie. Jak masz wielu czlonkow w klanie, to logiczne ze rekordy dla klanu sie zdubluja tyle razy ilu masz czlonkow. Zas dane kazdego czlonka masz juz swoje.
Teraz ladnie to w php obrabiasz i wyswietlasz sobie piknie bez duplikacji
Napisany przez: Mientus0 24.03.2020, 16:22:00
Czemu nie chce pobrać rekordów tzn nie wyświetla nic po wykonaniu result?
Kod
<html>
<head>
</head>
<body>
<style>
body {
background-image: url(cod_bo.jpg);
background-repeat: no-repeat;
background-position: center;
background-attachment: fixed;
color: white;
font-family: Verdana;
padding: 25px;
font-size: 90%;
}
h1 {
text-align: center;
color: #339966;
}
h3 {
text-align: center;
width: 40%;
margin-left: 30%;
margin-right: 30%;
border-bottom: 0.25px solid #33CC99;
}
p {
text-align: center;
color: #CCCC66;
}</style>
<center>
<table bgcolor="">
<tr><td><h3>Nazwa_klanu</h3></td></tr>
<tr><td><h3>Wlasciciel</h3></td></tr>
<tr><td><h3>Zastepca</h3></td></tr>
<tr><td><h3>Czlonkowie<h3></td></tr>
</table>
<?php
// Create connection
$conn = new mysqli("172.39.236.240", "manager69610", "password", "manager69610");
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
$sql = "SELECT id, clans.name as clan_name, clan_members.name as member_name, members, kills, level, wins, health, dmg, weapon, clan, flag FROM `clans` LEFT JOIN `clan_members` on clans.id = clan_members.clan WHERE clans.id = 2";
$result = $conn->query($sql);
if ($result) {
$row = mysql_fetch_assoc($result, MYSQL_ASSOC);
echo "<table><tr><td><p>" . $row["clan_name"]. "<p></td></tr></table>";
}
if(!$result){
$conn->close();
exit;
}
?>
</body>
</html>
Napisany przez: nospor 24.03.2020, 16:28:25
sprawdziles co dokladnie zawiera $result? I jesli zawiera FALSE to sprawdziles blad jaki baza ci pluje?
Napisany przez: Mientus0 24.03.2020, 17:36:28
Dodałem po ifie var_dump($result);
Oto wynik
Kod
object(mysqli_result)#2 (5) { ["current_field"]=> int(0) ["field_count"]=> int(12) ["lengths"]=> NULL ["num_rows"]=> int(4) ["type"]=> int(0) } Warning: mysql_fetch_assoc() expects parameter 1 to be resource, object given in /web1/web1/home/socham/778723/index.php on line 62
Napisany przez: viking 24.03.2020, 17:41:09
Na górze masz połączenie po rozszerzeniu mysqli zaraz potem przychodzisz sobie na mysql. masz przecież w dokumentacji całe przykłady.
Napisany przez: Mientus0 24.03.2020, 17:44:41
Dzięki, poprawiłem i działa i chciałem żeby wyświetlało to bespośrednio pod Nazwa_Klanu, ale wyświetla się to tak:
Napisany przez: viking 24.03.2020, 18:09:20
Skoro już otwierasz tabelę to trzymaj się wierszy i poprawnie zamykaj elementy. W kodzie masz dwa razy otwarcie p.
Napisany przez: Mientus0 24.03.2020, 18:11:45
Cytat(viking @ 24.03.2020, 18:09:20 )
Skoro już otwierasz tabelę to trzymaj się wierszy i poprawnie zamykaj elementy. W kodzie masz dwa razy otwarcie p.
Nic to nie zmieniło dalej w tym samym miejscu to jest.
Napisany przez: viking 24.03.2020, 18:18:23
Ale czego oczekujesz? Wrzuciłeś jedną tabelę, zamknąłeś ja. Wrzuciłeś kolejną. Logiczne że wyświetli się pod spodem.
Napisany przez: Mientus0 24.03.2020, 18:26:45
to jak mam to zrobić. nie zamknie tabeli rozpoczętej przed znacznikiem <?PHP bo błąd wywali
Napisany przez: viking 24.03.2020, 18:30:19
Zapewne chcesz wstawić pobrane rekordy jako wierze pierwszej tabeli. Zrób w pętli echo samego tr.
Napisany przez: Mientus0 24.03.2020, 18:43:36
Super działa
Jeszcze jedno pytanie. Chce wybrać z tabeli wszystkich członków którzy mają flage = 2 jak to moge uczynić jakimś ifem się da ?
Kod
<?php
// Create connection
$conn = new mysqli("172.39.236.240", "manager69610", "password", "manager69610");
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
$sql = "SELECT id, jbgang.name as clan_name, jbgang_members.name as member_name, members, kills, level, wins, health, dmg, weapon, clan, flag FROM `jbgang` LEFT JOIN `jbgang_members` on jbgang.id = jbgang_members.clan WHERE jbgang.id = 4";
$result = $conn->query($sql);
if ($result) {
$row = mysqli_fetch_assoc($result);
echo "<tr><td><br /><h1>" . $row["clan_name"]. "</h1></td></tr> <tr><td><h3>Wlasciciel gangu</h3><p>" . $row["member_name"]. "</p></td></tr> <tr><td><h3>Zastepca gangu</h3><p>" . $row["member_name"]. "</p></td></tr> <tr><td><h3>Czlonkowie gangu</h3><p>" . $row["member_name"]. "</p></td></tr>";
}
$conn->close();
?>
Napisany przez: viking 24.03.2020, 18:47:35
Ale na poziomie zapytania czy w kodzie? Jak zapytania to dodajesz kolejny warunek do where.
Napisany przez: Mientus0 24.03.2020, 18:49:28
Wiesz w kodzie raczej bo muszę wypisać tak
Wlasciciel gangu: <- Flaga 3
Zastepcy gangu: <- Flaga 2
Czlonkowie gangu: <- Flaga 1
Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)