Skocz do zawartości

Błędne wyświetlanie serwerów w pętli w mini panelu PHP


Rajveer
 Udostępnij

Rekomendowane odpowiedzi

Witam, w celach nauki piszę sobie mini panel. Wszystko na razie idzie oprócz jednej rzeczy. Mianowicie źle wyświetla serwery w pętli.

image

Zamiast wyświetlać 1 serwera "Nazwa Serwera", wyświetla wszystkie 3, które są  po lewej stronie.

Kod: Błędne wyświetlanie serwerów w pętli - Darmowa wklejka kodu jak Pasebin na zawsz...

Odnośnik do komentarza
Udostępnij na innych stronach

  • Ekspert

Właśnie, wycisza... A błędy się obsługuje, a nie wycisza

Poza tym, na screenie po lewej stronie widzę dwa serwery - a nie 3 o których piszesz.

Dodatkowo. Masz takie zapytanie:

"SELECT * FROM _servers ORDER BY server_id ASC"

więc logiczne, że pobierzesz wszystkie kolumny (z drugiej strony nie wiem po co) i wszystkie serwery, które masz w bazie w tej konkretnej tabeli.

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

Ja widzę 3 serwery, ale tylko 1 jest poprawny bo wcześniej sprawdzałem dodawanie serwera do bazy.

24 minuty temu, El Profesor napisał:

Dodatkowo. Masz takie zapytanie:


"SELECT * FROM _servers ORDER BY server_id ASC"

więc logiczne, że pobierzesz wszystkie kolumny (z drugiej strony nie wiem po co) i wszystkie serwery, które masz w bazie w tej konkretnej tabeli.

Dlatego mam takie coś w kodzie dla nawigacji

<a class="nav-link margin-b-10 align_left" id="v-pills-<?php echo $server['server_id'];?>-tab" data-toggle="pill" href="#v-pills-<?php echo $server['server_id'];?>" role="tab" aria-controls="v-pills-<?php echo $server['server_id'];?>" aria-selected="true"><?php echo $server['server_name']; ?></a>

i dla contentu

<div class="tab-pane fade show align_center" id="v-pills-<?php echo $server['server_id'];?>" role="tabpanel" aria-labelledby="v-pills-<?php echo $server['server_id'];?>-tab">

Posiadam ten kod w przypadku pobierania osób z bazy i wszystko działa. Tutaj mam problem by wyświetlał się 1 serwer o odpowiednim $server['server_id']; a zamiast wyświetlać dany serwer, wyświetlają się wszystkie.

@ usunięta 0 błędów

Odnośnik do komentarza
Udostępnij na innych stronach

  • Ekspert

Myślałem, że te niebieskie 'nazwa serwera', to nagłówek

Zmienną $servers używasz dwa razy, a ona przechowuje wszystkie serwery jakie masz w bazie - bo wcześniej wywołałeś takie zapytanie.

Musisz wykonać kolejne zapytanie z klauzulą WHERE.

- - -

1 minutę temu, Rajveer napisał:

To dalej będzie dla 1 serwera. A co jeżeli tych serwerów jest 15 ?

 

To zmień adres URL i pobieraj z niego ID.

Przykładowy adres:

https://example.com/servers.php?id=123
Edytowane przez El Profesor
Odnośnik do komentarza
Udostępnij na innych stronach

Wytłumaczę inaczej.

Mam kod

<div class="tab-pane fade show align_center" id="v-pills-<?php echo $server['server_id'];?>" role="tabpanel" aria-labelledby="v-pills-<?php echo $server['server_id'];?>-tab">

który dzięki pętli powinien "robić" się tyle razy ile jest serwerów. I to robi. TYLKO okazuje się, że

Ten kod jest jeden w drugim.

Serwer o id 3 jest w divie dla id 2.

Serwer o id 2 jest w divie dla id 1.

Bez tytułu.png

Odnośnik do komentarza
Udostępnij na innych stronach

  • Ekspert

No bo pewnie masz gdzieś niezamknięty tag HTML, który przeglądarka dorenderowuje i właśnie dlatego później wychodzą takie babole w DOMie.

Jakiego edytora używasz, że nie informuje Cię o niezamkniętym tagu?

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

Jak wrócę to sprawdzę. Używam Atoma

Sprawdziłem, tagi HTML były nie domknięte. Domknąłem, ale dalej problemu to nie rozwiązuje

KOD

Spoiler

<?php
require_once 'inc/header.php';
?>
<!DOCTYPE HTML>
<html lang="pl">
	<head>
		<title> ZnQ_Pv2 | Lista Serwerów </title>
		<meta http-equiv="content-type" content="text/html; charset=utf-8">
	</head>
	<body style="text-align:center !important;">
		<section class="container bg-success">
			<div class="row  margin-t-100 padding-t-40 padding-b-40">
				<div class="col-3">
					<div class="nav flex-column nav-pills" id="v-pills-tab" role="tablist" aria-orientation="vertical">
						<?php
						require_once 'inc/connect.php';
						$polaczenie = new mysqli($host, $db_user, $db_password, $db_name);
						if ($polaczenie->connect_errno!=0)
						{
							echo "Error: ".$polaczenie->connect_errno;
						}
						else
						{
							$polaczenie -> query("SET NAMES 'utf8' COLLATE 'utf8_polish_ci'");
							$polaczenie -> query("SET CHARSET utf8");
							if ($rezultat = $polaczenie->query("SELECT * FROM _servers ORDER BY server_id ASC"))
							{
								$servers = mysqli_fetch_all($rezultat, MYSQLI_ASSOC);
								foreach($servers as $server)
								{
									?>
									<a class="nav-link margin-b-10 align_left" id="v-pills-<?php echo $server['server_id'];?>-tab" data-toggle="pill" href="#v-pills-<?php echo $server['server_id'];?>" role="tab" aria-controls="v-pills-<?php echo $server['server_id'];?>" aria-selected="true"><?php echo $server['server_name']; ?></a>
								<?php }?>
										</div>
									</div>
									<div class="col-9">
											<div class="tab-content" id="v-pills-tabContent">
												<?php foreach($servers as $server)
												{

													error_reporting(E_ALL);
													require_once 'GameQ.php';
													/*  Konfiguracja */
													$ip = $server['server_ip'];
													$port = $server['server_port'];
													$game='cs';
													/* Konfiguracja koniec ...*/
													$gq = new GameQ();
													$gq->addServer('serwer', array($game, $ip, $port));
													$gq->setOption('timeout', 250);
													$gq->setFilter('normalise');
													$gq->setFilter('sortplayers', array('gq_score', false));
													$serwery = $gq->requestData();
													if($serwery['serwer']['gq_hostname']=="")
													{
														$hostname = "Przepraszamy Server OFF:/";
														$players = "x";
														$playersmax = "x";
														$map = "Offline";
													}
													else
													{
														$hostname = $serwery['serwer']['gq_hostname'];
														$players = $serwery['serwer']['gq_numplayers'];
														$playersmax = $serwery['serwer']['gq_maxplayers'];
														$map = $serwery['serwer']['gq_mapname'];
													}
														$percentp = ($players/$playersmax) * 100;
														$wynik_p = ($players/$playersmax) * 100;
														$percentp = number_format($wynik_p, 2, '.', '');
													?>
													<div class="tab-pane fade show align_center" id="v-pills-<?php echo $server['server_id'];?>" role="tabpanel" aria-labelledby="v-pills-<?php echo $server['server_id'];?>-tab">
													<?php

														echo "<br />";
														echo "<span class='hostname'>$hostname</span>";
														echo "<br />";
														echo "<br />";
														echo "<span style='font-weight:bold;'>Aktualnie gramy na:&nbsp;&nbsp;</span>".$map."<span style='margin-left:180px;'>";
														echo "<span style='font-weight:bold;'>Jest nas:&nbsp;&nbsp;</span>".$players."/".$playersmax."</span>";
														echo "<span style='float:right;' class='podl_sie'><a href=steam://connect/".$ip.":".$port." alt='Podlacz' title='Podlacz'>Podłącz Się!</a></span>";
														echo "<br />";
														echo "<br />";
														echo "<div class='progress' style='margin-left:70px;'>";
														echo "<div class='progress-bar progress-bar-striped active' role='progressbar' aria-valuenow='".$percentp."' aria-valuemin='0' aria-valuemax='100' style='width:".$percentp."%'>".$percentp."%</div>";
														echo "</div>";
														echo "<br />";
														echo "<table class='table'>";
														echo "<thead><tr><th style='width:10%'>Nick</th><th style='width:10%'>Zabójstwa</th><th style='width:10%'>Czas Gry</th></tr></thead>";
														echo "<tbody>";

													foreach($serwery['serwer']['players'] as $player )
													{
														echo "<tr style='height: 42px;'>";
														echo "<td style='vertical-align: middle; text-align:center;'>";
														echo $player['name'];
														echo "</td>";
														echo "<td style='vertical-align: middle; text-align:center;'>";
														echo $player['score'];
														echo "</td>";
														echo "<td style='vertical-align: middle;text-align:center;'>";
														echo gmdate("H:i:s", $player['time']);
														echo "</td>";
														echo "</tr>";
													}
													echo "</tbody>";
													echo "</table>";

								$rezultat->free_result();
								}
								$polaczenie->close();

							}?>
					</div>
					<?php
				}?>
				</div>
			</div>
		</section>
	</body>
</html>
<?php
require_once 'inc/footer.php';
?>

 

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

Problem wciąż nierozwiązany? Dodaj swoją odpowiedź

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto. Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

Zarejestruj nowe konto

Załóż nowe konto. To bardzo proste!

Zarejestruj się

Zaloguj się

Posiadasz już konto? Zaloguj się poniżej.

Zaloguj się
 Udostępnij

×