Avatar billede nickern Nybegynder
30. september 2007 - 20:42 Der er 21 kommentarer og
1 løsning

Find fejlen i php-filen - jeg har set mig blind

Hejsa eksperter

Kender I det der med at man kigger sig blindt på noget? Det har jeg gjort nu. Nogen af jer der gider og hjælpe med at finde fejlen i følgende kode?

Når jeg trykker "tilføj", sker der intet - ikke engang min tekst, som skal komme frem kommer frem, og når jeg så vil se det gemte, kan jeg heller ikke dette. Hvad gør jeg galt?
-----------------------------
<?php
session_start();
require("db.php");

if ($_SESSION['id'] == 1)
{
    ?>
    <html>
    <head>
    <title>Admin side</title>
    </head>
   
    <body>
<table border="0">
<tr>
    <td>
</td>
    <td>
<form action="" method="post">
Titel:&nbsp;&nbsp;&nbsp;<input size="50" type="text" name="title">
URL:&nbsp;&nbsp;&nbsp;<input size="50" type="text" name="url" value="http://www."><br>
<input type="file" style="width:250px;" name="image" />
<br><br>
Beskrivelse:
<br>
<textarea name='description' cols='50' rows='3'></textarea>
<br><br>
Kategori:<br>
<select name="category" size="1" class="dropdown">
<option selected>Venner</option>
<option selected>Links</option>
<option selected>Kunder</option>
</select>
<br><br>
<input type="submit" value="Tilføj" name="submit">
</form>
<?
    if($_POST['submit'])
    {
        $title = $_POST['title'];
        $url = $_POST['url'];
        $description = $_POST['description'];
        $category = $_POST['category'];
                $picture    =    $_FILES["image"];

                if ($picture['name'])
                    {
                        $ext = strtolower(end(explode('.', $picture['name'])));
                if ($ext == ("jpg" || "jpeg" || "gif" || "png"))
                {
                    $imageName = md5(time()) .'_'. rand(0,10000) .'.'. $ext;
                    $uploadPos = "./img/". $imageName;
                   
                    if (move_uploaded_file($picture['tmp_name'], $uploadPos) == true)
                    {

mysql_query("INSERT INTO links (title, url, description, category, picture) VALUES ('$title', '$url', '$description', '$category', '$imageName')");
        echo "Den er hermed tilføjet!";
    }}}}

?>
</td>
    <td>
</td>
</tr>
</table>


    </body>
    </html>
-----------------------------

På forhånd tak
Avatar billede erikjacobsen Ekspert
30. september 2007 - 20:53 #1
Du har bare vrøvl med dine { ... } -ere. Få din webserver/webhotel til at vise dig fejlene, mens du udvikler, så du ikke skal komme her hver gang ;)
Avatar billede nickern Nybegynder
30. september 2007 - 21:00 #2
jeg lukker da dem jeg åbner? så kan ikke helt se, hvad du mener?
Avatar billede dkfire Nybegynder
30. september 2007 - 21:10 #3
Din form er ikke rigtig.
Når du vælger at uploade en fil skal din form have enctype="multipart/form-data" som attribut.
Avatar billede dkfire Nybegynder
30. september 2007 - 21:12 #4
Men en god ide når du udvikler, er at udskrive noget tekst lidt oftere så du ved om du kommer ind i de rigtige if-løkker.
Avatar billede nickern Nybegynder
30. september 2007 - 21:14 #5
Tak dkfire - men det fungerer stadig ikke:S
Avatar billede dkfire Nybegynder
30. september 2007 - 21:22 #6
Hvad har du så nu ??
Avatar billede erikjacobsen Ekspert
30. september 2007 - 21:23 #7
Jeg kan tælle 5 {-er og 4 }-er - men det er ligegyldigt indtil du har fået din webserver/webhotel til at vise dig fejlene.
Avatar billede nickern Nybegynder
30. september 2007 - 21:30 #8
dkfire - ja så har jeg jo som før, blot hvor jeg har puttet det du skrev ind i <form>

erik - ja ok, men den lukkes nederst i dokumentet, som jeg ikke har medtaget her.
hvordan får jeg mit webhotel til at vise fejlene? jeg bruger surftown?
Avatar billede erikjacobsen Ekspert
30. september 2007 - 21:31 #9
Jeg kender ikke surftown, men formentlig i deres kontrolpanel. Og hvis du vil have os til at finde dine fejl, så plejer det at være en god idé at vise den relevante kode - ik' å'? ;)
Avatar billede nickern Nybegynder
30. september 2007 - 21:57 #10
har jeg ikke også gjort det erik?

jeg har vist hele den kode, hvor problemet sidder et eller andet sted:)
Avatar billede erikjacobsen Ekspert
30. september 2007 - 22:03 #11
Jo, fejlen ligger i den kode du viser, men nogen spilder sin egen og andres tid på at fortælle om manglende en }-er, når det nu er den første fejl, der springer i øjnene.

Har du fået sat dit webhotel til at vise fejl? Hvis ikke, så ken du da få det hint, at der nok er ugler i kartoffelmosen i denne linie:

          if ($ext == ("jpg" || "jpeg" || "gif" || "png"))
Avatar billede nickern Nybegynder
01. oktober 2007 - 10:09 #12
jamen det vises jo fint nok erik, men den tilføjer blot ikke. Også det jeg prøvede at beskrive i mit hovedindlæg.

Men jeg kan altså ikke se, hvad fejlen er?
Avatar billede erikjacobsen Ekspert
01. oktober 2007 - 11:08 #13
Jeg ved ikke hvad du prøvede at beskrive, men "sker der intet" tyder jo på, der intet sker. Ellers må du være mere præcis. Den linie jeg viser er forkert - den kunne være:

if ($ext == "jpg" || $ext == "jpeg" || $ext == "gif" || $ext == "png")
Avatar billede dkfire Nybegynder
01. oktober 2007 - 12:18 #14
Hvilken if-løkke går den ikke ind i ???
Avatar billede nickern Nybegynder
01. oktober 2007 - 12:40 #15
dkfire - det er jo det jeg ikke kan se. Kan man uden problemer smække en echo sætning ind i hver if-sætning, så jeg blot kan se hvor den stopper?
Avatar billede dkfire Nybegynder
01. oktober 2007 - 13:17 #16
Ja, det er også det jeg foreslog dig tidligere.
Og så ret lige:
mysql_query("INSERT INTO links (title, url, description, category, picture) VALUES ('$title', '$url', '$description', '$category', '$imageName')");
til:
mysql_query("INSERT INTO links (title, url, description, category, picture) VALUES ('$title', '$url', '$description', '$category', '$imageName')") or die(mysql_error());
Avatar billede nickern Nybegynder
01. oktober 2007 - 13:31 #17
Nu bruger jeg denne php-kode:
- - - - - - - - - -
<?
    if($_POST['submit'])
    {
        $title = $_POST['title'];
        $url = $_POST['url'];
        $description = $_POST['description'];
        $category = $_POST['category'];
                $picture    =    $_FILES["image"];

                if ($picture['name'])
                    {
                        $ext = strtolower(end(explode('.', $picture['name'])));
                        if ($ext == "jpg" || $ext == "jpeg" || $ext == "gif" || $ext == "png")
                {
                    $imageName = md5(time()) .'_'. rand(0,10000) .'.'. $ext;
                    $uploadPos = "./img/". $imageName;
                   
                    if (move_uploaded_file($picture['tmp_name'], $uploadPos) == true)
                    {

mysql_query("INSERT INTO links (title, url, description, category, picture) VALUES ('$title', '$url', '$description', '$category', '$imageName')") or die(mysql_error());
        echo "Den er hermed tilføjet!";
    }
            echo "1";
                }
                    echo "2";
                        }
                            echo "3";
                                }

?>
- - - - - - - - - -

og den spytter 123 ud - men gemmer stadig intet! Dvs. at den ikke kommer igennem mysql_query, men hvor går det så galt henne:s
Avatar billede dkfire Nybegynder
01. oktober 2007 - 13:34 #18
Prøv se om mappen img er skrivbar for webserveren.
Avatar billede nickern Nybegynder
01. oktober 2007 - 13:44 #19
:) hehe - der lå den.

ligger du et svar dkfire?
Avatar billede dkfire Nybegynder
01. oktober 2007 - 13:52 #20
Jeg svarer da gerne.
Men husk, hvis du ikke ved hvad virker, så skrive så meget ud på skærmen som muligt og så ofte som muligt. Du kan jo altid fjerne det igen, når det virker.
Det gør det også meget nemmere for os at hjælpe dig, hvis vi præcis ved hvor det går galt.
Avatar billede nickern Nybegynder
01. oktober 2007 - 23:30 #21
ja okay:) det er min bommert. Vil jeg gøre fremover - kan man godt indstille chmod for en folder, når den ligger på pcen, inden den bliver uploadet?
Avatar billede erikjacobsen Ekspert
02. oktober 2007 - 08:35 #22
Det skal du gøre på serveren
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