Slettet bruger
11. februar 2007 - 12:37
Der er
4 kommentarer
Returnering af flere variabler
Hej eksperter.
Jeg har et flash-produkt, der vha. remoting-komponenten henter en portion poster fra en database. SQL-forespørgslen har en LIMIT tilknyttet, da resultaterne skal være sideopdelt.
$start og $slut beregnes på baggrund af en overført side-parameter, der blot angiver 0 for de første 32, 1 for de næste 32 etc.
Koden er som følger:
$querystreng = "SELECT bruger.navne, element.titel, element.uploaddato, element.antalstemmer FROM element, bruger WHERE element.forfatter_id = bruger.bruger_id ORDER BY element_id DESC LIMIT ".$start.", ".$slut;
$sMessage = mysql_query($querystreng);
return $sMessage;
Resultaterne returneres fint. MEN: jeg vil også gerne returnere, hvor mange poster der totalt findes - og således beregne, hvor mange sider der er.
Men jeg satte jo en LIMIT på... Hmm, jamen hvis jeg laver følgende forespørgsel før return-kommandoen:
$totaleantalposterquery = mysql_query("SELECT element.element_id FROM element, bruger WHERE element.forfatter_id = bruger.bruger_id ORDER BY element_id");
$totaleantalposter = mysql_num_rows($totaleantalposterquery);
Nuvel: Nu har jeg 2 resultater: et array med 32 resultater og en variabel, der angiver det totale antal.
Men jeg kan tilsyneladende ikke skrive:
return $sMessage, $totaleantalposter
Hvad burde jeg gøre?
11. februar 2007 - 12:50
#1
En funktion kan kun returnere én variabel. Det du kan gøre er at returnere et array.
Eller:
$tilbage="";
$tilbage.="medd. ".$sMessage."<br>";
$tilbage.="Antal post. ".$totalantalposter;
return $tilbage;
Og så echo'e funktionen på den side den skal vises.
11. februar 2007 - 13:06
#2
Et simpelt eksempel men brug af array:
<?
function to() {
return Array(1,"kurt");
}
list($antal,$navn) = to();
print "$antal $navn"
?>
Slettet bruger
11. februar 2007 - 14:18
#3
Ah, nu har jeg fundet ud af det - tak, Michael.
Som nævnt, anvender jeg remoting-komponenten - og resultaterne returneres i et array.
I flash refereres normat til resultatet på denne måde:
thumbnail.titel = re.result.getItemAt(looptaeller).titel;
thumbnail.soegeord = re.result.getItemAt(looptaeller).soegeord;
Umiddelbart kunne jeg ikke anvende din kodeløsning - men var ikke klar over at man kun kan returnere én værdi.
Derfor har jeg løst det ved at oprette et nyt array - og sætte mit SQL-query-array indeni dette array - efterfulgt af $antalposter... på denne måde:
$tilbagearray = array($sMessage, $antalposter);
return $tilbagearray;
I flash refereres nu blot på denne måde i stedet:
thumbnail.titel = re.result[0].getItemAt(looptaeller).titel;
thumbnail.soegeord = re.result[0].getItemAt(looptaeller).soegeord;
Antallet af poster vises sådan: re.result[1]
Perfeeekt. Tak - og smid endelig svar.