Avatar billede maak Nybegynder
30. juni 2005 - 13:56 Der er 8 kommentarer

Lille script, første "store script" dur ik

Jeg har lavet et script, men det dur ikke, der kommer kun en hvid skærm, Det er mit første "store" php script som jeg selv har lavet, HEr er det:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>
<head>
    <title>Untitled</title>
</head>

<body>
<?
if($_POST[action] == "skriv") {

if($_POST[tal1] == "") {
echo("<font color=red><b>Fejl:</b></font><br>Du mangler at skrive dit navn!");

} else {

if($_POST[tal2] == "") {
echo("<font color=red><b>Fejl:</b></font><br>Du mangler at skrive din email!");

} else {

$tal1 = htmlspecialchars($_POST[tal1]);
$tal2 = htmlspecialchars($_POST[tal2]);
?>


<!-- formullarer -->

<form action="oevelse4.php" method="POST">

<input type="hidden" name="action" value="skriv">
<b>Dit første tal:</b><br>
<input type="text" name="tal1" style="border: 1px solid #000000" size="20"><br>
<b>Dit andet tal:</b><br>
<input type="text" name="tal2" style="border: 1px solid #000000" size="20"><br>
</form>

<input type="submit" name="submit" value="Skriv" style="border: 1px solid #000000; background-color: #FFFFFF">
<input type="reset" name="delete" value="Tøm felter" style="border: 1px solid #000000; background-color: #FFFFFF">
<!-- Formullarer slut -->

<?

if ($tal1 == $tal2) {
echo ("Dine tal er lige store!");
} elseif  ($tal1 > $tal2) {
echo ("Dit første tal er større end dit andet tal!");
} else {
echo ("Dit andet tal er større end dit første tal!");
}
}
}
}
?>

</body>
</html>
Avatar billede gil-galad Nybegynder
30. juni 2005 - 14:51 #1
hvad er det helt præcist det skal kunne?
Avatar billede gil-galad Nybegynder
30. juni 2005 - 14:55 #2
Jeg har rykket lidt rundt på det, samt sat din submit knap indenfor <form>'en:


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>
<head>
    <title>Untitled</title>
</head>

<body>


<!-- formullarer -->

<form action="oevelse4.php" method="post">

<input type="hidden" name="action" value="skriv">
<b>Dit første tal:</b><br>
<input type="text" name="tal1" style="border: 1px solid #000000" size="20"><br>
<b>Dit andet tal:</b><br>
<input type="text" name="tal2" style="border: 1px solid #000000" size="20"><br>
<input type="submit" name="submit" value="Skriv" style="border: 1px solid #000000; background-color: #FFFFFF">
<input type="reset" name="delete" value="Tøm felter" style="border: 1px solid #000000; background-color: #FFFFFF">

</form>
<!-- Formullarer slut -->


<?
if($_POST[action] == "skriv") {

    if($_POST[tal1] == "") {
        echo("<font color=red><b>Fejl:</b></font><br>Du mangler at skrive dit navn!");
    }
    else{
   
    if($_POST[tal2] == "") {
        echo("<font color=red><b>Fejl:</b></font><br>Du mangler at skrive din email!");
    }
    else{
   
    $tal1 = htmlspecialchars($_POST[tal1]);
    $tal2 = htmlspecialchars($_POST[tal2]);
   
    if ($tal1 == $tal2) {
    echo ("Dine tal er lige store!");
    }
    elseif  ($tal1 > $tal2) {
    echo ("Dit første tal er større end dit andet tal!");
    } else {
    echo ("Dit andet tal er større end dit første tal!");
    }

}
}
}
?>

</body>
</html>
Avatar billede maak Nybegynder
30. juni 2005 - 14:55 #3
sammenligne tal som skal indtastes af brugeren, jeg har fixet det og har lavet det om til en lommeregner :) www.granny.frac.dk/oevelse4.php
Avatar billede gil-galad Nybegynder
30. juni 2005 - 14:58 #4
ok, men ovenstående virker også :-)
Avatar billede serge Nybegynder
30. juni 2005 - 15:04 #5
OK, flere ting:

1. Når du bruge tekst-strenge som array-index, så husk at sætte anførselstegn omkring:

if($_POST['action'] == 'skriv') {

ikke:

if($_POST[action] == 'skriv') {

- det virker i PHP 4 og nedefter, men PHP 5 har droppet den gamle skrivemåde (fordi der reelt bør være tale om en konstant, hvis der ikke er anførselstegn omkring).

2. Langt vigtigere: Din form bliver kun sendt til browseren hvis:
  I. action == "skriv"
  II. tal1 er sat
  III. tal2 er sat

- husk jo, at uanset hvor du går ud af PHP og til ren HTML, så bliver HTML kun vist hvis PHP rent faktisk når til dét punkt. Det sted du går ud af PHP ligger inde i dine if-statements (samme sted som hvor du beregner svaret). Derfor bliver intet vist, andet end en tom side.

3. Et andet råd... fordi du lige er startet, og det er en god idé at få gode vaner fra starten ;)

Prøv at vænne dig til kun at bruge dobbelt anførselstegn, når der er variable eller escape-strenge (f.eks. "\n") i din streng. Til alle andre bør du bruge enkelt anførselstegn: (f.eks. 'action' i stedet for "action"). Begge dele virker, men PHP bruger tid på at læse igennem dine strenge for at tjekke for variable osv., hvis de er i dobbelt anførselstegn. Masser af erfarne PHP-programmører (og "eksperter") glemmer det også (eller ved det ikke), men det kan faktisk have en pæn virkning på hastigheden når du skriver større scripts, så det er en god vane at komme ind i.
Avatar billede serge Nybegynder
30. juni 2005 - 15:05 #6
For langsom dér ;) Altid sjovere, når man løser det selv ;)
Avatar billede maak Nybegynder
30. juni 2005 - 15:27 #7
Tak for de gode råd :D
Avatar billede gil-galad Nybegynder
16. august 2005 - 18:19 #8
men smider et svar!
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