Skocz do zawartości
  • 0

mysql


luki1123

Pytanie

Witam, posiadam taki kod:

<?php
session_start();
if (!isset($_SESSION['panelzalogowany'])) {
    header('Location: http://tigercraft.pl/index21.html');
    exit;
}
$DATABASE_HOST = 'xxx';
$DATABASE_USER = 'xxx';
$DATABASE_PASS = 'xxx';
$DATABASE_NAME = 'xxx';
$con = mysqli_connect($DATABASE_HOST, $DATABASE_USER, $DATABASE_PASS, $DATABASE_NAME);
if (mysqli_connect_errno()) {
    exit('Failed to connect to MySQL: ' . mysqli_connect_error());
}
$stmt = $con->prepare('SELECT haslo, email, admin, uuid, nick FROM konta WHERE id = ?');
$stmt->bind_param('i', $_SESSION['id']);
$stmt->execute();
$stmt->bind_result($haslo, $email, $admin, $uuid, $nick);
$stmt->fetch();
$stmt->close();
?>



I chciałbym przemienić go w coś takiego:

<?php
session_start();
if (!isset($_SESSION['panelzalogowany'])) {
    header('Location: http://tigercraft.pl/index21.html');
    exit;
}
$DATABASE_HOST = 'xxx';
$DATABASE_USER = 'xxx';
$DATABASE_PASS = 'xxx';
$DATABASE_NAME = 'xxx';
$con = mysqli_connect($DATABASE_HOST, $DATABASE_USER, $DATABASE_PASS, $DATABASE_NAME);
if (mysqli_connect_errno()) {
    exit('Failed to connect to MySQL: ' . mysqli_connect_error());
}
$stmt = $con->prepare('SELECT haslo, email, admin, uuid, nick FROM konta WHERE id = ?');
$stmt->bind_param('i', $_SESSION['id']);
$stmt->execute();
$stmt->bind_result($haslo, $email, $admin, $uuid, $nick);
$stmt->fetch();
$stmt->close();
$stmt = $con->prepare('SELECT username, primary_group FROM luckyperms_players WHERE username = ?');
$stmt->bind_param('s', $_SESSION['nick']);
$stmt->execute();
$stmt->bind_result($username, $primary_group);
$stmt->fetch();
$stmt->close();
?>


Czyli że w jednym kodzie pobieram dane z dwóch różnych baz lecz przy pobieraniu danych z bazy luckyperms_players muszę użyć danych z pierwszej bazy, tzn. w drugiej bazie wyszukuje gracza o nicku ustalonym w pierwszej bazie jako nick

Odnośnik do komentarza
Udostępnij na innych stronach

5 odpowiedzi na to pytanie

Rekomendowane odpowiedzi

  • 0

Po pierwsze nie używasz dwóch baz, tylko dwóch tabelek, z jednej bazy. Po drugie dobrze byłoby gdybyś sobie to przepisał na funkcje i robił coś na zasadzie getUser($id) i tam robisz selecta, który pobiera dane z usera. Dane , które pobierasz możesz sobie przypisać na przykład do zmiennej ($data = $stmt->fetch();) i wtedy zmienna data zawiera wynik zapytania wyżej.

Odnośnik do komentarza
Udostępnij na innych stronach

  • 0

No okej ale nie da się tego zrobić w tym kodzie żeby nie kombinować za dużo? Nie znam się aż tak na php dlatego wolałbym jeśli jest taka opcja użyć bieżącego i dodać to o czym pisałem wyżej. 
 

Bo chodzi o to ze gdy próbuje w jakikolwiek sposób w tym samym kodzie pobrać dane z innej tabeli to wtedy nie działa. Nie mam pojęcia jak to zrobić.

Edytowane przez luki1123
Odnośnik do komentarza
Udostępnij na innych stronach

  • 0
$result = $stmt->get_result();
foreach ($result as $row) {
    echo $row['kolumna_z_tabeli'];
}

Możesz to zrobić na przykład tak, wtedy będziesz musiał w 3 linijce przypisać sobie odpowiednie dane do zmiennej i wykonać drugie zapytanie. Jeżeli dopiero sie uczysz, polecam od razu uczyć się PDO https://www.php.net/manual/en/book.pdo.php

Odnośnik do komentarza
Udostępnij na innych stronach

  • 0

Tylko czy gdy użyję tego ci napisałeś, po zamknięciu kodu php będę mógł potem normalnie wyświetlić uzyskane dane w html? w sensie

<php>
pobranie danych z bazy
</php>
<html>
wyswietlenie danych
</html>


I co w przypadku gdy muszę pobrać kilka danych? Powinno byc tak?

$result = $stmt->get_result();
foreach ($result as $row) {
    echo $row['kolumna_z_tabeli'];
    echo $row['kolumna_z_tabeli2'];
    echo $row['kolumna_z_tabeli3'];
}


I jeśli tak, to cały kod powinien wyglądać tak?

<?php
session_start();
if (!isset($_SESSION['panelzalogowany'])) {
    header('Location: http://tigercraft.pl/index21.html');
    exit;
}
$DATABASE_HOST = 'xxx';
$DATABASE_USER = 'xxx';
$DATABASE_PASS = 'xxx';
$DATABASE_NAME = 'xxx';
$con = mysqli_connect($DATABASE_HOST, $DATABASE_USER, $DATABASE_PASS, $DATABASE_NAME);
if (mysqli_connect_errno()) {
    exit('Failed to connect to MySQL: ' . mysqli_connect_error());
}
$stmt = $con->prepare('SELECT haslo, email, admin, uuid, nick FROM konta WHERE id = ?');
$stmt->bind_param('i', $_SESSION['id']);
$stmt->execute();
$result = $stmt->get_result();
foreach ($result as $row) {
    echo $row['kolumna_z_tabeli'];
    echo $row['kolumna_z_tabeli2'];
    echo $row['kolumna_z_tabeli3'];
}
?>

Ważne jest to $_SESSION ponieważ ten kod pochodzi z panelu gracza i wszystkie dane są na podstawie tego pobierane.

I jeśli ten kod jest dobrze, jeśli chcę potem w html wyświetlić dane to używam tego?

'.$row['nick'].'

 

 

I jak teraz pobrać w tym samym kodzie dane z innej tabeli?

Aby wyświetlić dne gracza używam takiego kodu:
 

<?php
	echo '<span style="font-size: 20px">Czesc '.$primary_group.' '.$nick.'!</span>';
	echo '<br>';
	echo '<span style="font-size: 40px"><br><img id="skin" src="https://minotar.net/armor/body/'.$nick.'/150.png"></span>';
?>

 

Edytowane przez luki1123
Odnośnik do komentarza
Udostępnij na innych stronach

Nieaktywny
Ten temat został zamknięty. Brak możliwości dodania odpowiedzi.
  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...