Witam. Uczę się php i nie mogę ogarnąć jak umieścić obiekty w tablicy? Czy w ogóle da się tak zrobić? Oto mój kod:
<?php
class Ranking
{
public $score;
public $zyc;
public $rozbitych_statkow;
public $zdobytych_nagrod;
public $rozwalonych_nagrod;
public $rozbitych_asteroid;
public $nickname;
public function getScores()
{
return $this->score;
}
public function Inicjuj( $score, $zyc, $rozbitych_statkow, $zdobytych_nagrod, $rozwalonych_nagrod, $rozbitych_asteroid, $nickname )
{
$this->score = $score;
$this->zyc = $zyc;
$this->rozbitych_statkow = $rozbitych_statkow;
$this->zdobytych_nagrod = $zdobytych_nagrod;
$this->rozwalonych_nagrod = $rozwalonych_nagrod;
$this->rozbitych_asteroid = $rozbitych_asteroid;
$this->nickname = $nickname;
}
public function show()
{
echo nl2br( "\n Imie: ".$this->nickname );
echo nl2br( "\n Punkty: ".$this->score );
echo nl2br( "\n zyc: ".$this->zyc );
echo nl2br( "\n rozbitych_statkow: ".$this->rozbitych_statkow );
echo nl2br( "\n zdobytych_nagrod: ".$this->zdobytych_nagrod );
echo nl2br( "\n rozwalonych_nagrod: ".$this->rozwalonych_nagrod );
echo nl2br( "\n rozbitych_asteroid: ".$this->rozbitych_asteroid );
}
}
//Odebranie danych z programu...
$score= $_POST['score'];
$zyc = $_POST['zyc'];
$rozbitych_statkow = $_POST['StatkowRozbitych'];
$zdobytych_nagrod = $_POST['zdobytych_nagrod'];
$rozwalonych_nagrod = $_POST['rozwalonych_nagrod'];
$rozbitych_asteroid = $_POST['rozbitych_asteroid'];
$nickname = $_POST['nickname'];
if ($nickname == " "){
$nickname = "Anonim";
}
///Zapisanie danych do pliku...
/* $openFile=fopen("ranking.txt", "a+b");
$ciagZnakow = $score."\n".$zyc."\n".$rozbitych_statkow."\n".$zdobytych_nagrod."\n".$rozwalonych_nagrod."\n".$rozbitych_asteroid."\n".$nickname."\n";
fwrite($openFile, $ciagZnakow);
fclose($openFile); */
///odczyt tabeli...
$plik = fopen("ranking.txt", 'r');
//Tablica rankingu
$rank = array();
//Licznik tablicy
$i = 0;
while ( !feof( $plik ) ) {
$rank[$i] = new Ranking;
$rank[$i]->Inicjuj( fgets( $plik ), fgets( $plik ), fgets( $plik ), fgets( $plik ), fgets( $plik ), fgets( $plik ), fgets( $plik ) );
++$i;
}
fclose( $plik );
for ( $j = 0; $j < $i; ++$j ) {
$rank[$j]->show();
}
///sortowanie
for ( $k = 0; $k < $i; ++$k ) {
for ( $j = $i - 1; $j >= $k; --$j ) {
if ( $rank[ $j - 1 ]->getScores() > $rank[ $j ]->getScores() ){
list( $rank[$j - 1], $rank[$j] ) = array( $rank[$j], $rank[$j - 1] );
}
}
}
for ( $j = 0; $j < $i; ++$j ) {
$rank[$j]->show();
}
///zapis do pliku...
?>
Wywala mi błąd w linijce:
if ( $rank[ $j - 1 ]->getScores() > $rank[ $j ]->getScores() ){
co jest nie tak? Gdzie jest błąd?
Z GÓRY DZIĘKUJE ZA POMOC :)
action
, żaden problem. || filtrowanie danych - ogółem, nie tylko dla tego przypadku. możesz albo wycinać znaki wrażliwe, albo escape-ować je jakoś (w tym przypadku nie ma to zastosowania raczej, ale patrz: sql injection), albo po prostu jeżeli otrzymasz jakiekolwiek znaki spoza białej listy - odrzucić całe żądanie jako próba włamu ;]