Avatar billede Six Nybegynder
24. august 2006 - 23:00 Der er 7 kommentarer og
1 løsning

PHP: resultat af funktion vises ikke på korrekt placering.

Hej eksperter! :D

Jeg har stirret mig blind og håber der er en der kan fortælle mig hvad jeg lige kan gøre.

Jeg har denne udskrift:
echo "<tr><td class=\"ordre_antal\">".$antal[$i]." X</td><td class=\"ordre_desc\">".stripslashes($info[$i]) . stegt(steak) . stegt(engelsk)."</td><td class=\"ordre_pris\">á ".$pris[$i].",-</td><td                             class=\"ordre_p_ialt\">Pris: ".$mellempris.",-</td></tr>";

Men når jeg bruger funktionen stegt() bliver resultatet af funktionen udskrevet før min tabel bliver lavet, dvs udskriften ser således ud:

Rød 1Medium 2Gennemstegt 3Rød 3Medium 2Gennemstegt 1<tr><td class="ordre_antal">1 X</td><td class="ordre_desc" border="1">Engelsk bøf (300 gr.) med brun sovs, bløde løg og agurkesalat.</td><td class="ordre_pris">á 94,-</td><td    

Og det er: Rød 1Medium 2Gennemstegt 3Rød 3Medium 2Gennemstegt 1<tr><td der skal ligges mærke til. Da det helst skulle ned og stå sammen med min $info[$i]...

Hvordan får jeg lige fikset det?
Avatar billede erikjacobsen Ekspert
24. august 2006 - 23:06 #1
Du skal ikke bruge print/echo i din funktion stegt, men sige return til den tekststreng, den laver.
Avatar billede erikjacobsen Ekspert
24. august 2006 - 23:10 #2
Og hvis du ikke gider det, så skal du ændre

echo "noget" . stegt(noget) . "mere";

til

echo "noget";  stegt(noget); echo "mere";
Avatar billede Six Nybegynder
24. august 2006 - 23:14 #3
function stegt($boef) {
    if(isset($_POST[$boef])) {
        $engelsk = $_POST[$boef];
        $i1 = 0;
        while($i1<=count($engelsk)-1){
            if ($engelsk[$i1] != "0") {
                if($i1 == 0) {
                    $tilstand = "Rød";
                } else if ($i1 == 1) {
                    $tilstand = "Medium";
                } else if ($i1 == 2) {
                    $tilstand = "Gennemstegt";
                };   
            echo $tilstand ." ". $engelsk[$i1];
            };
        $i1++;
        };
    };
};

Her er min funktion, hvordan skal den omskrives så jeg kan lave return? - der er jo et whileloop i den, hvilket ligesom gør at jeg ikke lige kan overskue hvordan den skal returne noget, for der er jo ikke noget at returnere når whileloopet er kørt?
Avatar billede Six Nybegynder
24. august 2006 - 23:16 #4
Og retter jeg det til:
echo $tilstand; echo " "; echo $engelsk[$i1];

så er resultatet det samme som før, med at den skriver det uden for min <tr>
Avatar billede erikjacobsen Ekspert
24. august 2006 - 23:20 #5
Vælger du løsning nummer 2, skal du beholde din funktion som den er, og ændre hvor du bruger den, sådan ca. som beskrevet.
Avatar billede Six Nybegynder
25. august 2006 - 00:45 #6
Jeg kom frem til denne version af funktionen, og fik flyttet mit while loop uden for funktionen:

function stegt2($boef, $z) {
    if(isset($boef)) {
        $engelsk = $_POST[$boef];
            if($z == 0) {
                $tilstand = "Rød";
            } else if ($z == 1) {
                $tilstand = "Medium";
            } else {
                $tilstand = "Gennemstegt";
            };
        if($engelsk[$z] !== "0") {
        return $tilstand . ": " .$engelsk[$z]." ";
        };
    } else {
        exit;
    };
};

Smider du et svar erikjabobsen ? :)
Avatar billede erikjacobsen Ekspert
25. august 2006 - 09:41 #7
Jeg samler slet ikke på point, tak.
Avatar billede Six Nybegynder
25. august 2006 - 11:57 #8
Det er i orden. :) - men du skal have mange gange tak for hjælpen.
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