Skocz do zawartości
Krzysiu

Skrypcik i błąd.

Polecane posty

Witam, postanowiłem sobie napisać prosty skrypcik profiletabs, otóż:

 <?php

 ob_start();


 class profile_char extends profile_plugin_parent


{


        /**

        * Feturn HTML block

        *

        * @access       public

        * @param        array           Member information

        * @return       string          HTML block

        */


        public function return_html_block( $member=array() )


  {


  $zap = $this->DB->buildAndFetch(array('select' => '*',

                        'from'       => '1chars',

                        'where'      => 'player_uid = "' . $this->request['id']. '"'));   


$content = '<span class="name">'.$zap['nick'].'</span><br /> 

                                <span class="desc"><b>'.$zap['hours'].'h, '.$zap['minutes'].'m </b><br /> '.$zap['lastlogged'].'<br />


                        </div></div>';  


           if( ! $this->DB->getTotalRows( $zap ) ) {


                           $content = '

      <p> 

      <em>'.$member['members_display_name'].' nie posiada postaci.</em> 

     </p> ';  






}

return $content;

        }

}

?>
Lecz wyskakują mi takie błędy:
Warning: mysqli_num_rows() expects parameter 1 to be mysqli_result, array given in /homepages/16/d349979453/htdocs/ips_kernel/classDbMysqliClient.php on line 407


Warning: Cannot modify header information - headers already sent by (output started at /homepages/16/d349979453/htdocs/admin/applications/members/extensions/profileTabs/char.php:1) in /homepages/16/d349979453/htdocs/admin/sources/classes/output/formats/html/htmlOutput.php on line 109


Warning: Cannot modify header information - headers already sent by (output started at /homepages/16/d349979453/htdocs/admin/applications/members/extensions/profileTabs/char.php:1) in /homepages/16/d349979453/htdocs/admin/sources/classes/output/formats/html/htmlOutput.php on line 120


Warning: Cannot modify header information - headers already sent by (output started at /homepages/16/d349979453/htdocs/admin/applications/members/extensions/profileTabs/char.php:1) in /homepages/16/d349979453/htdocs/admin/sources/classes/output/formats/html/htmlOutput.php on line 129


Warning: Cannot modify header information - headers already sent by (output started at /homepages/16/d349979453/htdocs/admin/applications/members/extensions/profileTabs/char.php:1) in /homepages/16/d349979453/htdocs/admin/sources/classes/output/formats/html/htmlOutput.php on line 130


Warning: Cannot modify header information - headers already sent by (output started at /homepages/16/d349979453/htdocs/admin/applications/members/extensions/profileTabs/char.php:1) in /homepages/16/d349979453/htdocs/admin/sources/classes/output/formats/html/htmlOutput.php on line 134

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Witaj,

nie dziwie się, bo jest to źle napisane. Nie możesz zrobić tak, że najpierw pobierasz wyniki i je zwracasz a później sprawdzasz czy są jakieś wyniki. Poprawny kod powinien wyglądać tak:

 <?php

class profile_char extends profile_plugin_parent

{

/**
* Feturn HTML block
*
* @access public
* @param array Member information
* @return string HTML block
*/

public function return_html_block( $member=array() )

{

$this->DB->build(array('select' => '*',
'from' => '1chars',
'where' => 'player_uid = "' . $this->request['id']. '"'));

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


if( ! $this->DB->getTotalRows( $res ) ) {

$content = '
<p>
<em>'.$member['members_display_name'].' nie posiada postaci.</em>
</p> ';
}
else
{
$zap = $this->DB->fetch();

$content = '<span class="name">'.$zap['nick'].'</span><br />
<span class="desc"><b>'.$zap['hours'].'h, '.$zap['minutes'].'m </b><br /> '.$zap['lastlogged'].'<br />

</div></div>';
}

return $content;
}
}
?>[/code]

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Oh, dzięki wielkie!

Wiesz może dlaczego występują błędy z headerem? :>

Warning: Cannot modify header information - headers already sent by (output started at /homepages/16/d349979453/htdocs/admin/applications/members/extensions/profileTabs/char.php:1) in /homepages/16/d349979453/htdocs/admin/sources/classes/output/formats/html/htmlOutput.php on line 109


Warning: Cannot modify header information - headers already sent by (output started at /homepages/16/d349979453/htdocs/admin/applications/members/extensions/profileTabs/char.php:1) in /homepages/16/d349979453/htdocs/admin/sources/classes/output/formats/html/htmlOutput.php on line 120


Warning: Cannot modify header information - headers already sent by (output started at /homepages/16/d349979453/htdocs/admin/applications/members/extensions/profileTabs/char.php:1) in /homepages/16/d349979453/htdocs/admin/sources/classes/output/formats/html/htmlOutput.php on line 129


Warning: Cannot modify header information - headers already sent by (output started at /homepages/16/d349979453/htdocs/admin/applications/members/extensions/profileTabs/char.php:1) in /homepages/16/d349979453/htdocs/admin/sources/classes/output/formats/html/htmlOutput.php on line 130


Warning: Cannot modify header information - headers already sent by (output started at /homepages/16/d349979453/htdocs/admin/applications/members/extensions/profileTabs/char.php:1) in /homepages/16/d349979453/htdocs/admin/sources/classes/output/formats/html/htmlOutput.php on line 134

Edytowano przez Krzysiu

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Tak, błąd wystąpił dlatego, że najpierw w przeglądarce pojawił się błąd:

Warning: mysqli_num_rows() expects parameter 1 to be mysqli_result, array given in /homepages/16/d349979453/htdocs/ips_kernel/classDbMysqliClient.php on line 407
[/code]

w związku z tym każde późniejsze wysyłanie nagłówków powoduje te pozostałe błędy, które podałeś

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Jak zapisały? takie błędy się nie zapisują bo spowodowane były błędem wysyłania nagłówków, który wynikł nie ze złego działania aplikacji tylko ze złego pisania przez Ciebie skryptu

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Rozumiem, lecz poprawiłes mój skrypt, główny bład zniknał a te z hederami zostały.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

aaa, przepraszam, nie zrozumiałem :) usunąłeś tego ob_start() tak jak w moim kodzie?

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

wklej jaki masz kod, to zerkniemy co można jeszcze zrobić i nie pisz 4 postów jeden pod drugim z tą samą zawartością

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Jestem w szkole i na telefonie, lag - wybacz. Jak wroce do domu dam kod. ;)

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

 <?php

class profile_char extends profile_plugin_parent


{

public function return_html_block( $member=array() )

  {


$results = array();

$this->DB->build( array( 'select' => '*',

                        'from'       => '1chars',

                        'where'      => 'guid = "' . $this->request['id']. '"'));


while ( $row = $this->DB->fetch() )

{

	$zap[] = $row;

}


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


  $content = '';



           if( ! $this->DB->getTotalRows( $res ) ) {


                          $content = '<h3 class="bar">Postacie gracza</h3><div class="friend_list clear" style="margin:0;padding:0">

      <p> 

      <em>'.$member['members_display_name'].' nie posiada postaci.</em> 

     </p> ';  

}

else

{

$zap = $this->DB->fetch();


$zap['nick'] = str_replace("_"," ", $zap['nick']);


$content = '<div id="tab_content" class="row1">



                                        <h3 class="bar">Postacie gracza</h3><div class="friend_list clear" style="margin:0;padding:0"><ul class="clearfix"><li style="height:170px;">


                                <img src="http://h-rp.co/public/hrp/skins/Skin_'.$zap['skin'].'.gif"><br />


                 <span class="name">'.$zap['nick'].'</span><br /> 

                                <span class="desc"><b>'.$zap['hours'].'h, '.$zap['minutes'].'m </b><br /> '.$zap['lastlogged'].'<br />


                        </div></div>';  

}


return $content;

        }

}

?>

Oto kod. ;)

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Okej, zredukowałem liczbę spacji na górze i errory zniknęły. Ale mam pytanie otóż: Dlaczego pobiera mi tylko jedno zapytanie, spełniające dany warunek? Jak są dwa, pobiera to o wyższym id

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Bo pobierasz tylko jeden rekord:

$zap = $this->DB->fetch();

jeśli chcesz wszystkie to musisz pętlą pobierać wyniki jakimś while'em

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

oj, podstawy kolego, podstawy :)

Znajdź:

$zap = $this->DB->fetch();

$zap['nick'] = str_replace("_"," ", $zap['nick']);

$content = '<div id="tab_content" class="row1">


<h3 class="bar">Postacie gracza</h3><div class="friend_list clear" style="margin:0;padding:0"><ul class="clearfix"><li style="height:170px;">

<img src="http://h-rp.co/public/hrp/skins/Skin_'.$zap['skin'].'.gif"><br />

<span class="name">'.$zap['nick'].'</span><br />
<span class="desc"><b>'.$zap['hours'].'h, '.$zap['minutes'].'m </b><br /> '.$zap['lastlogged'].'<br />

</div></div>'; [/code] Zamień na:
[code]$content = '';
while($zap = $this->DB->fetch())
{

$zap['nick'] = str_replace("_"," ", $zap['nick']);

$content .= '<div id="tab_content" class="row1">


<h3 class="bar">Postacie gracza</h3><div class="friend_list clear" style="margin:0;padding:0"><ul class="clearfix"><li style="height:170px;">

<img src="http://h-rp.co/public/hrp/skins/Skin_'.$zap['skin'].'.gif"><br />

<span class="name">'.$zap['nick'].'</span><br />
<span class="desc"><b>'.$zap['hours'].'h, '.$zap['minutes'].'m </b><br /> '.$zap['lastlogged'].'<br />

</div></div>';
}

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Dzięki ale już sobie poradziłem. :P

Wiesz może jaką funkcja mogę wywołać coś widocznego tylko dla administratora? :>

Edytowano przez Krzysiu

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

W sensie coś widocznego dla admina? chcesz żeby widział jakiś komunikat czy jakieś inne dane? najprościej sprawdzić czy odwiedzający profil

$this->memberData['g_access_cp']

ma dostęp do acp

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

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