Avatar billede tcp Nybegynder
06. oktober 2010 - 10:30 Der er 3 kommentarer og
1 løsning

hjælp med function, skal retunere en tække tags

Hej eksperten,

Ved at lave en function der henter tags i databasen,
men kan kun få den til at retunere 1 tag ?

Den skulle gerne retunere tag1+tag2+tag3+
men jeg får kun tag1+


Her er koden, 

function video_tags_rel($player)
{
   
    // $PLAYER INDHOLDER FILE 
        $query = mysql_query("SELECT * FROM videos INNER JOIN videos_tags on videos.id = videos_tags.videos_id INNER JOIN tags on videos_tags.tags_id = tags.id WHERE file='$player'  ");
       
       
        while($row = mysql_fetch_assoc($query))
        {
       
        $ret = $row['tag'];
        $ret = strtolower($ret);
        $string="$ret";
        $num_char = strlen($string);

        if($num_char >3 )
            {       
            return "$ret+";
            }
        }
   
       
           
}
Avatar billede intenz Novice
06. oktober 2010 - 10:55 #1
Du returnerer din værdi inde fra loopet, derfor når den returnerer det første tag, afsluttes funktionen.

Du skal gemme dine tags i en variabel i loopet, og så returnere det hele efter loopet er slut.

F.eks. sådan:

while($row = mysql_fetch_assoc($query))
        {
       
        $ret = $row['tag'];
        $ret = strtolower($ret);
        $string="$ret";
        $num_char = strlen($string);

        if($num_char >3 )
            {
                if (!isset($returnVar)) {
                    $returnVar = $ret."+";
                } else {
                    $returnVar .= $ret."+";
                }
            }
        }
        return $returnVar;
Avatar billede tcp Nybegynder
06. oktober 2010 - 10:58 #2
Tak Det var lige sådan det skulle være, bukker og nejer :-)
Avatar billede Slettet bruger
06. oktober 2010 - 11:01 #3
PHP funktioner kan kun returnerer én ting, men der er tilgengæld ikke rigtig nogle grænser for hvad det er.
Så i dit tilfælde er der 2 moderne muligheder.

Første mulighed er at bygge en streng ud fra dit while-loop og så returnerer den til sidst i din funktion.

Anden mulighed er at gemme alle tagnse i et array og så returnerer det i funktionen.

Den mest simple er den første mulighed, men som sagt så er den simpel og kan nemt give små irritationer, som f.eks. man manuelt skal fjerne eventuelle overflødige tegn. Det kunne f.eks. være det tegn man bruger til at "lime" de enkelte dele sammen med, i dit eksempel tegnet "+".

Den anden mulighed åbner for lidt flere muligheder, som f.eks. at tælle hvor mange tags-relationer der blev fundet og du kan nemt få dem sat sammen i én streng ved at bruge implode-funktionen
Avatar billede Slettet bruger
06. oktober 2010 - 11:02 #4
Hov så slet ikke der allerede var kommet og accepteret svar - men så må jeg jo lære bare at være hurtigere!
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester