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

Rekomendowane odpowiedzi

Opublikowano (edytowane)

No więc, wygląda to tak: przesyłam do szablonu xxx zmienną $xxx, rekordów(ze strony skryptu) jest kilka, lecz wyświetlany jest tylko jeden. W żaden sposób mnie to nie dziwi, niestety nie rozumiem w jaki sposób działa argument loop dla selektora <foreach> w szablonach. Mam coś takiego:

<foreach loop="nazwa:$users as $user">
<!-- TUTAJ KOD --!>
</foreach>

Jak dobrze ustawić parametr "loop" dla foreach. Chodzi mi tu głównie o miejsce "nazwa". Z góry dzięki.

Edytowane przez Ptasior
Opublikowano (edytowane)

Jest sukces. Nie ma błędu, ale niestety dalej wyświetlany jest tylko jeden rekord. Nie chcę tworzyć kolejnego tematu, więc napisze tutaj.

Kod modułu:

	$changes = array();

  $this->DB->build( array(
				 			'select' 	=> '*',
					 	'from'		=> 'posts',
					 	'where' => 'topic_id=2',		
					 	'order'		=> 'pid DESC',
					 	'limit'		=> '1000'	
					 	));

$this->DB->execute();		

	while($r=$this->DB->fetch($q))
 {
 	  $this->DB->build( array(
				 			'select' 	=> '*',
					 	'from'		=> 'members',
					 	'where' => 'member_id='.$r['author_id'].''
					  ));

	$qw = $this->DB->execute();
	$m = $this->DB->fetch($qw);		

		  $r['author_id']	= IPSLib::makeProfileLink( IPSLib::makeNameFormatted( $m['members_display_name'], $m['member_group_id'] ));
$changes[] = $r;
	}


	$this->returnHtml( $this->registry->getClass('output')->getTemplate('game')->showRows( $changes ) );

Co w tym jest źle, ponieważ ja nie widzę tu żadnego błędu. ;)

P.S Kod jest strasznie chaotycznie ułożony :P Potem go ułożę.

Edytowane przez Ptasior
  • Manager
Opublikowano

Ee, yyy, a jak userów będzie 1000 to i 1000 zapytań się wykona! :P

Weź daj kod z wcięciami, wrzucę do pliku i Ci poprawię - na pewno ad_joina trzeba dodać, ale kod jest tak zabałaganiony, że nie chce mi się go porządkować.

intermedia - profesjonalne rozwiązania Invision Power Board

---

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

Opublikowano (edytowane)

Wykombinował coś takiego:

public function doExecute( ipsRegistry $registry ) 
{
	$this->registry->class_localization->loadLanguageFile( array( 'public_game') );

      $changes = array();

        $this->DB->build( array(
				 	   'select' 	=> '*',
					 	'from'	=> array( 'posts' => 'p' ),
					 	'where' => 'topic_id=2',		
					 	'order'		=> 'pid DESC',
					 	'limit'		=> '1000',
					 	'add_join'  => array(
												array(
														'select'	=> 'm.members_display_name, m.member_id, m.member_group_id',
														'from'  	=> array( 'members' => 'm' ),
														'where' 	=> 'p.author_id = m.member_id',
														'type'  	=> 'left',
													   )
											      )							

					 	    )        );

$q = $this->DB->execute();		

	while($r = $this->DB->fetch( $q ) )
 {

        $r['author_id']	= IPSLib::makeProfileLink( IPSLib::makeNameFormatted( $m['members_display_name'], $m['member_group_id'] ));

          $changes[] = $r;
   }


	$this->returnHtml( $this->registry->getClass('output')->getTemplate('game')->showRows( $changes ) );
}

Ten add_join na pewno nie jest dobrze zrobiony :a:

P.S Kod jest ułożony dobrze i ma wcięcia u mnie w pajączku ;)

______________________

Poprawiłem tamten kod z tym add join'em tak jak mówiłeś i działa :P . Jeśli masz jakieś uwagi do tego kodu, to byłbym bardzo wdzięczny.

Edytowane przez Ptasior
  • Manager
Opublikowano

Widzę sklejkę z kilku kodów. :P

Próbuj:

public function doExecute( ipsRegistry $registry ) 
{
$this->registry->class_localization->loadLanguageFile( array( 'public_game') );

$changes = array();

$this->DB->build( array(
						'select'	=> 'p.*',
						'from'		=> array( 'posts' => 'p' ),
						'where'		=> 'p.topic_id = 2',                
						'order'		=> 'p.pid DESC',
						'limit'		=> array( 0, 1000 ),
						'add_join'  => array(
												array(
												'select'        => 'm.members_display_name, m.member_id, m.member_group_id',
												'from'          => array( 'members' => 'm' ),
												'where'         => 'p.author_id = m.member_id',
												'type'          => 'left',
												)
											)                                                 

) );

$q = $this->DB->execute();              

while( $r = $this->DB->fetch( $q ) )
{	
	$r['author_id'] = IPSLib::makeProfileLink( IPSLib::makeNameFormatted( $r['members_display_name'], $r['member_group_id'] ) );

	$changes[] = $r;
}


$this->returnHtml( $this->registry->getClass('output')->getTemplate('game')->showRows( $changes ) );
}

P.s. jak możesz to ustaw sobie w Pajączku tabulację na 4.

  • Lubię to 1

intermedia - profesjonalne rozwiązania Invision Power Board

---

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

Opublikowano (edytowane)

Dzięki, będę miał wzorzec na przyszłość.

Widzę sklejkę z kilku kodów. :P

A no, wzorowałem się tu na twoim Hook'u Top X Shouters. Ale teraz już wiem jak to wygląda.

Dzięki wielkie, temat do zamknięcia. :thumbsup:

Edytowane przez Ptasior
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ę.