Skocz do zawartości
  • 0
Zaloguj się, aby obserwować  
zbyszekk

Zapytanie w pętli. Wyświetla jeden i ten sam rekord.

Pytanie

Cześć. Mam kartotekę w której mam "delikwentów". Kiedy klikam na jednego z nich przekierowuje mnie na stronę z jego opisem. Chcę wyświetlić tam "Wpisy" coś jak komentarze. Wszystko działa tak jak trzeba, lecz zamiast różnych rekordów pokazuje mi jeden i ten sam

 

php

/wpisy
		$wpiss = $this->DB->build(array(
		'select' => '*',
		'from' => 'LSPD_culprit_message',
		'where' => 'pid = "'.$this->request['uid'].'"'
		));
		$b = $this->DB->execute();
		
		while($wpis = $this->DB->fetch($b))
		{
			$wpiss[] = $wpis;
			
			//nick,skin
			$this->DB->build(array(
			'select' => '*',
			'from' => 'LSPD_officers',
			'where' => 'uid = "'.$wpis['officer'].'"'
			));
			$d = $this->DB->execute();
			
			$nickskin = $this->DB->getTotalRows($d);
		}

Szablon

<table class='ipb_table report_center'>
					<tr class='header'>
						<th scape='col' colspan="20">Wpisy</th>
					</tr>
					
					<if test="count($wpiss)">
						<foreach loop="$wpiss as $wpis">
						<tr>
							<th scape='col'><div style="background: url(http://gtav.pl/uploads/gtam/GTASA_skins/{$nickskin['skin']}.png); float: left; background-position: 40% 2%; height:35px; width:35px;"></div></th>
							<th scape='col'>{$nickskin['nick']}</th>
							<th scape='col'>{parse date="$wpis['date'] " format="SHORT"}</th>
						</tr>
						<tr>
							<th scape='col' colspan="20">
								{$wpis['message']}
								<div style="clear: both; border-bottom: 1px solid #888; width: 100%; margin: 5px auto;"></div>
							</th>
						</tr>
						</foreach>
					</if>
				</table>

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

14 odpowiedzi na to pytanie

Polecane posty

  • 0

Jak dla mnie to to zapytanie jest mega skopane

1. jeśli masz coś takiego:

$wpiss = $this->DB->build(array(
		'select' => '*',
		'from' => 'LSPD_culprit_message',
		'where' => 'pid = "'.$this->request['uid'].'"'
		));
		$b = $this->DB->execute();
		
		while($wpis = $this->DB->fetch($b))
		{
			$wpiss[] = $wpis;
			
			//nick,skin
			$this->DB->build(array(
			'select' => '*',
			'from' => 'LSPD_officers',
			'where' => 'uid = "'.$wpis['officer'].'"'
			));
			$d = $this->DB->execute();
			
			$nickskin = $this->DB->getTotalRows($d);
		}

to raczej nie będzie działać. zamiast tego daj tak:

$wpiss = array();
$this->DB->build(array(
		'select' => '*',
		'from' => 'LSPD_culprit_message',
		'where' => 'pid = "'.$this->request['uid'].'"'
		));
		$b = $this->DB->execute();
		
		while($wpis = $this->DB->fetch($b))
		{
			$wpiss[] = $wpis;
			
			//nick,skin
			$this->DB->build(array(
			'select' => '*',
			'from' => 'LSPD_officers',
			'where' => 'uid = "'.$wpis['officer'].'"'
			));
			$d = $this->DB->execute();
			
			$nickskin = $this->DB->getTotalRows($d);
		}

2. czy możesz mi wytłumaczyć, co to ma robić:

//nick,skin
			$this->DB->build(array(
			'select' => '*',
			'from' => 'LSPD_officers',
			'where' => 'uid = "'.$wpis['officer'].'"'
			));
			$d = $this->DB->execute();
			
			$nickskin = $this->DB->getTotalRows($d);

bo z kodu, który wkleiłeś wynika, że to nic robi, poza wykonywaniem zapytania do bazy

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
  • 0

2. czy możesz mi wytłumaczyć, co to ma robić:

//nick,skin
			$this->DB->build(array(
			'select' => '*',
			'from' => 'LSPD_officers',
			'where' => 'uid = "'.$wpis['officer'].'"'
			));
			$d = $this->DB->execute();
			
			$nickskin = $this->DB->getTotalRows($d);

bo z kodu, który wkleiłeś wynika, że to nic robi, poza wykonywaniem zapytania do bazy

Z tego pobieram nazwy postaci oraz skin. Bo w tabeli LSPD_culprit_message zapisuje jako uid nie jako nick

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
  • 0

A jesteś pewien, że gdzieś coś jeszcze nie jest skopane? bo ten fragment co piszesz do pobierania to pobierasz w pętli ale z tym nic nie robisz więc tutaj jest coś bardziej skopane. Tak samo, czy może być na pewno więcej elementów o pid == X ?

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
  • 0

1.

public function doExecute( ipsRegistry $registry )
    {
       
                function answer($answer)
                {
                        switch($answer)
                        {
                                case 0: { $answer = 'Nie'; break; }
                                case 1: { $answer = 'Tak'; break; }
                        }
                        return $answer;
                }

 W metodzie nie definiuje się funkcji

2. stosuj jedną konwencje zapytań a nie taka mieszaanka

3. tak jak pisałem ten kod w pętli jest bez sensu, bo z każdym przebiegiem pętli nadpisujesz zmienną $nickskin

4. Czy domyślne tabele forum jak members itp też mają prefiks IPB_?

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
  • 0

sam kod jest w miarę ok, tzn nie ma błędu w samym kodzie (bezpieczeństwo to inna sprawa). Jak dla mnie to coś jest nie tak w tabelach. Zweryfikuj sobie nazwy i wartości pól czy na pewno jest ok

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
  • 0

sam kod jest w miarę ok, tzn nie ma błędu w samym kodzie (bezpieczeństwo to inna sprawa). Jak dla mnie to coś jest nie tak w tabelach. Zweryfikuj sobie nazwy i wartości pól czy na pewno jest ok

Wygląda na to że też jest ok. Ale dam screny, może ty czegoś się doszukasz. 

 

IPB_LSPD_culprit_message http://scr.hu/14ut/94hi7

IPB_LSPD_officers http://scr.hu/14ut/k3dqj

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
  • 0

to jest ten sam screen pod oboma linkami

 

Edit. a swoją drogą to zapytanie do IPB_LSPD_officers jest bez sensu. pobierasz wszystkie rekordy, po czy do zmiennej przypisujesz ilość rekordów o takim uid...

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
  • 0

Nie wiem dokładnie co chcesz zrobić. Ogólnie wygląda kod, że jest ok, więc błąd jest gdzieś indziej a nie w konkretnie tym fragmencie co wkleiłeś.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
  • 0

Problem rozwiązany. 

$wpisy = $this->DB->build(array(
  'select' => '*',
  'from' => array( 'LSPD_culprit_message' => 'cm' ),
  'where' => 'pid = "'.$this->request['uid'].'"',
  'add_join' => array( 0 => array( 'select' => 'ofc.nick o_nick',
                                                     'from'   => array( 'LSPD_officers' => 'ofc' ),
                                                     'where'  => 'ofc.uid = cm.pid ',
                                                     'type'   => 'left' ) )                 
  ));

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
Gość
Temat jest zablokowany i nie można w nim pisać.
Zaloguj się, aby obserwować  

  • 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.