[PHP] functie herhalen binnen class

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Wat ik graag wil is de breadcrums van een uitklapbaar menu boven een pagina weergeven. Dus een stukje tekst weergeven als: hoofdpagina > subpagina > subsubpagina enz.

Nou had ik het volgende stukje code gemaakt. Allereerst een class waar ik de structuur in een array gooi:

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
class display_breadcrums{

var            $breadcr_id_array;
var $breadcr_name_array;


function display_breadcrums($pageid){

$dbtype="Officeplus";
connect_db($dbtype);


$query = "SELECT * FROM dynamenu WHERE id='$pageid' ORDER BY porder";

$result=odbc_exec($GLOBALS['myDB'],$query);

while(odbc_fetch_row($result))
            {
       
       $pparent=    odbc_result($result,"pparent");
       $itemname=   odbc_result($result,"itemname");


        $breadcr_id_array[]=$pageid;
        $breadcr_name_array[]=$itemname;
        
        $checkpparent="SELECT id FROM dynamenu WHERE id='$pparent'";
    
        if (better_odbc_num_rows($GLOBALS['myDB'],$checkpparent) > 0){
        
         display_breadcrums($pparent);      

            }       

        }

$this->breadcr_id_array =$breadcr_id_array;
$this->breadcr_name_array   =$breadcr_name_array;
    }

}


En een stukje in mijn pagina waar ik de zaak wil echoen

PHP:
1
2
3
4
5
6
7
8
9
10
11
   $display_breadcrums = new display_breadcrums($pageid);
                     
    $breadcr_id_array   =$display_breadcrums->breadcr_id_array;
    $breadcr_name_array =$display_breadcrums->breadcr_name_array;

        $countbrcr= count($breadcr_id_array);

    for  ($i=0;$i<$countbrcr;$i++){

echo "<a href='?pageid=".$breadcr_id_array[$i]."'>".$breadcr_name_array[$i]."&nbsp;>&nbsp;</a>";
                    }


Nu krijg ik alleen de volgende foutmelding:

Fatal error: Call to undefined function display_breadcrums() in d:\Apache\htdocs\projecten\webshopnew\classes\functionsmenu.php on line 138

Waarschijnlijk mag deze manier van aanroepen niet binnen een class. Wat doe ik fout ik zie het zelf echt niet |:(

Acties:
  • 0 Henk 'm!

  • sjroorda
  • Registratie: December 2001
  • Laatst online: 14:31
Include je de class wel?

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Jazeker... het werk ook well voor 1 item als ik display_breadcrums($pparent); op regel 31 weghaal... maar ik moet alle items in een array hebben

Bij deze nog even database structuur

id itemname pparent porder itemurl
1 Home 0 1 NULL
2 subitem1 1 1 NULL
3 item1 0 2 NULL
4 subitem2 1 2 NULL
5 subsubitem 2 1 NULL

[ Voor 54% gewijzigd door Verwijderd op 18-04-2005 10:52 ]


Acties:
  • 0 Henk 'm!

  • RHE123
  • Registratie: April 2003
  • Laatst online: 10:42

RHE123

Edubits

Je moet wel $this->display_breadcrums() doen! In een class moet je alle functies en variabelen uit die class met $this-> aanspreken. Zie voor meer info http://nl2.php.net/manual/nl/ref.classobj.php.

Canon 1D X + 16-35 f/2.8L + 24-70 f/2.8L + 70-200 f/2.8L IS + 135 f/2.0L + 430EX II | iMac | MacBook Pro


Acties:
  • 0 Henk 'm!

  • samo
  • Registratie: Juni 2003
  • Laatst online: 12:46

samo

yo/wassup

welke regel is 'd:\Apache\htdocs\projecten\webshopnew\classes\functionsmenu.php on line 138'?
is dat
code:
1
$display_breadcrums = new display_breadcrums($pageid);

of is dat
code:
1
display_breadcrums($pparent);

En probeer anders eens
code:
1
 $this->display_breadcrums($pparent);
op rij 31 van je 1ste codeblok

Bekend van cmns.nl | ArneCoomans.nl | Het kindertehuis van mijn pa in Ghana


Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Ik zie in dit geval het nut van een class sowieso niet. Om te beginnen is het vreemd om meerdere keren een constructor aan te roepen, wat je hier dus doet. En verder lijkt een class met één functie me ook niet erg zinnig. Waarom maak je er niet gewoon een functie van?

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
RHE123 schreef op maandag 18 april 2005 @ 10:49:
Je moet wel $this->display_breadcrums() doen! In een class moet je alle functies en variabelen uit die class met $this-> aanspreken. Zie voor meer info http://nl2.php.net/manual/nl/ref.classobj.php.
Thx dit werkt _/-\o_

Acties:
  • 0 Henk 'm!

  • T-MOB
  • Registratie: Maart 2001
  • Nu online
Wilde iets zeggen over $this->method() maar dat staat er ondertussen al.

Nog een kleine tip. In de functie voer je nu elke keer dat je hem aanroept een aantal queries uit. Waarschijnlijk is het een stuk sneller als je één keer alle (relevante) data ophaalt uit de DB en die gebruikt in je functie.

Regeren is vooruitschuiven

Pagina: 1