Avatar billede peder77 Nybegynder
16. maj 2004 - 14:52 Der er 4 kommentarer og
1 løsning

mail form driller

Hej

Jeg har spurgt til dette script før men det driller stadig.
http://www.web-peter.dk/test/formular.php
en simpel form hvor brugeren skal indtaste sin email som så bliver gemt i en database.
Men når den indtastede email adr. havner ikke i databasen når jeg forsøger at indsætte en ny. Den vi derimod gerne slette adresser som står i databasen? Jeg er helt ny i php og det er en opgave jeg laver ud fra en bog.
Koden er gennem tjeckte op til flere gange.
Hjæælp
-----
<?php
function doDB()
{
    global $conn;
    $conn = mysql_connect ("localhost", "xx", "xx") or die(mysql_error());
    mysql_select_db("xx", $conn) or die(mysql_error());
}

Function emailChecker ($email)    {
    global $conn, $check_result;
    $check = "select id from subscribers where email =
        '$email'";
    $check_result = mysql_query ($check,$conn) or die (mysql_error());
}
   
if ($_POST[op] != "ds")
{
    $display_block =" <form method=POST action=\"$_SERVER[PHP_SELF]\">
    <p><strong>Your E-Mail Address:</strong><br>
    <input type=text name=\"email\" size=40 maxlength=150>
    <p><strong>Action:</strong><br>
    <input type=radio name=\"action\" value=\"sub\" checked> subscribe
    <input type= radio name=\"action\" value=\"unsub\"> unsubscribe
    <input type=\"hidden\" name=\"op\" value=\"ds\">
    <p><input type=submit name=\"submit\" value=\"Submit Form\"><p>
    </form>";
   
}
else if (($_POST[op] == "ds") && ($_POST[actino] == "sub"))
{
    if ($_POST[email] == "")
    {
        header ("Location: manage.php");
        exit;
    }
   
  doDB();
  emailChecker($_POST[email]);
 
  if (mysql_num_rows($check_result) < 1 ) {
        $sql = "insert into subscribers values('', '$_POST[email]')";
        $result = mysql_query($sql,$conn) or die(mysql_error());
        $display_block = "<p>Tanks for signing up!</p>";
   
    }    else    {
        $display_block = "<P>You're already subscribed!</p>";
    }
}
else if (($_POST[op] == "ds") && ($_POST[action] == "unsub"))
{
    if ($_POST[email] == "")
    {
        header("Location: manage.php");
        exit;
    }
  doDB();
  emailChecker($_POST[email]);
  if (mysql_num_rows($check_result) <1)
  {
    $display_block = "<p>Couldnt find your address</p><p> No action was taken.</p>";
  }
  else
  {
    $id = mysql_result($check_result, 0, "id");
    $sql = "delete from subscribers where id = '$id'";
    $result = mysql_query($sql, $conn) or die(mysql_error());
        $display_block = "<P>Youér unsubscribed!</P>";
    }
}
?>
<html>
<head>
<title>tilmelding af nyhedsbrev</title>
</head>
<body>
<h1>Subscribe/unsubscribe</h1>
<?php echo "$display_block";?>
</body>
</html>
Avatar billede sqren Nybegynder
16. maj 2004 - 15:22 #1
Denne linie:
else if (($_POST[op] == "ds") && ($_POST[actino] == "sub"))

Skal ændres til dette:
else if (($_POST[op] == "ds") && ($_POST[action] == "sub"))
Avatar billede peder77 Nybegynder
16. maj 2004 - 15:36 #2
He he.
Den smuttede lige. Nu har det irreteret mig i flere dage.
Kanont.
Tak for hjælpen.
Smid et svar så skal du få points.
Avatar billede sqren Nybegynder
16. maj 2004 - 17:42 #3
Svar!
Avatar billede Slettet bruger
17. maj 2004 - 01:54 #4
En detalje, som godt nok ikke giver fejl, men som du stadig bør være klar over, er, at det faktisk er forkert at skrive $_POST[op] og $_POST[action]. Det rigtige er at sætte '' eller "" om array-nøglen, dvs. således: $_POST['op'] og $_POST['action']
Avatar billede peder77 Nybegynder
17. maj 2004 - 09:21 #5
Tak for svaret og for detaljen som jeg retter med det samme.
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