Avatar billede secusr Nybegynder
12. oktober 2005 - 10:28 Der er 24 kommentarer og
1 løsning

fejl i kode

Hej

Jeg er forholdsvis ny i PHP og er stødt ind i lidt problemer med min gæstebog. Min kode ser således ud:

<html>
<head><title>Gæstebog</title>
</head>
<body>

<font face=verdana size=2px>
<center>

<?php

//variabler til databasehosten
$host = "localhost";
$db = "database";
$username  = "bruger";
$password = "kode";
$table = "gæstebog";
$dt = date("j/n - Y");

    //tilslutter til database hosten
    $conn = mysql_connect($host, $username, $password) or die("Kunne ikke finde hosten");
    $database = mysql_select_db($db);
    $query = "SELECT * FROM " . $table . "";
    $result = mysql_query($query);
   
        //Viser indlæg i gæstebogen
        while($row = mysql_fetch_array($result))
        {
            echo "<br>
                  Skrevet af <b><a href=mailto:" . $row[email] . ">" . $row[navn] . "</a></b> " . $row[dato] . "<br><i>"
                  . $row[kommentar] . "</i><br><hr size=4 width=260><br>";
        }

        mysql_close($conn);


    //Variabler til tabellen
    $dato = $dt;
    $navn = $_POST['navn'];
    $kommentar = $_POST['kommentar'];
    $email = $_POST['email'];
   


    $query="INSERT INTO " . $table . " (navn,kommentar,dato,email) values
        ('" . htmlspecialchars($navn) . "','" . htmlspecialchars($kommentar) . "','" . htmlspecialchars($dato) . "','" . htmlspecialchars($email) . "')";
?>
</body>
</html>

</html>

<center>

    <form action=/test/php/gæstebog/tilføjbesked.php method=post>
    Navn: <input type=text name=navn><br>
    Email: <input type=text name=email><br>
    <textarea name=kommentar rows="6" cols="21"></textarea><br>
    <input type=submit value="Tilføj" class="submit">
    </form>

</center>


</body>
</html>

<?php

        if($_POST['navn'] != "" && $_POST['kommentar'] != "")
        {
            mysql_query($query);
        }
        else {
            echo "<h2>Du skrev ikke noget navn, eller nogen kommentar!!</h2>";
        }
       
        //mysql_close($conn);
    ?>

<META HTTP-EQUIV="Refresh" CONTENT="1;URL=/test/?show=/g%E6stebog/g%E6stebog">


gæstebogen opdatere sig selv, og kommer med echo "Du har ikke skrevet noget navn eller nogen kommentar" Jeg kan ikke finde ud af hvorfor siden opdatere sig selv, det er som om at den trykker på tilføj knappen selv?

Udover det så brokker den sig over at jeg lukker mySQL forbindelsen til sidst, det er derfor jeg har udkommenteret den.
Avatar billede jaw Nybegynder
12. oktober 2005 - 10:30 #1
Umiddelbart vil jeg tro, at det er her din opdatering af siden sker:
<META HTTP-EQUIV="Refresh" CONTENT="1;URL=/test/?show=/g%E6stebog/g%E6stebog">
Avatar billede jaw Nybegynder
12. oktober 2005 - 10:32 #2
Og grunden til at den piver over at du lukker databasen til sidst er, at du allerede har lukket den én gang ca. på linie 24. Derfor tror jeg også, at du vil få ballade med at få indsat dine data i databasen, da du ikke har nogen åben connection til din database.

Jeg vil derfor foreslå, at du fjerne den close på linie 24, og bruger den du nu har udkommenteret.
Avatar billede secusr Nybegynder
12. oktober 2005 - 10:32 #3
Den har jeg også prøvet at udkommentere uden held.
Avatar billede jaw Nybegynder
12. oktober 2005 - 10:36 #4
Du kan ikke udkommentere HTML med //, men det ved du måske? Så vidt jeg lige husker er det:
<!-- HTML-kode her -->

Men prøv at slette det, for det ér den linie der refresher din side hvert sekund.
Avatar billede secusr Nybegynder
12. oktober 2005 - 10:36 #5
NU har jeg lavet om på database lukningen, og udkommenteret den sidste af dem. Samt udkommenteret den sidste linje med refresh. Den opdatere stadigvæk med samme besked, men nu brokker den sig ikke over database linjen mere. Troede bare man skulle holde forbindelsen til databasen lukket hvis man ikke brugte den, også først åbne den i det øjeblik man trykker "tilføj" men så har jeg da også lært noget i dag:P

Men det virker stadigvæk ikke.
Avatar billede jaw Nybegynder
12. oktober 2005 - 10:38 #6
Det kunne du også sagtens gøre, men eftersom du bruger den til at udhente data og evt. indsætte data i samme kørsel, så kan jeg ikke se der skulle være nogen grund til at lukke forbindelsen imellemtiden.

Og hvis du vil lukke den, så skal du i hvert fald åbne en ny connection inden du bruger denne kodedel:
<?php

        if($_POST['navn'] != "" && $_POST['kommentar'] != "")
        {
            mysql_query($query);
        }
        else {
            echo "<h2>Du skrev ikke noget navn, eller nogen kommentar!!</h2>";
        }
       
        //mysql_close($conn);
    ?>
...ellers er der jo ingen forbindelse den kan udføre din $query på :)
Avatar billede secusr Nybegynder
12. oktober 2005 - 10:39 #7
viste jeg faktisk ikke:P nu har jeg fjernet den, og nu står beskeden med "du har ike indtastet..." bare der konstant. Jeg får nogle mySQL fejl når jeg prøver at skrive i gstebogen, prøver lige at se om jeg kan fange dem.
Avatar billede secusr Nybegynder
12. oktober 2005 - 10:40 #8
nej det er rigtig nok, jeg gør bare som du foreslog først. Er vildt overrasket oer så hurtigt det går med at få svar i PHP forummet i forhold til andre steder på siden;)
Avatar billede jaw Nybegynder
12. oktober 2005 - 10:42 #9
Det er klart, at du vil få "du har ikke indtastet..." hele tiden, da du jo som udgangspunkt før du udfylder forms'ene ikke har noget i $_POST['navn'] og $_POST['kommentar'].

Det kan du dog løse, ved f.eks. at gøre således:
if(isset($_POST['navn']) && isset($_POST['kommentar']))
{
  if($_POST['navn'] != "" && $_POST['kommentar'] != "")
  {
    mysql_query($query);
  }
  else
  {
    echo "<h2>Du skrev ikke noget navn, eller nogen kommentar!!</h2>";
  }
}

Og grunden til at vi svarer hurtigt her er jo nok, at vi ofte selv sidder og koder - eller måske har vi bare mindre liv i denne kategori end folk i de andre?! :)
Avatar billede secusr Nybegynder
12. oktober 2005 - 10:48 #10
nu er jeg da kommet lidt videre, men den vil ikke rigtig opdatere siden som den skal. Når jeg poster et indlæg kommer jeg til en ny side, kun med det kode, og gamle indlæg. Jeg skal så trykke F5 ogå kommer mit indlæg.

Jeg ville gerne have det sådan at det selv opdaterede når jeg trykkede tilføj.

Jeg klager ikke jeg synes kun det er lækkert at man kan få løst sine problemer hurtigt også komme videre.
Avatar billede secusr Nybegynder
12. oktober 2005 - 10:51 #11
det er måske lidt nemmere hvis du selv lige får et link til siden? http://www.mejborn.net/test/
Avatar billede jaw Nybegynder
12. oktober 2005 - 10:52 #12
Du kan prøve at rykke indsæt-koden (altså ca. det jeg skrev 10.42.44) op øverst i filen i stedet for i bunden. Logisk udskriver den jo de gamle indlæg før den indsætter dit nye, og derfor bliver det ikke vist før du opdaterer :)
Avatar billede secusr Nybegynder
12. oktober 2005 - 10:56 #13
Det virker ikke så tilføjer den slet ikke beskeden.
Avatar billede jaw Nybegynder
12. oktober 2005 - 10:58 #14
Du skal sørge for, at putte det efter din $conn-del, så forbindelsen er åben.
Avatar billede jaw Nybegynder
12. oktober 2005 - 10:58 #15
og så skal din $query med indsæt selvfølgelig følge med.
Avatar billede secusr Nybegynder
12. oktober 2005 - 11:00 #16
Har jeg også gjort:

<html>
<head><title>Mejborn.net - Gæstebog</title>
</head>
<body>

<font face=verdana size=2px>
<center>

<?php

//variabler til databasehosten
$host = "localhost";
$db = "usr_web102_1";
$username  = "web102";
$password = "uvps94r3";
$table = "gæstebog";
$dt = date("j/n - Y");

    //tilslutter til database hosten
    $conn = mysql_connect($host, $username, $password) or die("Kunne ikke finde hosten");
    $database = mysql_select_db($db);
    $query = "SELECT * FROM " . $table . "";
    $result = mysql_query($query);
   
        //Viser indlæg i gæstebogen
        while($row = mysql_fetch_array($result))
        {
            echo "<br>
                  Skrevet af <b><a href=mailto:" . $row[email] . ">" . $row[navn] . "</a></b> " . $row[dato] . "<br><i>"
                  . $row[kommentar] . "</i><br><hr size=4 width=260><br>";
        }

    //Variabler til tabellen
    $dato = $dt;
    $navn = $_POST['navn'];
    $kommentar = $_POST['kommentar'];
    $email = $_POST['email'];


        if(isset($_POST['navn']) && isset($_POST['kommentar']))
        {
          if($_POST['navn'] != "" && $_POST['kommentar'] != "")
          {
            mysql_query($query);
          }
          else
          {
            echo "<h2>Du skrev ikke noget navn, eller nogen kommentar!!</h2>";
          }
        }
       



    $query="INSERT INTO " . $table . " (navn,kommentar,dato,email) values
        ('" . htmlspecialchars($navn) . "','" . htmlspecialchars($kommentar) . "','" . htmlspecialchars($dato) . "','" . htmlspecialchars($email) . "')";
?>
</body>
</html>

</html>

<center>

    <form action=/test/php/gæstebog/gæstebog.php method=post>
    Navn: <input type=text name=navn><br>
    Email: <input type=text name=email><br>
    <textarea name=kommentar rows="6" cols="21"></textarea><br>
    <input type=submit value="Tilføj" class="submit">
    </form>

</center>


</body>
</html>

<?php

        mysql_close($conn);
       
?>
Avatar billede jaw Nybegynder
12. oktober 2005 - 11:06 #17
Prøv det her:

<html>
<head><title>Mejborn.net - Gæstebog</title>
</head>
<body>

<font face=verdana size=2px>
<center>

<?php

//variabler til databasehosten
$host = "localhost";
$db = "usr_web102_1";
$username  = "web102";
$password = "uvps94r3";
$table = "gæstebog";
$dt = date("j/n - Y");

    //tilslutter til database hosten
    $conn = mysql_connect($host, $username, $password) or die("Kunne ikke finde hosten");
    $database = mysql_select_db($db);

    //Variabler til tabellen
    $dato = $dt;
    $navn = $_POST['navn'];
    $kommentar = $_POST['kommentar'];
    $email = $_POST['email'];
    $query="INSERT INTO " . $table . " (navn,kommentar,dato,email) values
        ('" . htmlspecialchars($navn) . "','" . htmlspecialchars($kommentar) . "','" . htmlspecialchars($dato) . "','" . htmlspecialchars($email) . "')";

        if(isset($_POST['navn']) && isset($_POST['kommentar']))
        {
          if($_POST['navn'] != "" && $_POST['kommentar'] != "")
          {
            mysql_query($query);
          }
          else
          {
            echo "<h2>Du skrev ikke noget navn, eller nogen kommentar!!</h2>";
          }
        }


    $query = "SELECT * FROM " . $table . "";
    $result = mysql_query($query);
   
        //Viser indlæg i gæstebogen
        while($row = mysql_fetch_array($result))
        {
            echo "<br>
                  Skrevet af <b><a href=mailto:" . $row[email] . ">" . $row[navn] . "</a></b> " . $row[dato] . "<br><i>"
                  . $row[kommentar] . "</i><br><hr size=4 width=260><br>";
        }



?>
</body>
</html>

</html>

<center>

    <form action=/test/php/gæstebog/gæstebog.php method=post>
    Navn: <input type=text name=navn><br>
    Email: <input type=text name=email><br>
    <textarea name=kommentar rows="6" cols="21"></textarea><br>
    <input type=submit value="Tilføj" class="submit">
    </form>

</center>


</body>
</html>

<?php

        mysql_close($conn);
       
?>
Avatar billede secusr Nybegynder
12. oktober 2005 - 11:09 #18
Det virker i hvert fald, men ikke optimalt. Du kan se resultatet her: http://www.mejborn.net/test/?show=/g%E6stebog/g%E6stebog

Den opdaterer stadigvæk ikke i samme side, og nu ligger de nyeste indlæg nederst, det er dog ikke det støreste problem
Avatar billede jaw Nybegynder
12. oktober 2005 - 11:12 #19
Skift:
<form action=/test/php/gæstebog/gæstebog.php method=post>
til:
<form action="gæstebog.php" method="post">
Avatar billede secusr Nybegynder
12. oktober 2005 - 11:18 #20
Det virker ikke så opstår der en object not found. Min index fil "/test" og gæstebogsfilen ligger i /test/php/gæstebog/gæstebog.php
Avatar billede jaw Nybegynder
12. oktober 2005 - 11:20 #21
Nå ok, men da jeg prøvede den før, fik jeg også object not found.

<form action="./test/php/gæstebog/gæstebog.php" method="post">

Men har du overvejet, at gæstebog (med æ) måske ikke er det bedste navn?
Avatar billede secusr Nybegynder
12. oktober 2005 - 11:27 #22
ja har godt tænkt på det, og nu virker det da også efter en ændring, bortset fra at den viser guestbook.php for sig selv og ikke i index filen, hvis du er med?

Kan ikke lige huske hvordan det er at man ændre det?
Avatar billede secusr Nybegynder
12. oktober 2005 - 11:46 #23
har løst problemet, hvis du smider et svar så får du lige point
Avatar billede jaw Nybegynder
12. oktober 2005 - 12:03 #24
Bare i orden, hvad var galt?
Avatar billede secusr Nybegynder
12. oktober 2005 - 12:07 #25
I linjen:

<form action="/test/?show=/guestbook/guestbook" method="post">

havde jeg glemt "/?show=/"

Og nu sortere den også rigtigt efter dato.

Mange 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
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

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