/ Forside / Teknologi / Udvikling / PHP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
PHP
#NavnPoint
rfh 3959
natmaden 3372
poul_from 3310
funbreak 2700
stone47 2230
Jin2k 1960
Angband 1743
Bjerner 1249
refi 1185
10  Interkril.. 1146
Problemer med funktioner
Fra : David Lebech


Dato : 20-10-04 15:00

Hej,

Jeg har et script til at læse et RSS-dokument som overordnet består af
følgende:

<?php
diverse variabler

function startElement (heri bruges nogle af variablerne)

function endElement (heri bruges nogle af variablerne)

function characterData (heri bruges nogle af variablerne)

script som laver dataene om fra xml til html
?>

Det hele virker perfekt på denne måde. Men da jeg ønsker at benytte
RSS-filer fra flere hjemmesider havde jeg forestillet mig, at man nu kunne
lave hele ovenstående om til én function, i stedet for at gentage den samme
kode mange gange. Det valgte jeg så at gøre på den simple måde nemlig:
function convertRss($url)
{
AL OVENSTÅENDE KODE HERIND
}

convertRss(link_til_rss_fil);

Men det virker ikke? Hvordan kan det være, at det ikke fungerer, bare man
putter det hele ind i en ekstra funktion. Jeg kan se på www.php.net, at man
godt kan lave funktioner inde i funktioner. Nogen forslag? (hvis der ikke er
noget simpelt svar på det, så bruger jeg bare den irriterende løsning =
Gentager scriptet mange gange)

Mvh
David Lebech



 
 
Dan Molberg (20-10-2004)
Kommentar
Fra : Dan Molberg


Dato : 20-10-04 15:36

David Lebech wrote:
-cåt-
> simple måde nemlig: function convertRss($url)
> {
> AL OVENSTÅENDE KODE HERIND
> }
>
> convertRss(link_til_rss_fil);
>
> Men det virker ikke? Hvordan kan det være, at det ikke fungerer, bare
> man putter det hele ind i en ekstra funktion. Jeg kan se på
> www.php.net, at man godt kan lave funktioner inde i funktioner. Nogen
> forslag? (hvis der ikke er noget simpelt svar på det, så bruger jeg
> bare den irriterende løsning = Gentager scriptet mange gange)
Burde virke, den giver ingen fejl? Hvis ikke så kunne det være et trin du
har glemt? Hvad med et link til sourcen? Den sidste fejl jeg så en den
klasse var en glemt return....

--
MVH Dan Molberg
http://beyond.repair.dk/



David Lebech (21-10-2004)
Kommentar
Fra : David Lebech


Dato : 21-10-04 14:26

"Dan Molberg" <beyond@repair.void> skrev i en meddelelse
news:417677ad$0$13753$d40e179e@nntp03.dk.telia.net...
> Burde virke, den giver ingen fejl? Hvis ikke så kunne det være et trin du
> har glemt? Hvad med et link til sourcen? Den sidste fejl jeg så en den
> klasse var en glemt return....

Her er sourcen: http://davidlebech.dk/temp/rss.txt

Vær OBS på to ting:
1. Dette er den fungerende kode, før jeg sætter en function omkring det
hele.
2. Koden udskriver det samme resultat to gange, fordi jeg både har leget med
at gemme resultatet i en class ($arItems) og i nogle ganske almindelige
arrays ($title_array, $link_array, $desc_array). Ingen af delene virker, når
de kommer ind i en ekstra function.

Som sagt kan jeg bare kopiere koden flere gange til flere hjemmesider, men
det må da kunne gøres på en mere overskuelig måde?

Mvh
David Lebech



David Lebech (21-10-2004)
Kommentar
Fra : David Lebech


Dato : 21-10-04 16:08

Jeg har fundet problemet og kører nu på fulde drøn. Tak for inputs...

Mvh
David Lebech



Dan Molberg (21-10-2004)
Kommentar
Fra : Dan Molberg


Dato : 21-10-04 16:15

David Lebech wrote:
> Jeg har fundet problemet og kører nu på fulde drøn. Tak for inputs...
Hvad var så problemet? For jeg satte det lige op og så virkede det. Kunne
ikke se der skulle være nogle problemer.
--
MVH Dan Molberg
http://beyond.repair.dk/



David Lebech (21-10-2004)
Kommentar
Fra : David Lebech


Dato : 21-10-04 17:49


"Dan Molberg" <beyond@repair.void> skrev i en meddelelse
news:4177d278$0$22674$d40e179e@nntp04.dk.telia.net...
> Hvad var så problemet?

Jeg skulle sætte $table_array, $link_array og $desc_array som globale
variabler nederst i min kode, hvor det hele bliver udskrevet. Altså:
for ($i=0;$i<$num_items;$i++) {
global $table_array;
global $link_array;
global $desc_array;
Resten af udskriftskoden;
}

>For jeg satte det lige op og så virkede det. Kunne ikke se der skulle være
>nogle problemer.

Der var ingen problemer med det script, jeg sendte link til. Men når man
satte al koden ind i en anden function, så var der problemer:

function makeNews() {
al_min_kode;
}

makeNews();

I dette tilfældet udskrev den ingen ting. Problemet blev løst som beskrevet
ovenfor...
Jeg stødte imidlertid i et andet problem, som jeg heldigvis fandt en løsning
på, nemlig det faktum at PHP ikke har lyst til at redeklarere en funktion,
som er inden i en anden funktion - startElement, endElement og
characterData. Men som sagt: Problem solved :)

Nu virker det hele perfekt, og du er velkommen til at downloade den
fungerende source-kode her:
http://davidlebech.dk/temp/rss.txt

Mvh
David Lebech



Søg
Reklame
Statistik
Spørgsmål : 177501
Tips : 31968
Nyheder : 719565
Indlæg : 6408527
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste