Avatar billede nomisweb Nybegynder
30. marts 2007 - 16:23 Der er 17 kommentarer og
1 løsning

undifined index, men hvorfor?

Hej,
Jeg har en tilmeld/afmeld nyhedsbrev funktion som jeg skulle sætte ind på en side, men får fejlen:
Notice: Undifined index nyhedsbrev in ...nyhedsbrev.php on line 12 og 14.

Her er koden: (resten af tabel koden er i min anden fil!)
<tr><td>NYHEDSBREV</td></tr>
<tr><td>
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post" style="margin: 0px; padding: 0px;">
    Tilmeld <input type="radio" name="tilmelding" value="ja" CHECKED>
    Frameld <input type="radio" name="tilmelding" value="nej"><br />
    <input type="text" name="email" maxlength="50" value="Din@e-mail.dk" style="height: 16px; border: 1px Solid Black; font-family: Verdana; font-size: 10px;"><br /><br />
    <input type="submit" name="nyhedsbrev" value="OK">
</form>
</td></tr>
<?php
//$nyhedsbrev = $_REQUEST['nyhedsbrev'];

if ($_POST['submit']) { // hvis man har trykket "submit"
   

    if ($_POST['tilmelding'] && $_POST['email']) { // hvis man har udfyldt radio og email feltet.
        if ($_POST['tilmelding'] == "ja") {
            $tjek_email = mysql_query("SELECT * FROM nyhedsbrev WHERE email = '$_POST[email]'");
            $tael_email = mysql_num_rows($tjek_email);
            if ($tael_email == TRUE) {
             
                echo "<br />Du findes allerede i vores database!<br /><br />";
            } else {
                if (mysql_query("INSERT INTO nyhedsbrev (email) VALUES ('$_POST[email]')")) {
                echo "<br /><b>Du er nu tilmeldt nyhedsbrevet!</b><br /><br />"; }
               
            }
        } elseif ($_POST['tilmelding'] == "nej") {
            if(mysql_query("DELETE FROM nyhedsbrev WHERE email = '$_POST[email]'")) {
            echo "<br />Du er nu fjernet fra databasen!</font><br /><br />"; }
           
        }
    } else {
       
        echo "<br />Du skal indtaste en e-mail!<br /><br />";
    }
}

?>

Det mærkelige er at hvis jeg smider html, head, body og table tags ind og bare går direkte ind på nyhedsbrev.php så er der intet problem. Så hvorfor kommer den frem og siger undifined index?
Og hvordan retter jeg det?

Tak for hjælp!
Avatar billede nomisweb Nybegynder
30. marts 2007 - 16:24 #1
$nyhedsbrev = $_REQUEST['nyhedsbrev']; har jeg bare kommet til at udkommentere for at se om det hjalp, men den behøver vel egentlig heller ikke at være der?!
Avatar billede dkfire Nybegynder
30. marts 2007 - 16:41 #2
Hvad står der på både linie 12 og 14 ?

$_REQUEST['nyhedsbrev'] skal jo indeholde noget for at du kan hente det, enten via POST eller GET.

En anden fejl du måske også kan få er ved:
$tael_email = mysql_num_rows($tjek_email);
            if ($tael_email == TRUE) {

True er som regel en Bool værdi, hvor mysql_num_rows returneré en talværdi for hvor mange rækker der er fundet.
Avatar billede nomisweb Nybegynder
30. marts 2007 - 17:26 #3
på linie 12 står der $nyhedsbrev = $_REQUEST['nyhedsbrev'];
på linie 14 står der if ($_POST['submit']) { // hvis man har trykket "submit"

Men det virker jo fint hvis jeg har det i en fil for sig, måske er det bare nemmest at lave et popup vindue til den så den er isoleret fra rsten af siden...
Avatar billede dkfire Nybegynder
30. marts 2007 - 17:38 #4
Husk lige at mange har en popup blocker.
Avatar billede dkfire Nybegynder
30. marts 2007 - 17:40 #5
Og så lige en ting til, du har jo ingen inputfelter med name="submit". Det er derfor der ikke noget i $_POST['submit']
Avatar billede nomisweb Nybegynder
31. marts 2007 - 13:18 #6
Det er selvfølgelig rigtigt med popup blocker, men hvis det andet ikke virker er der jo ikke så meget at gøre.
Det med $_POST['submit'] skulle selvfølgelig være nyhedsbrev i stedet for submit, det var bare et levn fra en af mine forsøg.
Jeg er ikke sikker på jeg forstår hvad du mener med:
        $_REQUEST['nyhedsbrev'] skal jo indeholde noget for at du kan hente det, enten via POST eller GET.
Det virker jo heller ikke med POST i linie 14 foreksempel?
Avatar billede johan.o Nybegynder
01. april 2007 - 13:48 #7
Hm, når jeg tester ovenstående kode får jeg ikke den fejl du nævner..? Problemet er måske i den kode du har tilknyttet til ovenstående....

Mvh. Johan
Avatar billede nomisweb Nybegynder
01. april 2007 - 18:08 #8
Ja det er også det jeg ikke forstår, at det virker når man tester det alene.
Har ikke koden lige her, men kan lige smide resten ind senere.

Hvad betyder det der "Undefined index"?
Avatar billede johan.o Nybegynder
01. april 2007 - 20:18 #9
Hm, linjen med $_REQUEST skal vi vel ikke beskæftige os mere med ?, det var jo en test linje, ikke ?

Derudover er det muligt at der reageres på at dine 'variabler' ikke er defineret.

Prøv f.eks. at skrive -->

if(isset($_POST['nyhedsbrev']) {

istedet for -->

if($_POST['nyhedsbrev']) {

Mvh. Johan
Avatar billede nomisweb Nybegynder
02. april 2007 - 10:09 #10
Nu får jeg ihvertfald ikke nogen fejlmeddelelse, men den skriver så heller ikke til databasen.

Jeg tænkte på om det er smart at definere variabler for email og tilmelding inden selve formularen kommer?
Avatar billede johan.o Nybegynder
02. april 2007 - 10:37 #11
Ja, det er ofte den fremgangsmåde jeg benytter, altså at lave php behandlingen først og dernæst outputte html delen.

Jeg kan ikke huske hvordan indholdet fra en input type=submit ser ud, men hvad nu hvis du udskifter

if(isset($_POST['nyhedsbrev'])) {

med

if(isset($_POST['tilmelding'])) {

Får du så en eller reaktion ?

Mvh. Johan
Avatar billede nomisweb Nybegynder
02. april 2007 - 10:57 #12
Nu virker det fandme....Fuck det er fedt! :-)

jeg skriftede ud som du sagde og det fungerede, Jeg forstår ikke hvorfor det gjorde en foreskel, så hvis du har en go forklaring så vil jeg da gerne høre, ellers må jeg lige få læst op på min php viden!

Tak for hjælpen, lægger du et svar?

Her er det færdige:
<table>
<tr><td>NYHEDSBREV</td></tr>
<tr><td>
<form action="<?php echo $_SERVER['PHP_SELF'].'?c='.$catId; ?>" method="post" style="margin: 0px; padding: 0px;">
    Tilmeld <input type="radio" name="tilmelding" value="ja" CHECKED>
    Frameld <input type="radio" name="tilmelding" value="nej"><br />
    <input type="text" name="email" maxlength="50" value="Din@e-mail.dk" style="height: 16px; border: 1px Solid Black; font-family: Verdana; font-size: 10px;"><br /><br />
    <input type="submit" name="nyhedsbrev" value="OK">
</form>
</td></tr>
<table>
<?php


if (isset($_POST['tilmelding'])) { // hvis man har trykket "submit"
   

    if ($_POST['tilmelding'] && $_POST['email']) { // hvis man har udfyldt radio og email feltet.
        if ($_POST['tilmelding'] == "ja") {
            $tjek_email = mysql_query("SELECT * FROM nyhedsbrev WHERE email = '$_POST[email]'");
            $tael_email = mysql_num_rows($tjek_email);
            if ($tael_email == TRUE) {
             
                echo "<br />Du findes allerede i vores database!<br /><br />";
            } else {
                if (mysql_query("INSERT INTO nyhedsbrev (email) VALUES ('$_POST[email]')")) {
                echo "<br /><b>Du er nu tilmeldt nyhedsbrevet!</b><br /><br />"; }
               
            }
        } elseif ($_POST['tilmelding'] == "nej") {
            if(mysql_query("DELETE FROM nyhedsbrev WHERE email = '$_POST[email]'")) {
            echo "<br />Du er nu fjernet fra databasen!</font><br /><br />"; }
           
        }
    } else {
       
        echo "<br />Du skal indtaste en e-mail!<br /><br />";
    }
}

?>
Avatar billede johan.o Nybegynder
02. april 2007 - 12:27 #13
He he...ja der kom da vist en reaktion :)

Hvilket output får du ved at placere dette i 'starten' -->

if(isset($_POST['tilmelding'])) {
echo "<br /><b>Submit value : ".$_POST['nyhedsbrev']."<br /><br />";

?

Mvh. Johan
Avatar billede nomisweb Nybegynder
02. april 2007 - 12:43 #14
Så får jeg
Submit value : OK

Så den burde måske godt kunne finde ud af det ved at sige
if(isset($_POST['nyhedsbrev'])){}
?
Avatar billede johan.o Nybegynder
03. april 2007 - 00:02 #15
Hm, ja det burde jo være fint ?, jeg testede lige din kode herhjemme og det virker fint, uanset om jeg tester på $_POST['det ene'] eller $_POST['det andet']...hvilken browser bruger du ?..ikke at jeg tror det ændre noget :)

Mvh. Johan
Avatar billede nomisweb Nybegynder
03. april 2007 - 09:57 #16
Jeg har testet i IE, men det burde jo virke i de andre browsere også...har lige prøvet dem nu og det virker helt fint!

Tak for hjælpen...
Avatar billede johan.o Nybegynder
03. april 2007 - 10:19 #17
Velbekomme.

Mvh. Johan
Avatar billede johan.o Nybegynder
03. april 2007 - 10:53 #18
Takker for points.

Mvh. Johan
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