Skocz do zawartości
"Idzie nowe..." - o zmianach i nie tylko ×
Przeniesienie zakupów z IPS Marketplace / Moving bought items from IPS Marketplace ×

ROZWIĄZANY: Wyświetlanie wyników przez pętlę foreach


Rekomendowane odpowiedzi

Cześć, mam problem z wyświetleniem wyników z pętli foreach. Kumpel zostawił mi tą aplikację, a że jest on przez dłuższy czas nieobecny to muszę się poradzić was.

Problem jest tego typu, że na stronie wyświatla mi tylko jeden wynik, a w bazie mam dodane więcej rekordów. Nie wiem dokładnie czy jest wina w wyświetlaniu czy w zapytaniu.

Kod:

protected function fetchGroupMembers($unpackPermissions = false)
{
	$this->DB->query(sprintf('SELECT * FROM grp_members m 
	LEFT JOIN grp_players p ON (p.player_uid=m.player_uid) 
	LEFT JOIN %smembers u ON (u.member_id=p.owner)
	WHERE m.what=%d AND m.whatid=%d ORDER BY p.nick ASC',$this->DB->obj['sql_tbl_prefix'],$this->groupType,$this->groupID));
	$this->DB->execute();

	$this->members = array();

	$requiredTime = IPS_UNIX_TIME_NOW - 172800;

	if($unpackPermissions)
	{
		$this->loadPermissions();

		while($row = $this->DB->fetch())
		{
			$row['_seenWarn'] = ($row['seen'] < $requiredTime) ? 1: 0;
			$row['seen'] = $this->registry->getClass('class_localization')->getDate( $result['seen'], 'TINY' );
			$row['nick'] = str_replace('_',' ',$row['nick']);
			$row['_isOnline'] = (GRPLib::getIngameCharacterById($row['member_id'])==$char['player_uid']?1:0);

			$this->members[] = $row;
			$this->unpackMemberPermissions($row);
		}
	}
	else
	{
		while($row = $this->DB->fetch())
		{
			$row['_seenWarn'] = ($row['seen'] < $requiredTime) ? 1: 0;
			$row['seen'] = $this->registry->getClass('class_localization')->getDate( $row['seen'], 'TINY' );
			$row['nick'] = str_replace('_',' ',$row['nick']);
			$row['_isOnline'] = (GRPLib::getIngameCharacterById($row['member_id'])==$row['player_uid']?1:0);
			$this->members[] = $row;
		}
	}
}

Templatka:

<h3 class=\"maintitle\">Pracownicy</h3>
					<table class=\"ipb_table\" summary=\"Pracownicy\">
						<tr class=\"header\">
							<th scope=\"col\" style=\"width: 150px\">Postać</th>
							<th scope=\"col\">UĹĽytkownik</th>
							<th scope=\"col\">Ostatnio w grze</th>
							<th scope=\"col\" class=\"short\">Posada</th>
							" . (($group->allowModifications) ? ("
								<th scope=\"col\" class=\"short\">Ubranie robocze</th>
								<th scope=\"col\" class=\"short\">Wypłata</th>
							") : ("")) . "
						</tr>
													" . (($group->allowModifications) ? ("".$this->__f__e45756aaa7944feb9316b36d35a9cb10($group)."							") : ("".$this->__f__a62b8f55d011e63b1643496cdfa50620($group)."							")) . "
					</table>




function __f__e45756aaa7944feb9316b36d35a9cb10($group)
{
$_ips___x_retval = '';
foreach( $group->members as $member )
{

	$_ips___x_retval .= "
								<tr class=\"" .  IPSLib::next( $this->registry->templateStriping["members"] ) . "\" id=\"member{$member['player_uid']}\" class=\"memberListItem\">
									<td>
									{$member['nick']}
									<ul class=\"right memberManagement\">
										<li><a href=\"" . $this->registry->getClass('output')->formatUrl( $this->registry->getClass('output')->buildUrl( "module=ajax&section=leaderpanel&groupType={$group->groupTypeShortString}&character={$group->character}&do=removeMember&rmCharID={$member['player_uid']}", "publicWithApp",'' ), "", "" ) . "\" class=\"rmMember\" id=\"delmember{$member['player_uid']}\"><img src=\"{$this->settings['img_url']}/delete.png\" alt=\"Zwolnij pracownika\" /></a></li>
									</ul>
									</td>
									<td>" . IPSLib::makeNameFormatted( $member['members_display_name'],$member['member_group_id'] ) . "" . $this->registry->getClass('output')->getTemplate('global')->user_popup($member['member_id'], $member['members_seo_name']) . "</td>
									<td>{$member['seen']}</td>
									<td class=\"short\"><input type=\"text\" class=\"input_text\" value=\"{$member['rank']}\" name=\"member[{$member['player_uid']}][rank]\" maxlength=\"15\" style=\"width:100px\" /></td>
									<td class=\"short\"><input type=\"text\" class=\"input_text\" value=\"{$member['skin']}\" name=\"member[{$member['player_uid']}][skin]\" maxlength=\"3\" style=\"width:30px\" /></td>
									<td class=\"short\">$<input type=\"text\" class=\"input_text\" value=\"{$member['cash']}\" name=\"member[{$member['player_uid']}][cash]\" maxlength=\"4\" style=\"width:40px\" /></td>
								</tr>

";
}
$_ips___x_retval .= '';
return $_ips___x_retval;
}


function __f__a62b8f55d011e63b1643496cdfa50620($group)
{
$_ips___x_retval = '';
foreach( $group->members as $member )
{

	$_ips___x_retval .= "
								<tr class=\"" .  IPSLib::next( $this->registry->templateStriping["members"] ) . "\" id=\"member{$member['player_uid']}\">
									<td>{$member['nick']}</td>
									<td>" . IPSLib::makeNameFormatted( $member['members_display_name'],$member['member_group_id'] ) . "" . $this->registry->getClass('output')->getTemplate('global')->user_popup($member['member_id'], $member['members_seo_name']) . "</td>
									<td>{$member['seen']}</td>
									<td class=\"short\">{$member['rank']}</td>
								</tr>

";
}
$_ips___x_retval .= '';
return $_ips___x_retval;
}





Odnośnik do komentarza
Udostępnij na innych stronach

  • Manager

Raz, że to kod w którym nie widzę przekazania danych do szablonu, więc wnioskuję, że to niepełny kod.

O drugim mogę tylko tyle powiedzieć, napisać, a w sumie doradzić, byś nie grzebał w plikach cache skina na FTP, tylko w ACP. Cache to wynik tego, jak to pracuje w ACP.

intermedia - profesjonalne rozwiązania Invision Power Board

---

Chcesz uzyskać szybko i sprawnie pomoc? Uzupełnij wersję i adres w profilu.

Odnośnik do komentarza
Udostępnij na innych stronach

Funkcja od zapisywania danych wygląda tak:

public function saveGroupData()
{
	if(!$this->allowModifications)
	{
		$this->registry->output->showError('Nie masz uprawnień do wprowadzania modyfikacji.','10H6');
	}

	switch($this->dataType)
	{
		case 1:
			$updateMember = array();
			foreach($this->request['perm'] as $member=>$locglob)
			{
				if(is_array($locglob['local']) and is_array($locglob['global']))
				{
					$updateMember[$member] = $this->packMemberPermissions($locglob['global'], $locglob['local']);
				}
				else if(is_array($locglob['global']))
				{
					$updateMember[$member] = $this->packMemberPermissions($locglob['global']);
				}
			}


			if(!count($updateMember)) return;
			foreach($updateMember as $mid=>$member)
			{
				$this->DB->query(sprintf('UPDATE grp_members SET gperm=%d,lperm=%d WHERE player_uid=%d AND what=%d AND whatid=%d',
					intval($member['gperm']),intval($member['lperm']),intval($mid),$this->groupType,$this->groupID
				));
				$this->DB->execute();
			}
		break;

		default:

			if(!isset($this->request['member']) || !count($this->request['member'])) return;

			$sumMoney = 0;

			foreach($this->request['member'] as $member=>$newData)
			{
				if($newData['cash']>300)
				{
					$this->request['member'][ $member ]['cash'] = 300;
				}
				$sumMoney += $newData['cash'];
			}

			if($sumMoney>$this->payoutLimit)
			{
				$this->registry->output->showError('Nie można przypisać pracownikom więcej niż wyznaczony na ten tydzień limit.<br />
				Limit wynosi $'.$this->payoutLimit.', a ustawione przez Ciebie wypłaty wynoszą łącznie $'.$sumMoney.'.',0);
				return;
			}

			foreach($this->request['member'] as $member=>$newData)
			{
				$this->DB->query(sprintf('UPDATE grp_members SET skin=%d,cash=%d,rank=\'%s\' WHERE player_uid=%d AND what=%d AND whatid=%d',
					intval($newData['skin']),intval($newData['cash']),$this->DB->addSlashes($newData['rank']),intval($member),$this->groupType,$this->groupID
				));
				$this->DB->execute();
			}
		break;
	}
}

Odnośnik do komentarza
Udostępnij na innych stronach

  • Manager

By cokolwiek tutaj sprawdzić i znaleźć należałoby mieć dostęp.

Na początek możesz sprawdzić, czy błąd jest właśnie w wyświetlaniu danych czy ich pobieraniu z bazy :a: to drugie sprawdzisz wstawiając tuż przed } kończącym metodę o nazwie protected function fetchGroupMembers($unpackPermissions = false) taki kod:

print_r( $this->members );

Widzę, że to chyba jakaś aplikacja biznesowa, więc byłbym ostrożny w podawaniu kodów i wyników na forum publicznym.

intermedia - profesjonalne rozwiązania Invision Power Board

---

Chcesz uzyskać szybko i sprawnie pomoc? Uzupełnij wersję i adres w profilu.

Odnośnik do komentarza
Udostępnij na innych stronach

  • Manager

Problem ROZWIĄZANY. Jeśli są jakiekolwiek wątpliwości, pytania proszę o założenie nowego tematu.

Wszelkie uzasadnione reklamacje/pretensje/sugestie/rady przyjmuje ekipa forum.

intermedia - profesjonalne rozwiązania Invision Power Board

---

Chcesz uzyskać szybko i sprawnie pomoc? Uzupełnij wersję i adres w profilu.

Odnośnik do komentarza
Udostępnij na innych stronach

Gość
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ę...

Powiadomienie o plikach cookie

Umieściliśmy na Twoim urządzeniu pliki cookie, aby pomóc Ci usprawnić przeglądanie strony. Możesz dostosować ustawienia plików cookie, w przeciwnym wypadku zakładamy, że wyrażasz na to zgodę.