Skocz do zawartości
PL
Szukaj na Pecetowiczu
  • Utwórz konto

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


Przejdź do rekomendacji Rozwiązane przez Rajveer,
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.

Bez tytułu.png

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

Odnośnik do komentarza
Udostępnij na innych stronach

Wiesz co oznacza @ w powyższym kodzie, że tak namiętnie jej używasz?

Odnośnik do komentarza
Udostępnij na innych stronach

(edytowane)

Wycisza błędy ? Po 2 pytałem się o inną rzecz

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

(edytowane)

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

Jeśli w tabeli kluczem jest ID Serwera i jest on inkrementowany oraz unikalny to można to zrobić tak:

SELECT * FROM _servers WHERE server_id = <tutaj_id>
Odnośnik do komentarza
Udostępnij na innych stronach

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

Odnośnik do komentarza
Udostępnij na innych stronach

(edytowane)

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

(edytowane)

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

(edytowane)

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

Nadal tagi są źle zamknięte.

Przed:

</section>

wstaw zamknięcie diva.

Odnośnik do komentarza
Udostępnij na innych stronach

Nic nie pomogło. A to nie można robić się uczyć i udostępnić ? Ehh...

Odnośnik do komentarza
Udostępnij na innych stronach

Nie wiem, masz gdzieś to online?

Odnośnik do komentarza
Udostępnij na innych stronach

Niestety nie. Nie mogę edytować. Wrzuciłem na hosting.

Odnośnik do komentarza
Udostępnij na innych stronach

  • Rekomendowana odpowiedź

Problem rozwiązany przeniosłem diva zamykającego

Odnośnik do komentarza
Udostępnij na innych stronach

Kontynuuj dyskusję

Dołącz do Pecetowicza, aby kontynuować dyskusję w tym wątku.

  • Dodaj nową pozycję...
  • Dodaj nową pozycję...