PHP Class List

Tags:    php

Hejsa..
Jeg er igang med at lave en nyhedsklasse samt en klasse der skulle kunne indeholde en liste af nyheder..
Men jeg har problemer med at få hentet nyheder ud fra listen..
Min kode ser således ud..:

// * * * * * * * * * * * * * * * * * * * * * * * * * * * *
// Klassen TNewsList
class TNewsList{
var $arrNews;
// - - - - -
function TNewsList(){
echo 'TNewsList';

dbOpen();

$resultat = mysql_query("SELECT * FROM news ORDER BY date ASC");
while ($data = mysql_fetch_array($resultat)){
echo 'ADD';
$arrNews[$data[0]] = new TNews($data[0], $data[1], $data[2], $data[3], $data[4], $data[5], $data[6], $data[7]);
}
echo $this -> arrNews[0], $this -> arrNews[1], $this -> arrNews[2], $this -> arrNews[3];
dbClose();
}
// - - - - -
function addNews($newsGroup, $author, $link, $imgPath, $title, $text){
$date = time();

dbOpen();

$resultat = mysql_query("select * from news WHERE title = '$title' AND text = '$text'");
while ($data = mysql_fetch_array($resultat)){
echo "Nyheden er allerede i databasen!";
$break = true;
}

if($title == '' || $text == '' || $author == ''){
echo "Du mangler at udfylde noget..!";
$break = true;
}

if($break != true){
mysql_query("INSERT INTO news (date, newsGroup, author, link, imgPath, title, text) VALUES ('$date', '$newsGroup', '$author', '$link', '$imgPath', 'title', '$text')");
echo "Linket er tilføjet!";
}

dbClose();

}
// - - - - -
function getNews($ID){
return $this -> arrNews[$ID];
}
// - - - - -
function echoNews(){
echo 'TEsT';
$count = 0;
while($this -> arrNews[$count]){
echo '*';
$tempNews = getNews($count);
echo $tempNews;
$count++;
}
}
}



// * * * * * * * * * * * * * * * * * * * * * * * * * * * *
// Klassen TNews
class TNews{
// Atributter
var $ID;
var $date;
var $newsGroup;
var $author;
var $link;
var $imgPath;
var $title;
var $text;

var $arrNews;

function TNews($ID, $date, $newsGroup, $author, $link, $imgPath, $title, $text){
$ID = $this -> ID;
$date = $this -> date;
$newsGroup = $this -> newsGroup;
$author = $this -> author;
$title = $this -> title;
$text = $this -> text;
}


}


// * * * * * * * * * * * * * * * * * * * * * * * * * * * *

Har jeg gjort noget galt, eller er der nogen som har nogle gode ideer..?



6 svar postet i denne tråd vises herunder
1 indlæg har modtaget i alt 5 karma
Sorter efter stemmer Sorter efter dato
Du instantiere din TNews klasse som et array!? -du skal bare lave en almindelig variabel ($minTNews = new TNews....), og så skal du give din TNews klasse en metode (function i PHP) til at returnere sine værdier, eks. getNews. Klassen har pt. ikke nogen måde at returnere sine værdier...de kan komme ind, men ikke ud :-)

$minTNews er bare en instans af din klasse, det er ikke et array i sig selv som indeholder værdierne. Det skal klassen have en metode til...

Venlig hilsen
Jon Krondal Honum




Du instantiere din TNews klasse som et array!? -du skal bare lave en almindelig variabel ($minTNews = new TNews....), og så skal du give din TNews klasse en metode (function i PHP) til at returnere sine værdier, eks. getNews. Klassen har pt. ikke nogen måde at returnere sine værdier...de kan komme ind, men ikke ud :-)

$minTNews er bare en instans af din klasse, det er ikke et array i sig selv som indeholder værdierne. Det skal klassen have en metode til...


Men jeg er vel nød til at bruge et array når jeg ønsker at det skal være en liste af flere objekter..
arr[0] = new TNews;
arr[1] = new TNews;

Hvis jeg bruger en alm. var, kan jeg jo kun håndtere en ad gangen..

Det er meningen at jeg skal løbe hele DB igennem og have instantieret alle nyheder som objekter..






Men jeg er vel nød til at bruge et array når jeg ønsker at det skal være en liste af flere objekter..
arr[0] = new TNews;
arr[1] = new TNews;

Hvis jeg bruger en alm. var, kan jeg jo kun håndtere en ad gangen..

Det er meningen at jeg skal løbe hele DB igennem og have instantieret alle nyheder som objekter..


Ok. Jamen så kan du godt have en instans af klassen i hver position i dit array, men klassen skal fortsat have en metode til at returnere sine værdier :)

Hilsen Jon

[Redigeret d. 18/03-04 10:27:14 af Jon Krondal Honum]




Men jeg er vel nød til at bruge et array når jeg ønsker at det skal være en liste af flere objekter..
arr[0] = new TNews;
arr[1] = new TNews;

Hvis jeg bruger en alm. var, kan jeg jo kun håndtere en ad gangen..

Det er meningen at jeg skal løbe hele DB igennem og have instantieret alle nyheder som objekter..

Ok. Jamen så kan du godt have en instans af klassen i hver position i dit array, men klassen skal fortsat have en metode til at returnere sine værdier :)

Hilsen Jon

[Redigeret d. 18/03-04 10:27:14 af Jon Krondal Honum]



Okay.. Det vil sige at jeg godt kan have en listeklasse som laver mit array med newsobjekterne..
Og dertil have en metode som returnere de enkelte atributter..
Skal de så tilgås ved at skrive :
$TNewsList -> arrNews[$ID] -> getTitle;
??



Okay.. Det vil sige at jeg godt kan have en listeklasse som laver mit array med newsobjekterne..
Og dertil have en metode som returnere de enkelte atributter..
Skal de så tilgås ved at skrive :
$TNewsList -> arrNews[$ID] -> getTitle;
??

Det burde du kunne ja, men jeg må sige, at jeg personligt ville droppe listeklassen. Som jeg ser den, så trækker den data ud én gang, og så danner den et array af nyhedsobjekter...den kører en gang, og så bruger du den ikke mere!? -bortset fra indgang til dine nyhedsobjekter, hvilke du ligeså godt kunne tilgå direkte fra arrayet, hvis det var dannet i din almindelige kode.

Jeg ville foretage listeklassens arbejde i almindelig kode, og så bare arbejde med mit array af nyhedsobjekter...jeg kan ikke se ideen i, at have en listeklasse i denne sammenhæng.

Det ville gøre det mere overskueligt, og lettere at arbejde med i mine øjne :)

Hilsen Jon

[Redigeret d. 18/03-04 11:16:03 af Jon Krondal Honum]



Hvis du har fået svar på din post så vær venlig at lukke den.

-----------------------------------------------------------------------------

»»Mark S. Johansen



t