30. marts 2007 - 16:23Der 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?
$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?!
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...
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?
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!
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 />"; } }
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 :)
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.