Avatar billede spiritusanta Nybegynder
14. januar 2007 - 11:28 Der er 5 kommentarer og
1 løsning

Objekt mister data?

Hej
Jeg er igang med at lave noget oo php programmering, har lavet en simple klasse der under initiering læser data fra en tabel og gemmer denne i et array.
Problemet er nu det at når jeg endelig skal til at bruge den data der ligger i variablerne, har klassen glemt hvad der ligger i variablerne.

På forhånd tak
Jonas B
///////////////////////////////////////////////////////////
Her kommer lidt kode.

///////////////
// Test kode //
///////////////
<?php
    include "html/connect.php";
    include "html/pages/getMenu.php";
   
    $menu = new getMenu('0');
    echo $menu->getID('0');
?>

///////////////
// Klasse    //
///////////////
<?php
    class getMenu
    {
        var $ID = array();
       
        public function getMenu($menuId)
        {
            $i = 0;
            $query = mysql_query("SELECT ID FROM menu WHERE RefID='$menuId' ORDER BY SortOrder DESC");
            while($data=mysql_fetch_row($query))
            {
                $ID[$i] = $data[0];
                $i++;
            }
            echo $ID[0];
            echo $ID[1];
        }
       
        public function getID($num)
        {
            echo $ID[0] . "<br>";
            echo $ID[1];
        }
    }
?>
Avatar billede erikjacobsen Ekspert
14. januar 2007 - 11:33 #1
http://dk2.php.net/class  bemærk brugen af $this->feltnavn
Avatar billede spiritusanta Nybegynder
14. januar 2007 - 11:43 #2
Det virker ikke...
Jeg kan godt hardcode $ID = "Hej verden";
og det virker, men problemet opstår når der dynamisk skal skrives data ind i variablen.
Så bliver den af en eller anden grund ikke gemt.

Jeg har skrevet min kode lidt om, så den nu ser således ud.

<?php
    include "html/connect.php";
    include "html/pages/getMenu.php";
   
    $menu = new getMenu('0');
    $menu->getID('0');
?>

<?php
    class getMenu
    {
        public $ID;
       
        public function getMenu($menuId)
        {
            $i = 0;
            $query = mysql_query("SELECT ID FROM menu WHERE RefID='$menuId' ORDER BY SortOrder DESC");
            while($data=mysql_fetch_row($query))
            {
                $ID = $data[0];
                $i++;
            }
            echo $ID;
        }
       
        public function getID($num)
        {
            echo $this->ID . "<br>";
            echo "Hej";
        }
    }
?>
Avatar billede erikjacobsen Ekspert
14. januar 2007 - 11:50 #3
Det er meget simpelt. I dit script i selve spørgsmålet erstattet du

          $ID[$i] = $data[0];
med
          $this->ID[$i] = $data[0];

og
    echo $this->ID[0];
    echo $this->ID[1];
Avatar billede spiritusanta Nybegynder
14. januar 2007 - 11:52 #4
hehe Jep min fejl fandt ud af at der også skulle være $this->ID[$i], hvor der bliver skrevet til variablerne :)

Men mange tak, det ser ud til at fungere nu

Smider du et svar :)
Avatar billede erikjacobsen Ekspert
14. januar 2007 - 11:54 #5
Jeg samler ikke på point, tak. Svar selv, accepter eget svar.
Avatar billede spiritusanta Nybegynder
14. januar 2007 - 11:58 #6
Jamen okay
Men stadig mange tak for hjælpen du har vist reddet min dag :D
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