[PHP] Hoe array uitbreiden?

Pagina: 1
Acties:
  • 142 views sinds 30-01-2008
  • Reageer

Onderwerpen


  • Reveller
  • Registratie: Augustus 2002
  • Laatst online: 05-12-2022
Ik heb de volgende code:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
function path($nid, $level=0) {
  global $path;

  $result = db_query("SELECT pid FROM nodes WHERE nid = %d", $nid);

  if ($level == 0) $path[] = $nid;
  
  if (db_num_rows($result) == 0) {
    if ($level == 0) { 
      $path[0] = 1; 
      $path[1] = 0; 
    }    
  }
  else {
    $pid = db_result($result, 0);
    $path[] = $pid;
    if ($pid != 0) {
      path($pid, $level+1);
    }
  }
}

Met deze functie bepaal ik recursief het pad van een node in de tree naar de rootnode. Zie hieronder een stuk van de tabel "nodes":
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
+-----+-----+-------------+--------------------+
| nid | pid |    title    | alias              |
+-----+-----+-------------+--------------------+
|   1 |   0 | Home        | over               |
+-----+-----+-------------+--------------------+
|   2 |   1 | Over Ons    | oplossingen        |
+-----+-----+-------------+--------------------+
|   4 |   1 | Oplossingen |                    |
+-----+-----+-------------+--------------------+
|   7 |   1 | Contact     |                    |
+-----+-----+-------------+--------------------+
|  10 |   7 | Gastenboek  | contact/gastenboek |
+-----+-----+-------------+--------------------+
|  58 |   2 | Testpagina  |                    |
+-----+-----+-------------+--------------------+
|  59 |   1 | Sitemap     | sitemap            |
+-----+-----+-------------+--------------------+

Door het aanroepen van bijvoorbeeld path(10) krijg ik:
code:
1
2
3
4
5
6
7
Array
(
    [0] => 10
    [1] => 7
    [2] => 1
    [3] => 0
)

Ik probeer nu al een tijdje om de path() functie uit te breiden zodat ik de volgende output krijg:
code:
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
(in de functie path() natuurlijk aanpassen: $result = db_query("SELECT 
pid, title, alias FROM nodes WHERE nid = %d", $nid))

Array
(
  [0] =>
    Array
    (
      [nid] => 10
      [title] => Gastenboek
      [alias] => contact/gastenboek
    )
  [1] =>
    Array
    (
      [nid] => 7
      [title] => Contact
      [alias] => 
    )
  [2] =>
    Array
    (
      [nid] => 1
      [title] => Home
      [alias] =>
    )
)

Ik kom hier echter helemaal niet uit. Kan iemand mij op weg helpen?

"Real software engineers work from 9 to 5, because that is the way the job is described in the formal spec. Working late would feel like using an undocumented external procedure."


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

NMe

Quia Ego Sic Dico.

In de functie path een array opbouwen die de 3 velden bevat die je hebben wil, en dat weer toekennen aan een veld van een grotere array. :z

'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.


  • raps
  • Registratie: April 2003
  • Laatst online: 06-09 19:51
ipv:
PHP:
1
$path[] = $pid;

PHP:
1
2
$path[$i]['nid'] = $pid;
$path[$i]['title'] = $title;

En dan dus ergens die $i laten tellen.

edit:
of nog beter.
PHP:
1
2
3
while ($result = mysql_fetch_assoc($sql)) {
   $path[] = $result;
}

[ Voor 33% gewijzigd door raps op 09-09-2004 20:27 ]


Verwijderd

Hoe wil je de diepte dan bepalen?

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

NMe

Quia Ego Sic Dico.

Verwijderd schreef op 09 september 2004 @ 20:47:
Hoe wil je de diepte dan bepalen?
Op dezelfde manier die TS nu gebruikt bijvoorbeeld? :?

'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.


  • raps
  • Registratie: April 2003
  • Laatst online: 06-09 19:51
Verwijderd schreef op 09 september 2004 @ 20:47:
[...]
Hoe wil je de diepte dan bepalen?
Zoals hij dat nu doet... door de key in $path :?

Verwijderd

oeps over 1e stukje gekeken :+
Pagina: 1