Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP][MySQL]MYSQL ŁĄCZENIE TABEL
Mientus0
post 23.03.2020, 13:09:28
Post #1





Grupa: Zarejestrowani
Postów: 20
Pomógł: 0
Dołączył: 9.07.2019

Ostrzeżenie: (10%)
X----


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



Ten post edytował Mientus0 23.03.2020, 13:10:04
Go to the top of the page
+Quote Post
viking
post 23.03.2020, 13:29:07
Post #2





Grupa: Zarejestrowani
Postów: 6 365
Pomógł: 1114
Dołączył: 30.08.2006

Ostrzeżenie: (0%)
-----


https://www.edureka.co/blog/sql-joins-types


--------------------
Go to the top of the page
+Quote Post
Mientus0
post 23.03.2020, 13:47:57
Post #3





Grupa: Zarejestrowani
Postów: 20
Pomógł: 0
Dołączył: 9.07.2019

Ostrzeżenie: (10%)
X----


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'


Go to the top of the page
+Quote Post
nospor
post 23.03.2020, 13:57:19
Post #4





Grupa: Moderatorzy
Postów: 36 440
Pomógł: 6290
Dołączył: 27.12.2004




Bo nie
on `clans.id = clan_members.clan'
a
on clans.id = clan_members.clan

I nie KRZYCZ
MYSQL ŁĄCZENIE TABEL

Glusi nie jestesmy


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
Mientus0
post 23.03.2020, 14:20:26
Post #5





Grupa: Zarejestrowani
Postów: 20
Pomógł: 0
Dołączył: 9.07.2019

Ostrzeżenie: (10%)
X----


Przepraszam capslock.

Oki to działa tylko wpisy się dublują (nazwy klanu).

Go to the top of the page
+Quote Post
nospor
post 23.03.2020, 14:31:26
Post #6





Grupa: Moderatorzy
Postów: 36 440
Pomógł: 6290
Dołączył: 27.12.2004




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


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
Mientus0
post 24.03.2020, 16:22:00
Post #7





Grupa: Zarejestrowani
Postów: 20
Pomógł: 0
Dołączył: 9.07.2019

Ostrzeżenie: (10%)
X----


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>


Ten post edytował Mientus0 24.03.2020, 16:23:05
Go to the top of the page
+Quote Post
nospor
post 24.03.2020, 16:28:25
Post #8





Grupa: Moderatorzy
Postów: 36 440
Pomógł: 6290
Dołączył: 27.12.2004




sprawdziles co dokladnie zawiera $result? I jesli zawiera FALSE to sprawdziles blad jaki baza ci pluje?


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
Mientus0
post 24.03.2020, 17:36:28
Post #9





Grupa: Zarejestrowani
Postów: 20
Pomógł: 0
Dołączył: 9.07.2019

Ostrzeżenie: (10%)
X----


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
Go to the top of the page
+Quote Post
viking
post 24.03.2020, 17:41:09
Post #10





Grupa: Zarejestrowani
Postów: 6 365
Pomógł: 1114
Dołączył: 30.08.2006

Ostrzeżenie: (0%)
-----


Na górze masz połączenie po rozszerzeniu mysqli zaraz potem przychodzisz sobie na mysql. masz przecież w dokumentacji całe przykłady.


--------------------
Go to the top of the page
+Quote Post
Mientus0
post 24.03.2020, 17:44:41
Post #11





Grupa: Zarejestrowani
Postów: 20
Pomógł: 0
Dołączył: 9.07.2019

Ostrzeżenie: (10%)
X----


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:

Go to the top of the page
+Quote Post
viking
post 24.03.2020, 18:09:20
Post #12





Grupa: Zarejestrowani
Postów: 6 365
Pomógł: 1114
Dołączył: 30.08.2006

Ostrzeżenie: (0%)
-----


Skoro już otwierasz tabelę to trzymaj się wierszy i poprawnie zamykaj elementy. W kodzie masz dwa razy otwarcie p.


--------------------
Go to the top of the page
+Quote Post
Mientus0
post 24.03.2020, 18:11:45
Post #13





Grupa: Zarejestrowani
Postów: 20
Pomógł: 0
Dołączył: 9.07.2019

Ostrzeżenie: (10%)
X----


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.
Go to the top of the page
+Quote Post
viking
post 24.03.2020, 18:18:23
Post #14





Grupa: Zarejestrowani
Postów: 6 365
Pomógł: 1114
Dołączył: 30.08.2006

Ostrzeżenie: (0%)
-----


Ale czego oczekujesz? Wrzuciłeś jedną tabelę, zamknąłeś ja. Wrzuciłeś kolejną. Logiczne że wyświetli się pod spodem.


--------------------
Go to the top of the page
+Quote Post
Mientus0
post 24.03.2020, 18:26:45
Post #15





Grupa: Zarejestrowani
Postów: 20
Pomógł: 0
Dołączył: 9.07.2019

Ostrzeżenie: (10%)
X----


to jak mam to zrobić. nie zamknie tabeli rozpoczętej przed znacznikiem <?PHP bo błąd wywali
Go to the top of the page
+Quote Post
viking
post 24.03.2020, 18:30:19
Post #16





Grupa: Zarejestrowani
Postów: 6 365
Pomógł: 1114
Dołączył: 30.08.2006

Ostrzeżenie: (0%)
-----


Zapewne chcesz wstawić pobrane rekordy jako wierze pierwszej tabeli. Zrób w pętli echo samego tr.


--------------------
Go to the top of the page
+Quote Post
Mientus0
post 24.03.2020, 18:43:36
Post #17





Grupa: Zarejestrowani
Postów: 20
Pomógł: 0
Dołączył: 9.07.2019

Ostrzeżenie: (10%)
X----


Super działa biggrin.gif
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();
?>
Go to the top of the page
+Quote Post
viking
post 24.03.2020, 18:47:35
Post #18





Grupa: Zarejestrowani
Postów: 6 365
Pomógł: 1114
Dołączył: 30.08.2006

Ostrzeżenie: (0%)
-----


Ale na poziomie zapytania czy w kodzie? Jak zapytania to dodajesz kolejny warunek do where.


--------------------
Go to the top of the page
+Quote Post
Mientus0
post 24.03.2020, 18:49:28
Post #19





Grupa: Zarejestrowani
Postów: 20
Pomógł: 0
Dołączył: 9.07.2019

Ostrzeżenie: (10%)
X----


Wiesz w kodzie raczej bo muszę wypisać tak

Wlasciciel gangu: <- Flaga 3
Zastepcy gangu: <- Flaga 2
Czlonkowie gangu: <- Flaga 1
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 29.03.2024 - 11:07