Avatar billede Slettet bruger
22. november 2005 - 21:30 Der er 36 kommentarer og
1 løsning

Blank side ved indhentning af data fra db

Hej eksperter!
Her har jeg en kode, der af en eller anden grund bare retunerer en blank skærm... Hvorfor?

Indholdet af 'index.php':
<?php

    mysql_connect("localhost", "2ke", "sniper") or die(mysql_error());
    mysql_query("INSERT INTO messages(from, subject, text, day, month, year, hour, minute, second) values('USER', 'SUBJECT', 'CONTENT', '01', '23', '4567', '01', '23', '45')");
    mysql_select_db("forum") or die(mysql_error());

    print "<title>Forum</title>";

    $load = mysql_query("SELECT * FROM messages") or die(mysql_error());

    while ($array = mysql_fetch_array($load)) {
        print "
            <br><br>"
            .$array["from"].
            " <b>"
            .$array["subject"].
            "</b> - "
            .$array["date"].
            "/"
            .$array["month"].
            " "
            .$array["year"].
            " ("
            .$array["hour"].
            " "
            .$array["minute"].
            ":"
            .$array["second"].
            ")<br>"
            .$array["text"].
            "
        ";
    }

?>
Avatar billede mjl Nybegynder
22. november 2005 - 21:32 #1
Dit password m.v. burde ikke stå her på siden!
Avatar billede Slettet bruger
22. november 2005 - 21:36 #2
Siden er ikke publiseret på nettet; jeg bruger EasyPHP, så filerne ligger kun på min maskine...
Avatar billede mjl Nybegynder
22. november 2005 - 21:36 #3
Okay...

Indeholder DB'en noget?
Avatar billede showsource Seniormester
22. november 2005 - 21:37 #4
if(mysql_num_rows($load) == 0) {
echo"Ingen rows fundet!";
exit;
}
Avatar billede showsource Seniormester
22. november 2005 - 21:38 #5
Og så out en or die mysql_error() på din insert
Avatar billede showsource Seniormester
22. november 2005 - 21:38 #6
Nåh, så put
Avatar billede Slettet bruger
22. november 2005 - 21:39 #7
Haha... Du har ret; 'Ingen rows fundet!'!
Avatar billede mjl Nybegynder
22. november 2005 - 21:39 #8
Hvid DB'en er tom, vil din side jo også være blank!
Avatar billede Slettet bruger
22. november 2005 - 21:39 #9
Men hvorfor mon ikke...?
Avatar billede Slettet bruger
22. november 2005 - 21:40 #10
Men... Jeg sætter jo noget ind i starten?!
Avatar billede Slettet bruger
22. november 2005 - 21:41 #11
Oh... Og så lige en ting til: Hvorfor 'exit;'?
Avatar billede mjl Nybegynder
22. november 2005 - 21:41 #12
Du skal være 100% sikker på at du har stavet rigtigt - både "messages" og alle "from, subject, text, day, month, year, hour, minute, second"
Avatar billede Slettet bruger
22. november 2005 - 21:42 #13
k
Avatar billede showsource Seniormester
22. november 2005 - 21:43 #14
exit var blot for testens skyld.

Men flyt din
mysql_select_db("forum") or die(mysql_error());
op foran din insert
Avatar billede Slettet bruger
22. november 2005 - 21:53 #15
Heee... Nogle steder havde jeg skrevet 'day' i stedet for 'date' (f.eks. i MySQL!)...
Det er rettet nu, og den kan da også fint vise det den skal, men den kan stadig ikke indsætte dataen i db'en...
Avatar billede Slettet bruger
22. november 2005 - 21:54 #16
Har i et forslag...?
Avatar billede mjl Nybegynder
22. november 2005 - 21:56 #17
Har du ændret day til date ? så husk det samme i din "INSERT INTO messages(from, subject, text, day, month, year............"
Avatar billede showsource Seniormester
22. november 2005 - 21:57 #18
Brug ` omkring feltnavne, så er du sikekr på IKKE at "konflikte" med reservede ord

<html><head><title>Forum</title></head>
<body>

<?php

    mysql_connect("localhost", "2ke", "sniper") or die(mysql_error());
    mysql_select_db("forum") or die(mysql_error());
    mysql_query("INSERT INTO messages(`from`, `subject`, `text`, `day`, `month`, `year`, `hour`, `minute`, `second`) values('USER', 'SUBJECT', 'CONTENT', 01, 23, 4567, 01, 23, 45)") or die (mysql_error());

    print "<title>Forum</title>";

    $load = mysql_query("SELECT * FROM messages") or die(mysql_error());

if(mysql_num_rows($load) !=0) {

    while ($array = mysql_fetch_array($load)) {
        print "
            <br><br>"
            .$array["from"].
            " <b>"
            .$array["subject"].
            "</b> - "
            .$array["date"].
            "/"
            .$array["month"].
            " "
            .$array["year"].
            " ("
            .$array["hour"].
            " "
            .$array["minute"].
            ":"
            .$array["second"].
            ")<br>"
            .$array["text"].
            "
        ";
    }

}else{
echo"Ingen rows fundet i DB!";
}

mysql_free_result($load);

?>
</body></html>
Avatar billede showsource Seniormester
22. november 2005 - 21:58 #19
Og hvis du alligevel ønsker at indsætte tidspunkt, så lav et felt i DB'en som er "datetime" og brug NOW() ved insert
Avatar billede Slettet bruger
22. november 2005 - 22:23 #20
datetime?! Hvordan præcist indsætter jeg f.eks. minutter?
Avatar billede Slettet bruger
22. november 2005 - 22:23 #21
OBS: Det virker stadig ikke...
Avatar billede Slettet bruger
22. november 2005 - 22:24 #22
Her er min testkode:

<?php

    $from = "from";
    $subject = "subject";
    $text = "text";
    $date = date(d);
    $month = date(m);
    $year = date(Y);
    $hour = "hour";
    $minute = "min";
    $second = "sec";

    mysql_connect("localhost", "2ke", "sniper") or die(mysql_error());
    mysql_select_db("forum") or die(mysql_error());
    mysql_query("INSERT INTO messages('from', 'subject', 'text', 'date', 'month', 'year', 'hour', 'minute', 'second') values('$from', '$subject', '$text', '$date', '$month', '$year', '$hour', '$minute', '$second')");

    print "<title>Forum</title>";

    $load = mysql_query("SELECT * FROM messages") or die(mysql_error());

    if(mysql_num_rows($load) == 0) {
        print "Ingen data fundet.";
    } else {
        while ($array = mysql_fetch_array($load)) {
            print "
                <br><br><u>"
                .$array["from"].
                ": <b>"
                .$array["subject"].
                "</b> - "
                .$array["date"].
                "/"
                .$array["month"].
                " "
                .$array["year"].
                " ("
                .$array["hour"].
                ":"
                .$array["minute"].
                ":"
                .$array["second"].
                ")</u><br>"
                .$array["text"].
                "
            ";
        }
    }

?>
Avatar billede showsource Seniormester
23. november 2005 - 13:33 #23
Prøv nu at smide or die (mysql_error()) på din insert!

Og så ved jeg ikke om det evt. kan gi' probs i din echo når du smider punktum på næste linie?
Avatar billede Slettet bruger
25. november 2005 - 18:07 #24
Med mysql_error retunerer den:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'from, subject, text, date, month, year, hour, minute, second) va
Avatar billede showsource Seniormester
25. november 2005 - 18:17 #25
Som sagt, brug ` omkring mysqlnavne, og IKKE ' som du gør her:

mysql_query("INSERT INTO messages('from', 'subject', 'text', 'date', 'month', 'year', 'hour', 'minute', 'second') values('$from', '$subject', '$text', '$date', '$month', '$year', '$hour', '$minute', '$second')");

det rigtige er så:

mysql_query("INSERT INTO messages(`from`, `subject`, `text`, `date`, `month`, `year`, `hour`, `minute`, `second`) VALUES ('$from', '$subject', '$text', '$date', '$month', '$year', '$hour', '$minute', '$second')");

endvidere, så brug gerne ". $var ." når det er en php variabel, altså:

mysql_query("INSERT INTO messages(`from`, `subject`, `text`, `date`, `month`, `year`, `hour`, `minute`, `second`) VALUES ('".$from ."', '". $subject ."', '". $text ."', '". $date ."', '". $month ."', '". $year ."', '". $hour ."', '". $minute ."', '". $second ."')");

endvidere mere, hvis det er et tal du vil insert, skal der ikke bruges ' omend det virker. Men for også at sikre det er et tal, kan bruges intval()

Og har du noget som tjekker der ikke laves ged i den, altså sørger for at escape tegn som ' og "?
Avatar billede Slettet bruger
26. november 2005 - 08:24 #26
Ok... Men når du laver `... bruger du så bare en accant egu? (eller hvorden f**k det franske gejl nu staves...)
Avatar billede Slettet bruger
27. november 2005 - 08:12 #27
Nu ser min kode såden ud:
(Jeg ved, det ikke er nødvendigt ned de der ` du har skrevet, jeg skal bruge...
Jeg har lavet mange PHP-sider uden.)

<?php

    // Hent variabler:
    $from = "from";
    $subject = "subject";
    $text = "text";
    $date = date("d");
    $month = date("m");
    $year = date("Y");
    $hour = "hour";
    $minute = "min";
    $second = "sec";

    // Skab forbindelse:
    mysql_connect("localhost", "2ke", "sniper") or die(mysql_error());
    // Opret database og tabel:
    mysql_query("DREATE DATABASE messages");
    mysql_select_db("forum") or die(mysql_error());
    mysql_query("CREATE TABLE messages (
        from        varchar(50),
        subject        varchar(50),
        text        varchar(50),
        date        varchar(50),
        month        varchar(50),
        year        varchar(50),
        hour        varchar(50),
        minute        varchar(50),
        second        varchar(50),
    )");
    // Indsæt data:
    mysql_query("INSERT INTO messages(from, subject, text, date, month, year, hour, minute, second) values('$from', '$subject', '$text', '$date', '$month', '$year', '$hour', '$minute', '$second')") or die(mysql_error());

    // Dokumentets titel:
    print "<title>Forum</title>";

    // Marker data:
    $load = mysql_query("SELECT * FROM messages") or die(mysql_error());

    // Tjek data:
    if(!mysql_num_rows($load)) {
        print "Ingen data fundet.";
    } else {
        // Hent data:
        while ($array = mysql_fetch_array($load)) {
            print "
                // Indsæt data:
                <br><br><u>"
                .$array["from"].
                ": <b>"
                .$array["subject"].
                "</b> - "
                .$array["date"].
                "/"
                .$array["month"].
                " "
                .$array["year"].
                " ("
                .$array["hour"].
                ":"
                .$array["minute"].
                ":"
                .$array["second"].
                ")</u><br>"
                .$array["text"].
                "
            ";
        }
    }

?>

- Og det dur stadig ikke!
Avatar billede Slettet bruger
27. november 2005 - 08:14 #28
Tja... Indtil viddere gørdet ikke noget at det er tal... Se db'ens opsætning.
Avatar billede Slettet bruger
04. december 2005 - 12:39 #29
Det kunne ingen forstå...? Hmm... Tak for hjælpen!
Avatar billede Slettet bruger
04. december 2005 - 12:40 #30
showsource, du kan bare smide et svar...
Avatar billede showsource Seniormester
04. december 2005 - 14:40 #31
mails her fra exp kommer ret uregelmæssigt.
Den sidste kode du viser, vil du oprette en database, uanset om den findes eller ej!
Og så er det CREATE og ikke DREATE

Og du kommer langt, hvis du putter "or die (mysql_error())" på dine query's
Avatar billede Slettet bruger
04. december 2005 - 15:31 #32
Ok... Points anyone? Showsource?
Avatar billede showsource Seniormester
08. december 2005 - 09:20 #33
Har du fået det til at virke?
Avatar billede mjl Nybegynder
28. januar 2006 - 14:13 #34
???
Avatar billede Slettet bruger
01. april 2006 - 08:25 #35
Dang...
Jeg glemmer at skrive tilbage på alle de spørgsmål jeg stiller...
UNDSKYLD ALLE!!!

PS: Bare smid et svar begge to - hvis I nogensinde ser dette :(
Avatar billede Slettet bruger
06. april 2007 - 18:51 #36
Suk... Sorry.
Avatar billede Slettet bruger
06. april 2007 - 18:52 #37
Haha der gik så lige et år og fem dage :)
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