Avatar billede mortenkn Nybegynder
11. marts 2003 - 17:30 Der er 6 kommentarer og
1 løsning

FEjl i kode?

Hejsa!

(se PHP-koden nedenfor)

Når der skrives i formen og trykkes send, sættes variablen $skriv til 1. Derefter kontrolleres om både navn og besked er udfyldt. Hvis ikke, kontrolleres de hver for sig, og feltet der ikke er udfyldt markeres som Udfyld venligst.
Nu kommer der en underlig fejl: Hvis man provokerer siden i Explorer, og trykker send flere gange, med kun et af felterne besked eller navn udfyldt, så holder siden til sidst op med at virke - man kommer hele tiden tilbage
til en tom form, og man kan blive ved med at trykke send uden at der sker noget. I Opera er der dog ingen problemer... Underligt, for PHP afvikles jo på
serveren!?

Håber nogen kan regne fejlen ud.

Vhils Morten

Og her er så koden til min gæstebog:


<?php
if ($skriv=='1') {

if (($besked)&&($navn)) {

$db = mysql_connect("minsql","minbruger","minkode");
mysql_select_db("mindatabase",$db);
$insertSQL = "insert into gbog (navn, email, dato, besked)
              values ('$navn', '$email', now(), '$besked')";
mysql_query($insertSQL);
echo '<p class="g1">$navn, du har indtastet:</p>';
echo '<p class="g2">E-mail: $email<br>Besked: $besked</p>';

} else {
?><form method=post action=<? echo $PHP_SELF; ?>><input type="hidden"
name="skriv" value="1"><?

if ($navn) {
?><p class="g1"><input type="text" name="navn" size=40 value="<? echo $navn;
?>"> Dit navn<br><?
} else {
?><p class="g1"><input type="text" name="navn" size=40> Dit navn (udfyld
venligst)<br><?
}
?><input type="text" name="email" size=40 value="<? echo $email; ?>"> Din
e-mail<br><?

if ($besked) {
?><textarea name="besked" rows=6 cols=50><? echo $besked; ?></textarea> Din
besked!!<br></p><?
} else {
?><textarea name="besked" rows=6 cols=50></textarea> Din besked (udfyld
venligst)<br></p><?
}
?>
<input type="submit">
<?

} } else {

?>
<form method="post" action=<? echo $PHP_SELF; ?>>
<p class="g1"><input type="hidden" name="skriv" value="1">
<input type="text" name="navn" size=40> Dit navn
<input type="text" name="email" size=40> Din e-mail
<textarea name="besked" rows=6 cols=50></textarea>
Din besked!</p>
<input type="submit"><?
}
?>
Avatar billede rippie Nybegynder
11. marts 2003 - 21:49 #1
Hmmm din kode er underlig.... du burde bruge de nye globale variabler samt rydde lidt op i koden *s*

noget du vil have hjælp til ? *s*
Avatar billede rippie Nybegynder
11. marts 2003 - 22:08 #2
Anyway koden er meget dårlig.. kun fordi jeg ikke lige har andet at lave jeg lige skriver den om for dig *s*
Avatar billede danisher Nybegynder
11. marts 2003 - 22:10 #3
Hello

Internet explorer kan nogen gange være lidt "langsom" til at opdatere. Jeg ved ikke helt hvad det skyldes, men det kunne være parseren der er stor, at det jo tager tid, når du belaster den så meget som du gør... :)

Jeg vil udmiddelbart ikke mene at det havde noget med din kode at gøre, selvom den eventuelt skulle være "dårlig", hvis der findes sådan noget... (Har ikke engang læst den igennem :))
Jeg kender selv problemet, da jeg nogen gange ved kodning af javascript, bliver nødsaget til at sætte en timeout på nogle ting, for at IE, kan nå at "opfange" hvad der sker...

Håber det var en smule svar på hvad der er galt...

Mvh
Avatar billede rippie Nybegynder
11. marts 2003 - 22:29 #4
Jeg har nu kodet lidt op for dig.. og benyttet mig af de nye globale variabler.

Jeg har ændret lidt i skidtet, men håber det går. som du kan se at hvis ikke navn og besked er skrevet så melder den fejl. og melder fejl med hvilken en af dem eller dem begge den er gal med, og så hvis der er fejl kan du jo lave et link tilbage, så de kan prøve igen... ellers så er den  ret lige til ikke *s*

her har du koden :)

<?

if (isset($_POST["skriv"])) {

    if($_POST["navn"] == "" || $_POST["besked"] == "") {

        if($_POST["navn"] == "") { echo "Du har ikke skrevet noget navn ...<br>"; }
        if($_POST["besked"] == "") { echo "Du har ikke skrevet nogle besked.<p>"; }

        echo "Fejl... Prøv igen ...";

    } else {

        $db = mysql_connect("minsql","minbruger","minkode");
        mysql_select_db("mindatabase",$db);

        $insertSQL = "insert into gbog (navn, email, dato, besked)  values ('".$_POST["navn"]."', '".$_POST["email"]."', now(), '".$_POST["besked"]."')";
        mysql_query($insertSQL);

        echo '<p class='g1'>".$_POST["navn"].", du har indtastet:</p>';
        echo '<p class='g2'>E-mail: ".$_POST["email"]."<br>Besked: ".$_POST["besked"]."</p>';

    }
   
} else {


echo "<form method='post' action='$PHP_SELF'>";
echo "<p class='g1'>";
echo "<input type='text' name='navn' size='40'> Dit navn<br>";
echo "<input type='text' name='email' size='40'> Din e-mail<br>";
echo "<textarea name='besked' rows='6' cols='50'></textarea><br>";
echo "Din besked!<p>";</p>
echo "<input type='submit' name='skriv' value='Skriv'>";

}

?>


Jeg håber du kan tyde koden, og håber du kan bruge den... du er velkommen til at fange mig på icq eller msn. #48061927 eller msn ronnie@lanworld.dk
Avatar billede mortenkn Nybegynder
11. marts 2003 - 23:18 #5
Tak for hjælpen! Indrømmet: Dette er mit første PHP script, så jeg er faktisk stolt over at det overhovedet virker ;)
Lige nu er jeg for træt til at gå koden igennem, men jeg kigger lige på det i morgen
Avatar billede rippie Nybegynder
12. marts 2003 - 16:08 #6
Det er ok :) håber du kan bruge det og acceptere mit svar....
Avatar billede mortenkn Nybegynder
12. marts 2003 - 22:07 #7
Jeg kunne ikke fange dig på ICQ, så spørger lige her: Når du siger globale variabler, mener du så eks. $_POST["navn"] ??
Når en form sendes gennem PHP, kan man så ikke bare bruge eks. variablen $navn, eller skal det være $_POST["navn"] ??
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