Avatar billede k.birk Nybegynder
27. maj 2002 - 19:39 Der er 11 kommentarer og
1 løsning

PHP Hjælp - Eksamen

Hej Eksperter

Jeg har lavet en hjemmeside til et Eksamensprojekt, hvor jeg bruger formularer, til at sende eller slette nyheder fra en database...

Jeg har bare et problem, når man udfylder formularen skulle php tjekke brugernavn kode osv, og derefter sende variablerne til databasen og skrive "din nyheds er sendt til databasen" Men det er som om den springer det første led over hvor den skal tjekke om der er indtastet brugernavn og kode, og istædet viser formularen igen.

Jeg har indsat et eksempel nedenfor...

Jeg ville være glad for noget hjælp da jeg skal til eksamen på fredag, og forsvare min opgave....


--------------------------------

<html>
<head>
<title>-+- B70 -+-</title>
<link rel="stylesheet" type="text/css" href="style.css">
</head>
<body class="brodtxt">

        <center>
        <?
    $db = mysql_connect("****","****","****");
    mysql_select_db("B70",$db);


$resultat = mysql_query("select * from login");


while ($raekke = mysql_fetch_array($resultat)) {
  $brugernavn = $raekke['brugernavn'];
  $brugerkode = $raekke['brugerkode'];
}
   
    if ($navn && $kode){
        if ($navn == $brugernavn && $kode == $brugerkode){
            echo "<b>Din nyhed er sendt til databasen</b>";
            $db = mysql_connect("mysql.jepponet.dk","kbirk","Line83");
                mysql_select_db("kbirk",$db);
            $nyhed_dato=time();
            mysql_query("insert into nyheder (dato, overskrift, tekst)values ('$nyhed_dato','$nyhed_overskrift','$nyhed_indhold')");
        }else  {
            echo "<a href=\"opretn.php\">Fejl -> Gå tilbage og prøv igen.</a>";
            }}else {
           
    echo "<b>Indtast dit brugernavn og brugerkode.<br>Udfyld derefter tekstfelterne.</b>";
            ?>

    <form class="brodtxt" method=post action=opretn.php>
    brugernavn:<br>
    <input class="form" type=text name=navn><br>
    kodeord:<br>
    <input class="form" type="password" name=kode><br>
    overskrift:<br>
    <input class="form" type=text name=nyhed_overskrift maxlength="20"><br>
    indhold:<br>
    <textarea ROWS=10 COLS=19 class="form" name=nyhed_indhold ></textarea><br>
    <br><input class="form" type=submit value=send>
    </form>

            <?
        }
            mysql_close();


echo "<br><br><a href=\"#\"onClick=\"window.close()\">[ Luk vinduet ]</a>";
?>
    </center>
       

</body>
</html>

--------------------------------
Avatar billede razor Nybegynder
27. maj 2002 - 19:43 #1
Jeg vil lige spørge dig om noget, der for mig virker ugennemtænkt:

$resultat = mysql_query("select * from login");
while ($raekke = mysql_fetch_array($resultat)) {
  $brugernavn = $raekke['brugernavn'];
  $brugerkode = $raekke['brugerkode'];
}

Hvad forventer du der sker her?

En anden ting, så bør du nok få skiftet dit mysql-password hos jepponet meget hurtigt :)
Avatar billede mikl-dk Nybegynder
27. maj 2002 - 19:52 #2
Jeg ville gøre det således:

Såvidt jeg kan se, så mangler du noget WHERE i den SQL-sætning:

Modificeret version:

<html>
<head>
<title>-+- B70 -+-</title>
<link rel="stylesheet" type="text/css" href="style.css">
</head>
<body class="brodtxt">

        <center>
        <?

if ($navn && $kode){
    $db = mysql_connect("****","****","****");
    mysql_select_db("B70",$db);


$resultat = mysql_query("select * from login WHERE brugernavn = $navn AND brugerkode = '$kode'");

$number = mysql_num_rows($resultat);

if ($number > 0)
{
echo "<b>Din nyhed er sendt til databasen</b>";
$db = mysql_connect("****","****","****");
                mysql_select_db("kbirk",$db);
            $nyhed_dato=time();
            mysql_query("insert into nyheder (dato, overskrift, tekst)values ('$nyhed_dato','$nyhed_overskrift','$nyhed_indhold')");
       
}

else
{
echo "<a href="opretn.php">Fejl -> Gå tilbage og prøv igen.</a>";
}

}

else
{
           
    echo "<b>Indtast dit brugernavn og brugerkode.<br>Udfyld derefter tekstfelterne.</b>";
            ?>

    <form class="brodtxt" method=post action=opretn.php>
    brugernavn:<br>
    <input class="form" type=text name=navn><br>
    kodeord:<br>
    <input class="form" type="password" name=kode><br>
    overskrift:<br>
    <input class="form" type=text name=nyhed_overskrift maxlength="20"><br>
    indhold:<br>
    <textarea ROWS=10 COLS=19 class="form" name=nyhed_indhold ></textarea><br>
    <br><input class="form" type=submit value=send>
    </form>

            <?
        }
            mysql_close();


echo "<br><br><a href="#"onClick="window.close()">[ Luk vinduet ]</a>";
?>
    </center>
       

</body>
</html>

--------------------------------


IKKE TESTET - men det er også idéen i det, jeg ville vise :)
Avatar billede jakoba Nybegynder
27. maj 2002 - 20:02 #3
Du har rod i din overodnede struktur.

din  mysql_query trækker ALLE rækker ud af login.

og så laver du en while sætning der går alle rækkerne igennem og efter tur sætter $brugernavn og $brugerkode til værdierne fra den række.

i slutningen af while-løkken har $brugernavn og $brugerkode så værdierne fra den allersidst udtrukne række.

Og de værdier sammenligner du så med $navn og $kode.

det vil sige at det kun er den allersidst oprettede bruger der har mulighed for at logge sig på. Det er vist ikke meningen :-))

Du åbner databasen og looper før du overhovedet checker om der er indtastet noget: (med: "if ($navn && $kode) {" ) Det er da spild af servertid.

Du kalder
        $db = mysql_connect(
2 gange. er det ikke overflødigt anden gang?

Lav dig en oversigt over hvad der skal ske og hvornår. Og lav den FÆRDIG før du begynder at kode.

mvh JakobA
Avatar billede k.birk Nybegynder
27. maj 2002 - 20:02 #4
Det er meningen at jeg for hentet brugernavn og brugerkode fra databasen.. det har haft virket, men kan der være en fejl der...?

$resultat = mysql_query("select * from login");


while ($raekke = mysql_fetch_array($resultat)) {
  $brugernavn = $raekke['brugernavn'];
  $brugerkode = $raekke['brugerkode'];
}
Avatar billede k.birk Nybegynder
27. maj 2002 - 20:05 #5
Det er kun en opgave som jeg skal bruge til eksamen på fredag. så det vigtigeste er at det kommer til at virke.. Og det er kun nødvendigt at der er en bruger som kan oprette nyheder...

det mærkelige er at det har virket, og ligepludseligt er gået helt død...
Avatar billede mikl-dk Nybegynder
27. maj 2002 - 20:11 #6
Det er rigtigt som jacoba siger, der er meget rod - og koden er rodet, og brugt "forkert".

Det jeg ville vise, var at du kunne hive alle data fra din db, hvor brugernavn var lig med det indtastede brugernavn og pass var lig med det indtastede pass.

Hvis den finder nogle - dvs. koden og kodeordet er skrevet rigtigt, kan man få lov til at skrive nyheden. Den sammenligner den ikke på selve siden, men den kan du logge på, hvis der er forkomster i db.

Selvom du siger, at det kun er én bruger, så er det stadig den forkerte måde at gøre det på! Det ville være det samme som at skrælle æbler med en motorsav :)

/mikl.dk
Avatar billede tipsen Nybegynder
27. maj 2002 - 23:09 #7
"skrælle æbler med motorsav".... - gad vide om de har prøvet dét i Jack Ass...?
Avatar billede jakoba Nybegynder
27. maj 2002 - 23:21 #8
Det skal nok komme :(
Og for at det gælds skal han naturligvis holde æblet i den ene hånd og motorsaven i den anden. (og helst køre på ethjulet cykel imens:-))
Avatar billede k.birk Nybegynder
28. maj 2002 - 13:37 #9
jeg har fundet fejlen.. imens jeg lavede siden havde hej internet explorer 5... derefter opgraderede jeg til IE 6, og derefter virkede det ikke mere.. jeg har lige testet den på IE 5 og det virker næsten... det enste problem nu er at der ikke bliver ændret i databasen, når jeg prøver at sende nyheder til den...

er der nogen som har en løsning....?


<html>
<head>
<title>-+- B70 -+-</title>
<link rel="stylesheet" type="text/css" href="style.css">
</head>
<body class="brodtxt">
<center>
    <?
    $db = mysql_connect("localhost","root","");
    mysql_select_db("B70",$db);
    $resultat = mysql_query("select * from login");
    while ($raekke = mysql_fetch_array($resultat)) {
        $brugernavn = $raekke['brugernavn'];
        $brugerkode = $raekke['brugerkode'];
    }
    if ($navn && $kode){
        if ($navn == $brugernavn && $kode == $brugerkode){
            echo "<b>Din nyhed er sendt til databasen</b>";
            $db = mysql_connect("localhost","root","");
            mysql_select_db("B70",$db);
            $nyhed_dato=time();
            mysql_query("insert into nyheder (dato, overskrift, tekst)values ('$nyhed_dato','$nyhed_overskrift','$nyhed_indhold')");
        }else  {
            echo "<a href=\"opretn.php\">Fejl -> Gå tilbage og prøv igen.</a>";
        }}else {
            echo "<b>Indtast dit brugernavn og brugerkode.<br>Udfyld derefter tekstfelterne.</b>";
            ?>

                <form class="brodtxt" method=post action=<? echo $php_self;?>>
                brugernavn:<br>
                <input class="form" type=text name=navn><br>
                kodeord:<br>
                <input class="form" type="password" name=kode><br>
                overskrift:<br>
                <input class="form" type=text name=nyhed_overskrift maxlength="20"><br>
                indhold:<br>
                <textarea ROWS=10 COLS=19 class="form" name=nyhed_indhold ></textarea><br>
                <br><input class="form" type=submit value=send>
                </form>

            <?
            }
            mysql_close();
            echo "<br><br><a href=\"#\"onClick=\"window.close()\">[ Luk vinduet ]</a>";
            ?>
</center>
</body>
</html>
Avatar billede tipsen Nybegynder
28. maj 2002 - 18:33 #10
Jeg tror det er de færreste som bliver ved med at hjælpe sålænge du ikke retter de fejl du bliver gjort opmærksom på, men bare afviser folk...
Avatar billede jakoba Nybegynder
28. maj 2002 - 18:46 #11
For at rette en fejl skal man kunne se den som en fejl, og k.birk er ikke kommet langt nok til at se dem vi pegede på. Det er en ærlig sag, og os der kvajede os ved at pege på noget 'usynligt'.

Noget andet er så at hvis læreren kender noget til programmering vil karakteren nok ikke blive høj for det der (selvom det 'virker'), men så har læreren vel også den fornødene pædagogiske uddannelse til at forklare hvorfor "det virker" ikke er det samme som "godt program".

mvh JakobA
Avatar billede k.birk Nybegynder
30. maj 2002 - 12:27 #12
as
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