Avatar billede totalpc Seniormester
17. marts 2015 - 15:23 Der er 5 kommentarer og
2 løsninger

Har fået ødelagt mit script

Jeg har haft dette script kørende i noget tid som har virket fint. Jeg er nok kommet til at pille i noget og nu virker det ikke mere. PHP er IKKE min stærke side. Fejlen er:

Parse error: syntax error, unexpected ‘$submit_value' (T_VARIABLE) in /var/www/altomtrolling.dk/public_html/wp-content/plugins/insert-php/insert_php.php(48) : eval()'d code on line 8


[insert_php]
function beregn($length){
$beregn = ((($length * $length) + 3) * 1.36 );
Return $beregn;
}

$submit_value = $_POST['action'];
if(!empty($submit_value) && $submit_value == 'post'):

$hk = $_POST['hk'];
$length = $_POST['length'];
if(isset($_POST['action']) ):
if ($length <= 15):

IF ($length <=4 and $hk <= 25.84):

echo '<b><span style="color: green;">Du skal ikke have et speedbådsbevis for at sejle denne kombination af båd '.$length.' meter &amp; motor '.$hk.' HK</span></b>
';
echo 'Da båden er 4 meter eller herunder og motorkraften er mindre end 25,84 er den ikke omfattet af lovgivningen omkring speedbådsbevis!';

else:
$res = beregn($length);
IF ($res &lt; $hk):
echo '<b><span style="color: red;">Du skal have et speedbådsbevis for at sejle denne kombination af båd '.$length.' meter &amp; motor '.$hk.' HK</span></b>
';

IF ($length &lt;=4 and $hk &lt;= 25.84):
echo '<b><span style="color: red;">Du skal under : 25,84 hk på denne båd hvis du vil undgå at skulle have speedbådsbevis!</span></b>';
else:
echo '<b><span style="color: red;">Du skal under : '.$res.' hk på denne båd hvis du vil undgå at skulle have speedbådsbevis!</span></b>';
Endif;

else:
echo '<b><span style="color: green;">Du skal ikke have et speedbådsbevis for at sejle denne kombination af båd ('.$length.' meter) &amp; motor ('.$hk.' HK)</span></b>';

IF ($length &lt;=4 and $hk &gt; 25.84):
echo '<b><span style="color: red;">Du skal under : '.$res.' hk på denne båd hvis du vil undgå at skulle have speedbådsbevis!</span></b>';
else:
echo '<b><span style="color: green;">Du skal over : '.$res.' hk på denne båd for at skulle have speedbådsbevis!</span></b>';
Endif;
Endif;
Endif;
Endif;

else:
echo '<b><span style="color: red;">Bådens længde skal være lig med eller under 15 meter!</span></b>';
Endif;
Endif;
[/insert_php]
Her kan du beregne om du skal bruge et speedbådsbevis for at føre din kombination af båd og motor.
<ul>
    <li>Speedbådsbeviset blev indført ved lov d. 1. juli 2002. Fra denne dato skal alle førere af en speedbåd kunne fremvise et sådan bevis, når man sejler i båden</li>
    <li>Speedbådsbevis omhandler KUN planende både og altså ikke en deplacement båd (damjolle osv)</li>
    <li>Hvis din båd er over 15 meter skal du ikke have et speedbådsbevis, men et Yacht Skipper bevis.</li>
    <li>Hvis din speedbåd er 4 meter eller herunder skal du have et speedbådsbevis hvis din motor er på 25,84 HK eller herover.</li>
    <li>Hvis du sejler i en båd der kræver bevis uden at have det, kan du højest få en bøde.</li>
    <li>Du kan IKKE tage et speedbådsbevis før du er fyldt 16 år.</li>
    <li>Du kan godt tage et duelighedsbevis selvom du er under 16 år, men må stadig IKKE sejle en båd der kræver speedbådsbevis!</li>
    <li>Formlen for at beregne om du skal have speedbådsbevis hedder: ((L^2)+3)*1,36 hvor L=båden længde i meter. Resultatet angiver maksimalt HK uden speedbådsbevis!</li>
</ul>
Herunder kan du test om du behøver et speedbådsbevis til en hvilken som helst kombination af båd og motor

<form action="" enctype="multipart/form-data" method="post">Bådens længde i meter:
<input name="length" type="text" value="" />
Antal HK:
<input name="hk" type="text" value="" />
<button name="action" type="submit" value="post">Beregn</button></form>&nbsp;
Avatar billede moddi100 Seniormester
17. marts 2015 - 16:19 #1
Ændre alle forekomster af:

&amp;  ændres til  &
&lt;  ændres til  <
&gt;  ændres til  >
Avatar billede olsensweb.dk Ekspert
17. marts 2015 - 16:50 #2
@moddi100
det ligner brugeren han anvendt BB tagget "code", hvilke aldrig har virket her på E,

@totalpc
jeg undre mig over at return er med stort R, og en del IF, og Elser

jeg ville nok pakke min $submit_value = $_POST['action']; ind i en isset som skrevet i http://www.eksperten.dk/spm/1001402 #1
(utested)

<?php
function beregn($length) {
    $beregn = ((($length * $length) + 3) * 1.36 );
    return $beregn;
}

$submit_value = isset($_POST['action'])? $_POST['action'] : "";
if (!empty($submit_value) && $submit_value == 'post'): $hk = $_POST['hk'];
    $length = $_POST['length'];
    if (isset($_POST['action'])): if ($length <= 15): if ($length <= 4 and $hk <= 25.84): echo 'Du skal ikke have et speedbådsbevis for at sejle denne kombination af båd ' . $length . ' meter & motor ' . $hk . ' HK ';
                echo 'Da båden er 4 meter eller herunder og motorkraften er mindre end 25,84 er den ikke omfattet af lovgivningen omkring speedbådsbevis!';
            else: $res = beregn($length);
                if ($res < $hk): echo 'Du skal have et speedbådsbevis for at sejle denne kombination af båd ' . $length . ' meter & motor ' . $hk . ' HK ';
                    if ($length <= 4 and $hk <= 25.84): echo 'Du skal under : 25,84 hk på denne båd hvis du vil undgå at skulle have speedbådsbevis!';
                    else: echo 'Du skal under : ' . $res . ' hk på denne båd hvis du vil undgå at skulle have speedbådsbevis!';
                    endif;
                else: echo 'Du skal ikke have et speedbådsbevis for at sejle denne kombination af båd (' . $length . ' meter) & motor (' . $hk . ' HK)';
                    if ($length <= 4 and $hk > 25.84): echo 'Du skal under : ' . $res . ' hk på denne båd hvis du vil undgå at skulle have speedbådsbevis!';
                    else: echo 'Du skal over : ' . $res . ' hk på denne båd for at skulle have speedbådsbevis!';
                    endif;
                endif;
            endif;
        endif;
    else: echo 'Bådens længde skal være lig med eller under 15 meter!';
    endif;
endif;
?>
Avatar billede moddi100 Seniormester
17. marts 2015 - 17:29 #3
@ronols: Jeg mistænker ham nu stadigvæk for at have kopieret det direkte ind. Og efter fejlen at dømme, skyldes problemet at det hele har været indsat på en side i Wordpress igennem editoren, der netop har fjernet alle html-tags som angivet før. Koden som den var før, fejler i princippet intet udover disse tegn.

At det så ikke nødvendigvis er den mest optimale kode, ja det er så en anden sag. Du kunne med fordel også fjerne et par if-sætninger i ovenstående såsom empty() og isset() som kaldes dobbelt, men det er dog småting i forhold til det oprindelige indlæg.
Avatar billede totalpc Seniormester
17. marts 2015 - 18:08 #4
@moddi100 > Du har helt ret. Det har aldrig været et problem før, men nu ændrer den åbenbart de tags hver gang jeg roder med den wordpress side. Det virker igen, tak.
Jeg vil da meget gerne have vist hvordan jeg kan optimere koden hvis du har lyst.

@Ronols > Du har også ret og jeg kiggede også dengang (i det andet spørgsmål) på dit forslag og fik det vist også til at virke, men valgte den anden løsning. Jeg er IKKE god til PHP, men stik mig noget powershell :)

Smid nogle svar
Avatar billede moddi100 Seniormester
17. marts 2015 - 18:28 #5
Løsningen på at dine tags ændres er, at du skal indsætte koden i HTML-mode / code-view eller hvad det ellers hedder. Indsætter du det som almindelig tekst, opfatter den det som tekst, og ændrer i din kode.

Mit bud på koden, hvor jeg har tilladt mig at tage udgangspunkt i ronols kode, men har tilføjet tuborgklammer { } for at øge læsevenligheden. Principperne er ellers det samme.

<?php
function beregn($length) {
    $beregn = ((($length * $length) + 3) * 1.36 );
    return $beregn;
}

function get_float($key)
{
    if(!isset($_POST[$key]))
        return NULL;

    // Vi sikre os, at der er tale om et (komma)tal
    return (float)str_replace(',','.',$_POST[$key]);
}

$submit_value = isset($_POST['action']) ? $_POST['action'] : "";
if ($submit_value == 'post')
{
    $hk = get_float('hk');
    $length = get_float('length');
    if ($length <= 15)
    {
        if ($length <= 4 and $hk <= 25.84)
        {
            echo 'Du skal ikke have et speedbådsbevis for at sejle denne kombination af båd ' . $length . ' meter & motor ' . $hk . ' HK ';
            echo 'Da båden er 4 meter eller herunder og motorkraften er mindre end 25,84 er den ikke omfattet af lovgivningen omkring speedbådsbevis!';
        } else {
            $res = beregn($length);
            if ($res < $hk)
            {
                echo 'Du skal have et speedbådsbevis for at sejle denne kombination af båd ' . $length . ' meter & motor ' . $hk . ' HK ';
                if ($length <= 4 and $hk <= 25.84)
                {
                    echo 'Du skal under : 25,84 hk på denne båd hvis du vil undgå at skulle have speedbådsbevis!';
                } else {
                    echo 'Du skal under : ' . $res . ' hk på denne båd hvis du vil undgå at skulle have speedbådsbevis!';
                }
            } else {
                echo 'Du skal ikke have et speedbådsbevis for at sejle denne kombination af båd (' . $length . ' meter) & motor (' . $hk . ' HK)';
                if ($length <= 4 and $hk > 25.84)
                {
                    echo 'Du skal under : ' . $res . ' hk på denne båd hvis du vil undgå at skulle have speedbådsbevis!';
                } else {
                    echo 'Du skal over : ' . $res . ' hk på denne båd for at skulle have speedbådsbevis!';
                }
            }
        }
    } else {
        echo 'Bådens længde skal være lig med eller under 15 meter!';
    }
}
?>
Avatar billede moddi100 Seniormester
17. marts 2015 - 18:28 #6
og så et svar, som du bad om
Avatar billede olsensweb.dk Ekspert
17. marts 2015 - 19:03 #7
og et svar herfra
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