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;""> </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;""> <a href="""&url1&""" target="""&target&"""><img src=""/admin/grafik/"&b2&""" border=""0"" /></a></div>" tekst1 = "<div style=""float:"&float&"; padding-top:4px;""> <a href="""&url1&""" target="""&target&""">"&b0&"</a> </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;> </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;> <a href=$url1 target=$target><img src=/admin/grafik/$b2 border=0 /></a></div>'; $tekst1 = '<div style=float:$float; padding-top:4px;> <a href=$url1 target=$target>$b0</a> </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?
Annonceindlæg fra Conscia
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";
13. september 2008 - 14:24
#2
Jeg tror du skal rette til: $a[$i]
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;> </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;> <a href=$url1 target=$target><img src=/admin/grafik/$b2 border=0 /></a></div>'; $tekst1 = '<div style=float:$float; padding-top:4px;> <a href=$url1 target=$target>'.$b0.'</a> </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>'; }
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) }
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.
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.
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?
13. september 2008 - 14:56
#8
Jeg tror jeg fandt fejlen... if ($i=$nr-1) { Skal være: if ($i==$nr-1) {
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.
13. september 2008 - 15:04
#10
Svar!
13. september 2008 - 15:06
#11
Takker for point.
Vi tilbyder markedets bedste kurser inden for webudvikling