Avatar billede jansangill Nybegynder
13. september 2008 - 14:22 Der er 10 kommentarer og
1 løsning

guides gennem PHP funktion

Hejsa..

Jeg har en funktion i ASP, her er den:

''''''''''''////////////////////////////////////
b1_4_vist = 0
Sub udskrivmenu(indput,nr)
a = Split(indput,"; ;")
antal = Ubound(a)
pling = "<div style=""float:left; padding:5px 0px; background-image:url(/admin/grafik/menu2.jpg); background-repeat:no-repeat; background-position:bottom;"">&nbsp;</div>"
For i=0 to antal
    b = Split(a(i),": :")
    b0 = b(0)
    b1 = b(1)
    b2 = b(2)
    float = "left"
    if i=nr-1 then
        url1 = b1
        target = ""
        b0 = "<strong>"&b0&"</strong>"
    elseif b1 = "1" then
        if Ubound(sprog_urls) > 1 then sprogurl = "/"&sprog_urls(Session("sprogid"))
        url1 = sprogurl & url
        target = "_blank"
        float = "right"
    elseif b1 = "3" then
        float = "right"
    else
        url1 = b1
        target = ""
    end if
    logo1 = "<div style=""float:"&float&"; padding-top:2px;"">&nbsp;&nbsp;&nbsp;&nbsp;<a href="""&url1&""" target="""&target&"""><img src=""/admin/grafik/"&b2&""" border=""0"" /></a></div>"
    tekst1 = "<div style=""float:"&float&"; padding-top:4px;"">&nbsp;<a href="""&url1&""" target="""&target&""">"&b0&"</a>&nbsp;&nbsp;&nbsp;&nbsp;</div>"
    if b1 = "1" then
        Response.write tekst1 & logo1
    elseif b1 = "2" then
        Response.write b0
    elseif b1 = "3" then
        Response.write tekst1
    elseif b1 = "4" then
        if b1_4_vist <> 1 then
            b1_4_vist = 1
            Response.write "<div style=""float:left; padding-top:4px; padding-left:10px""><img id=""gem_gif"" src=""/admin/grafik/loading-bar.gif"" style=""display:none;  padding-top:5px""><span id=""gem_tekst"" style=""font-weight:bold; display:"
            if nn("gem")=1 then
                Response.write "block"
            else
                Response.write "none"
            end if
            Response.write """>Der er nu gemt!</span></div>"
            if nn("gem")=1 then Response.write "<script language=""javascript"">setTimeout(""document.getElementById('gem_tekst').style.display='none'"", 6000)</script>"
        end if
    else
        Response.write logo1 & tekst1 & pling
    end if
Next
Response.write "<div style=""clear:both;""></div>"
End Sub


''''''''''''////////////////////////////////////

Men lige nu prøver jeg at skrive den om til PHP:


''''''''''''////////////////////////////////////
$b1_4_vist = 0;
function udskrivmenu($indput,$nr) {
    $a = split("; ;",$indput);
    $antal = count($a);
    $pling = "<div style=float:left; padding:5px 0px; background-image:url(/admin/grafik/menu2.jpg); background-repeat:no-repeat; background-position:bottom;>&nbsp;</div>";
    $i = 0;
    while ($i < $antal) {
        $b = split(": :",$a($i));
        $b0 = $b[0];
        $b1 = $b[1];
        $b2 = $b[2];
        $float = 'lef';
        if ($i=$nr-1) {
            $url1 = $b1;
            $target = '';
            $b0 = '<strong>".b0."</strong>';
        }elseif ($b1 = '1') {
            if (count($sprog_urls) > 1) {
                //$sprogurl = "/".sprog_urls(Session("sprogid"))
                //url1 = sprogurl & url
                $target = '_blank';
            }
            $float = 'right';
        }elseif ($b1 = "3") {
            $float = 'right';
       
        }else{
            $url1 = $b1;
            $target = '';
        }
        $logo1 = '<div style=float:$float.; padding-top:2px;>&nbsp;&nbsp;&nbsp;&nbsp;<a href=$url1 target=$target><img src=/admin/grafik/$b2 border=0 /></a></div>';
        $tekst1 = '<div style=float:$float; padding-top:4px;>&nbsp;<a href=$url1 target=$target>$b0</a>&nbsp;&nbsp;&nbsp;&nbsp;</div>';
        if ($b1 = '1') {
            echo $tekst1 . $logo1;
        }elseif ($b1 = '2') {
            echo $b0;
        }elseif ($b1 = '3') {
            echo $tekst1;
        }elseif ($b1 = '4') {
            if ($b1_4_vist <> '1') {
                $b1_4_vist = '1';
                echo "<div style=float:left; padding-top:4px; padding-left:10px><img id=gem_gif src=/admin/grafik/loading-bar.gif style=display:none;  padding-top:5px><span id=gem_tekst style=font-weight:bold; display:";
                if ($_REQUEST['gem']='1') {
                    echo 'block';
                }else{
                    echo 'none';
                }
                echo '>Der er nu gemt!</span></div>';
                if ($_REQUEST['gem']='1') {
                    echo '<script language=javascript>setTimeout(document.getElementById("gem_tekst").style.display=none, 6000)</script>';
                }
            }
        }else{
            echo $logo1 . $tekst1 . $pling;
        }
    }
    echo '<div style=clear:both;></div>';
}

''''''''''''////////////////////////////////////


Det der sker lige nu, er at jeg får denne fejlbesked:

Fatal error: Function name must be a string in, som er her:

$b = split(": :",$a($i));

Er der nogen der kan guide mig igennem denne omskrivning?
Avatar billede jansangill Nybegynder
13. september 2008 - 14:24 #1
wups glemte lige at sige, at dette her er det der bliver proppet ind i den:

$tilmenu = "Sideindhold: :index.php?sideid=".$sideID.": :sideopsatning.gif";
$tilmenu = $tilmenu . "; ;" . "Sideopsætning: :ret_side.asp?sideid=".$sideID."&sprogid=".$_SESSION["sprogid"].": :indstillinger.gif";
$tilmenu = $tilmenu . "; ;" . "Nyt afsnit: :ret_afsnit.asp?sideid=".$sideID.": :nytafsnit.gif";
$tilmenu = $tilmenu . "; ;" . "Vis side: :1: :vis_side.gif";
Avatar billede jakobdo Ekspert
13. september 2008 - 14:24 #2
Jeg tror du skal rette til: $a[$i]
Avatar billede jansangill Nybegynder
13. september 2008 - 14:39 #3
Ja, dumt af mig.

Problemet ligger nu bare i at funktionen looper i det uendelige,
men echo $antal;

=

4

Så den burde vel bare køre loopen igennem 4

SÅ så jeg at jeg havde glemt at tælle $i op.

Men desværre synes $i ikke at tælle op. Et eller andet må gå gruelig galt med loopen.

Her er den rettede funktion:

$b1_4_vist = 0;
function udskrivmenu($indput,$nr) {
    $a = split("; ;",$indput);
    $antal = count($a);

    $pling = "<div style=float:left; padding:5px 0px; background-image:url(/admin/grafik/menu2.jpg); background-repeat:no-repeat; background-position:bottom;>&nbsp;</div>";
    $i = 0;
    while ($i < $antal) {
        $i++;
        echo $i;
        $b = split(": :",$a[$i]);
        $b0 = $b[0];
        $b1 = $b[1];
        $b2 = $b[2];
        $float = 'left';
        if ($i=$nr-1) {
            $url1 = $b1;
            $target = '';
            $b0 = '<strong>'.$b0.'</strong>';
        }elseif ($b1 = '1') {
            if (count($sprog_urls) > 1) {
                //$sprogurl = "/".sprog_urls(Session("sprogid"))
                //url1 = sprogurl & url
                $target = '_blank';
            }
            $float = 'right';
        }elseif ($b1 = "3") {
            $float = 'right';
       
        }else{
            $url1 = $b1;
            $target = '';
        }
        $logo1 = '<div style=float:$float.; padding-top:2px;>&nbsp;&nbsp;&nbsp;&nbsp;<a href=$url1 target=$target><img src=/admin/grafik/$b2 border=0 /></a></div>';
        $tekst1 = '<div style=float:$float; padding-top:4px;>&nbsp;<a href=$url1 target=$target>'.$b0.'</a>&nbsp;&nbsp;&nbsp;&nbsp;</div>';
        if ($b1 = '1') {
            echo $tekst1 . $logo1;
        }elseif ($b1 = '2') {
            echo $b0;
        }elseif ($b1 = '3') {
            echo $tekst1;
        }elseif ($b1 = '4') {
            if ($b1_4_vist <> '1') {
                $b1_4_vist = '1';
                echo "<div style=float:left; padding-top:4px; padding-left:10px><img id=gem_gif src=/admin/grafik/loading-bar.gif style=display:none;  padding-top:5px><span id=gem_tekst style=font-weight:bold; display:";
                if ($_REQUEST['gem']='1') {
                    echo 'block';
                }else{
                    echo 'none';
                }
                echo '>Der er nu gemt!</span></div>';
                if ($_REQUEST['gem']='1') {
                    echo '<script language=javascript>setTimeout(document.getElementById("gem_tekst").style.display=none, 6000)</script>';
                }
            }
        }else{
            echo $logo1 . $tekst1 . $pling;
        }
    }
    echo '<div style=clear:both;></div>';
}
Avatar billede jakobdo Ekspert
13. september 2008 - 14:41 #4
Prøv i stedet for:

while ($i < $antal) {

at lav:

for($i = 0; $i < $antal; $i++){
//din kode som tidligere var inde i while($i < $antal)
}
Avatar billede jansangill Nybegynder
13. september 2008 - 14:45 #5
okay, det der sker nu er at ved dette indput:

$tilmenu = "Sideindhold: :index.php?sideid=".$sideID.": :sideopsatning.gif";
$tilmenu = $tilmenu . "; ;" . "Sideopsætning: :ret_side.asp?sideid=".$sideID."&sprogid=".$_SESSION["sprogid"].": :indstillinger.gif";
$tilmenu = $tilmenu . "; ;" . "Nyt afsnit: :ret_afsnit.asp?sideid=".$sideID.": :nytafsnit.gif";
$tilmenu = $tilmenu . "; ;" . "Vis side: :1: :vis_side.gif";
udskrivmenu($tilmenu,1);

Så bliver den første linie udskrevet en gang, men den anden linie bliver udskrevet uendeligt ser det ud til..


Altså sideindhold kommer en gang, sideopsætning forstsætter.
Avatar billede jakobdo Ekspert
13. september 2008 - 14:52 #6
Jeg tror du må i gang med at udskrive dine variabler ned i gennem koden, og så se om du kan gennemskue hvor koden fejler.
Avatar billede jansangill Nybegynder
13. september 2008 - 14:53 #7
yeps er allerede begyndt.

if ($i=$nr-1) {
           
}elseif ($b1 = '1') {
           
}


Det er her den fejler.

Hvis jeg skriver dette går det fint:

if ($u=$nr-1) {
           
}elseif ($b1 = '1') {
           
}

SÅ jeg må åben bar ikke skrive den første sætning. Har du en ide om hvorfor?
Avatar billede jakobdo Ekspert
13. september 2008 - 14:56 #8
Jeg tror jeg fandt fejlen...
if ($i=$nr-1) {
Skal være:
if ($i==$nr-1) {
Avatar billede jansangill Nybegynder
13. september 2008 - 14:59 #9
Så sandt så sandt.

Jeg er blevet for vandt til ASP syntaks, glmete fuldstændign at det skal være dobbelt ==.

Mange tak for hjælpen - flinkt af dig

Smid du et svar.
Avatar billede jakobdo Ekspert
13. september 2008 - 15:04 #10
Svar!
Avatar billede jakobdo Ekspert
13. september 2008 - 15:06 #11
Takker for point.
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