Skocz do zawartości
Innocent

Pętla

Polecane posty

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.

Edytowano przez Innocent

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

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

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
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.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

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?

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

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%

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

No to w pętli zlicz ilu jest graczy i ile slotów a później wylicz z tego procent

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

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

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

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

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
$i = 0;
$n = count($servers);

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

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

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

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
<?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'];
                    }
?>

 

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

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.

Edytowano przez naXe

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
5 godzin temu, naXe napisał:

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

 

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
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

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Bądź aktywny! Zaloguj się lub utwórz konto

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony


  • Kto przegląda   0 użytkowników

    Brak zalogowanych użytkowników przeglądających tę stronę.

×

Ważne informacje

Kontynuując przeglądanie strony, wyrażasz zgodę na używanie przez nas plików cookies.