Jump to content
Innocent

Pętla

Recommended Posts

Posiadam taki kod:

<?php 
		include('plik.php');
		 for($i=0;$i<$n; $i++){
			echo '

Mój kod......

          ';
		}
	?>

W jaki sposób mogę to zmienić aby zliczało wszystkie wyniki do 1?

Np. mam 10 serwerów, na każdym z nim jest 5 graczy, to wyświetla mi 10 kolumn z zapełnieniem serwerów, dla każdego 1 kolumna.

Edited by Innocent

Share this post


Link to post
Share on other sites

Widząc taki kod odpowiem wprost, musisz sobie sam poradzić. Nie wiem co robisz w forze, co robisz w plik.php a wymagasz, żebym dał Ci gotowca

Share this post


Link to post
Share on other sites
6 godzin temu, Spanner napisał:

Widząc taki kod odpowiem wprost, musisz sobie sam poradzić. Nie wiem co robisz w forze, co robisz w plik.php a wymagasz, żebym dał Ci gotowca

To jest ta tabelka, i jest nią autor Dark oraz Czarek. I chciałbym żeby wszystkie procentowe procentowe zapełnienie wyskakiwało w jednym wyniku.

Share this post


Link to post
Share on other sites

W sensie tak jak tam na screenie są 3 wiersze, to chciałbyś w jednym napisać że jest to : 29 + 42 + 75 / 32 + 44 + 120 i odpowiednia wartość procentowego wypełnienia? czy jak?

Share this post


Link to post
Share on other sites

Po prostu żeby zliczało wszystkie serwery do 1 tabeli.

np. jest 894 graczy na 1598 slotów i jest to około 56%. I oczywiście max wartość to *100%

Share this post


Link to post
Share on other sites

Dodałem taki kod do głównego pliku z którego są pobierane dane:

if(is_numeric($server['gq_numplayers']) && is_numeric($server['gq_maxplayers']))
                        $allperc[$n] = round($server['gq_numplayers'] / $server['gq_maxplayers'] * 100);
                    else
                       $allperc[$n] = 0;
				   
				   if($server['gq_hostname'] != "" && is_numeric($server['gq_maxplayers']) && is_numeric($server['gq_maxplayers'])){
                        $players[$i] += $server['gq_maxplayers'];
                        $playersmax[$i] += $server['gq_maxplayers'];
                    }

Potem do index.php dodałem

<?php 
		  {
			echo '
		<div style="width: 100%;" class="serverlist_progress ipsBadge ipsBadge_small ipsBadge_neutral ipsResponsive_hideTablet ipsResponsive_hidePhone">
	<div class="serverlist_progress-bar" style="width: '.$allperc[$n].'%; background: #983f3d"></div>
	<div class="ipsType_center" style="position: absolute; width: 100%;">(BETA) Zapełnienie serwerów: '.$allperc[$n].'%</div></div>
	     ';
		}
	?>

Chyba że coś tu źle mam

Share this post


Link to post
Share on other sites

Nie wiem może się nie znam ale

$allperc[$n]

wpisujesz jakąś wartość zależną od $n, domyślam się, że $n to wiersz tabeli. Ale jeśli chcesz prezentować łączne dane to musisz do jednej zmiennej zsumować wszystkie wartości

Share this post


Link to post
Share on other sites
$i = 0;
$n = count($servers);

Gdy zmienię na $i to robią się 3 kolumny, gdy dam samo $allperc wychodzi to samo co $allperc[$n}

Share this post


Link to post
Share on other sites

Pokaż cały kod, bo tam to możemy dyskutować i dyskutować...


www.topfrags.pl  | www.gs-dev.pl

Share this post


Link to post
Share on other sites
<?php

	require_once('./GameQ/Autoloader.php');
	$servers = [
		[
			'type' => 'csgo', 
			'host' => '',
			'owner' => '',
			'gsid' =>'',
			'banner' =>'',
			'stats' =>'',
			'new' => '',
			'country' => '',
		],
	];
	$GameQ = new \GameQ\GameQ(); 
	$GameQ->addServers($servers);
	$GameQ->setOption('timeout', 2);
	$GameQ->addFilter('normalize');
	$results = $GameQ->process();
	$i = 0;
	$n = count($servers);
	foreach($results as $server) {
		$url[$i] = $server['gq_joinlink'];
		$icon[$i] = '.$servers[$i]['type'].'.png';
		$desc[$i] = $server['gq_name'];
		if($server['gq_hostname'] == "") {
			$hostname[$i] = 'n/a';
			$players[$i] = 0;
			$playersmax[$i] = 0;
			$map[$i] = 'n/a';
			$status[$i] = 'Offline';
			$perc[$i] = 0;
		} else {
			$hostname[$i] = $server['gq_hostname'];
			$players[$i] = $server['gq_numplayers'];
			$playersmax[$i] = $server['gq_maxplayers'];
			$status[$i] = 'Online';
			$map[$i] = $server['gq_mapname'];
			$perc[$i] = round($players[$i]/$playersmax[$i]* 100, 0);
			
		}	
	   $i++;
	 }
	if(is_numeric($server['gq_numplayers']) && is_numeric($server['gq_maxplayers']))
                        $allperc[$n] = round($server['gq_numplayers'] / $server['gq_maxplayers'] * 100);
                    else
                       $allperc[$n] = 0;
				   
	if($server['gq_hostname'] != "" && is_numeric($server['gq_maxplayers']) && is_numeric($server['gq_maxplayers'])){
                        $players[$i] += $server['gq_maxplayers'];
                        $playersmax[$i] += $server['gq_maxplayers'];
                    }
?>

 

Share this post


Link to post
Share on other sites

Pętla foreach jest zamknięta za wcześnie. Ten cały kod powinien być właśnie w tej pętli oraz użyj zwykłej zmiennej do przechowywania tych procentów zamiast tablicy.

Edited by naXe

www.topfrags.pl  | www.gs-dev.pl

Share this post


Link to post
Share on other sites

Czyli pętla foreach według Ciebie gdzie powinna się kończyć?

Share this post


Link to post
Share on other sites
5 godzin temu, naXe napisał:

Ten cały kod powinien być właśnie w tej pętli

 


www.topfrags.pl  | www.gs-dev.pl

Share this post


Link to post
Share on other sites
1 godzinę temu, naXe napisał:

Ten cały kod powinien być właśnie w tej pętli

2bbb4af8b30c4ec1851cd3a1d1bfd285.png

 

Share this post


Link to post
Share on other sites
16 godzin temu, Innocent napisał:

$n = count($servers);

to jest bez sensu w ogóle

 

16 godzin temu, Innocent napisał:

if(is_numeric($server['gq_numplayers']) && is_numeric($server['gq_maxplayers'])) $allperc[$n] = round($server['gq_numplayers'] / $server['gq_maxplayers'] * 100); else $allperc[$n] = 0;

tak jak i to. najpierw przypisujesz jakąś wartość, która zawsze będzie równa ostatniemu przebiegowi pętli, który spełnia warunek, po czym jeśli warunek jest nie spełniony to zapisujesz tam od razu 0.

Moja propozycja jest taka, żebyś poczytał trochę podstaw php i się nauczył, jeśli chcesz pisać cokolwiek w tym języku.

 

Wracając do meritum. te warunki powinny być w pętli natomiast wyświetlając te dane musisz je wyświetlić z pominięciem jakiejkolwiek pętli

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...

Important Information

W celu świadczenie usług przez nasz Serwis na najwyższym poziomie, w ramach Serwisu wykorzystujemy pliki Cookies (tzw. ciasteczka). Korzystając ze stron Serwisu IPSBEYOND.PL bez zmiany ustawień przeglądarki będą one zapisane w pamięci urządzenia. Jeżeli nie dokonacie Państwo zmiany ustawień przeglądarki internetowej to wyrażacie zgodę na zapisywanie plików Cookies.