Avatar billede nickern Nybegynder
28. december 2006 - 12:43 Der er 13 kommentarer og
1 løsning

Tjekke i Databasen

Hejsa

Jeg har et script som gemmer e-mail og navn i en database.

Men den anden dag var der en som havde spammet listen, ved at skrive sin e-mail 100 gange, og dette er jeg ikke interesseret i.

Så jeg ville lige høre ad, om der er nogen som hurtigt har et lille script som kan tjekke om e-mailen findes i databasen?

På forhånd tak
Avatar billede nickern Nybegynder
28. december 2006 - 12:45 #1
Lige en tilføjelse til anden sidste linie:
Og fortælle at e-mailen allerede findes i databasen.
Avatar billede intenz Novice
28. december 2006 - 12:52 #2
Sådan her, du skal lige rette felter og database til at passe til din mysql.


$res = mysql_query("select email from DATABASE where email='$check_denne_email'");
$num = mysql_num_rows($res);

if ($num > 0) {
// email findes i database
} else {
// email findes ikke i databasen
}
Avatar billede nickern Nybegynder
28. december 2006 - 12:58 #3
$check_denne_email' : hvad skal det være lig med? Er det e-mail boksen som jeg har på siden?

og så skal jeg proppe tilføjelses koden ind under "else"?
Avatar billede intenz Novice
28. december 2006 - 13:05 #4
ja $check_denne_email skal være den email brugeren indtaster i formularen. Du kan bare ændres variabelnavnet til hvad du bruger.

Og ja du skal sættes tilføjelseskoden ind i stedet for // email findes ikke i databasen

Ved // email findes i database kan du f.eks. skrive print "denne email findes allerede! Prøv igen."; Eller hvad du nu har lyst til.
Avatar billede nickern Nybegynder
28. december 2006 - 13:57 #5
hmm...

Jeg har denne kode nu: Men den fungerer bare ikke:S

<-- Kode START -->
<?php
    if($_POST['submit'])
    {
        $add_email = addslashes($_POST['email']);
        $add_IP = addslashes($REMOTE_ADDR);
        $add_navn = addslashes($_POST['navn']);
       
$res = mysql_query("select email from nyhedsbrev where email='$add_email'");
$num = mysql_num_rows($res);

if ($num > 0) {
// email findes i database
echo "E-mailen findes allerede i Databasen - prøv igen.";
} else {
        $sql = "INSERT INTO nyhedsbrev (email,navn,tid,ip) VALUES ('".$add_email."','".$add_navn."',NOW(),'".$add_IP."')";
        mysql_query($sql) or die (mysql_error());
       
        echo "Du er nu tilmeldt konkurrencen<br><a href='http://www.shoplisten.dk/vind'>Flere konkurrencer til dig</a>";
    }}
    ?>
<-- Kode SLUT  -->

Hvad er fejlen?
Avatar billede intenz Novice
28. december 2006 - 17:43 #6
Det ser rigtigt nok ud. Hvad er fejlen? Sker der bare ingenting?

Prøv at debug, f.eks. ved at ændre det til følgende, bare for at teste.

<-- Kode START -->
<?php
    if($_POST['submit'])
    {
        $add_email = addslashes($_POST['email']);
        $add_IP = addslashes($REMOTE_ADDR);
        $add_navn = addslashes($_POST['navn']);
       
$res = mysql_query("select email from nyhedsbrev where email='$add_email'");
$num = mysql_num_rows($res);

print "DEBUG: Fundet $num resultater<br>";

if ($num > 0) {
// email findes i database
print "DEBUG: Email ($add_email) allerede i database, indsætter ikke igen<br>";
echo "E-mailen findes allerede i Databasen - prøv igen.";
} else {
        $sql = "INSERT INTO nyhedsbrev (email,navn,tid,ip) VALUES ('".$add_email."','".$add_navn."',NOW(),'".$add_IP."')";
        mysql_query($sql) or die (mysql_error());

print "DEBUG: Email ($add_email) findes ikke i databasen, indsætter med følgende sql:<br>$sql<br>";
       
        echo "Du er nu tilmeldt konkurrencen<br><a href='http://www.shoplisten.dk/vind'>Flere konkurrencer til dig</a>";
    }}
    ?>
<-- Kode SLUT  -->


Det er selvfølgelig en lidt omfattende tekst til at debugge, men så er det mere klart hvad jeg mener med det.
Hvis du indsætter det, burde du kunne se hvor det går galt.
Avatar billede nickern Nybegynder
29. december 2006 - 13:28 #7
Nu fungerer den:D Tak...

Lige en sidste ting: Den spytter intet ud nu, den viser bare det samme igen og igen - :s prøv evt. selv at se: http://www.gratis-maaned.dk/nyhedsbrev/
Avatar billede nickern Nybegynder
29. december 2006 - 13:34 #8
Hov ups - linket er forkert: http://www.gratis-maaned.dk/nyhedsbrev/index3.php

Men en ting til - den tilføjer stadig intet i databasen:s hva ska jeg gøre?
Avatar billede intenz Novice
29. december 2006 - 23:26 #9
Det er der en rimelig god forklaring på.
Ud fra koden på det link du skrev har jeg copy/paste din formular:

<form method="post" name="nyhedsbrev" onsubmit="return email_check();">
Skriv dit navn <input type="text" name="navn">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;   
Skriv din Email <input type="text" name="email">
<input type="submit" value="Tilmeld">
</form>


Du har ikke defineret nogen action="" så den bliver ikke sendt over til php filen, den reloader bare siden.

Prøv at ændre:
<form method="post" name="nyhedsbrev" onsubmit="return email_check();">

til:
<form method="post" action="FILNAVN.php" name="nyhedsbrev" onsubmit="return email_check();">

Hvor FILNAVN.php skal pege på den fil der skal tilføje emailen (den fil vi arbejdede med før)
Avatar billede nickern Nybegynder
30. december 2006 - 00:25 #10
Jamen jeg plejer bare at køre det i samme script? :s Så plejer ikke at bruge action? skal jeg dette?
Avatar billede intenz Novice
30. december 2006 - 20:04 #11
Jeg kan se på http://www.gratis-maaned.dk/nyhedsbrev/ at du bruger:
<form target="/nyhedsbrev/index.php" method="post" name="nyhedsbrev" onsubmit="return email_check();">

Og i http://www.gratis-maaned.dk/nyhedsbrev/index3.php bruger du:
<form method="post" name="nyhedsbrev" onsubmit="return email_check();">

Normalt ville man sætte action, men target virker tilsyneladende også. Men som du kan se mangler den i den sidste kode. Så ved formularen ikke hvad den skal gøre med tingene.
Avatar billede nickern Nybegynder
30. december 2006 - 23:56 #12
Nu ser min form således ud:
<-- START -->
<form action="http://www.gratis-maaned.dk/nyhedsbrev/index3.php" method="post" name="nyhedsbrev" onsubmit="return email_check();">
Skriv dit navn <input type="text" name="navn">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;   
Skriv din Email <input type="text" name="email">
    <input type="submit" value="Tilmeld">
<-- SLUT -->
Men der sker stadig intet?

Grunden til at jeg har sat den til at være samme fil, er fordi der er resten af koden i?
Avatar billede intenz Novice
31. december 2006 - 12:32 #13
Ahh, der er også en fejl mere jeg ikke lige så i første omgang.

Din submit knap:
<input type="submit" value="Tilmeld">

Den indeholder intet navn, der står øverst i din fil if($_POST['submit']), hvilket betyder at den kun går videre hvis der er kommet en variabel ved navn submit.
Prøv at ændre din knap til:
<input type="submit" value="Tilmeld" name="submit">
Avatar billede nickern Nybegynder
31. december 2006 - 14:08 #14
SÅ fungerer det:D Tak for hjælpen og godt nytår:)
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

Seneste spørgsmål Seneste aktivitet
I går 10:21 Ny printer, men hvilken Af mort1 i Printere
13/0819:41 USB på Linux Af Uvanga i Linux
12/0818:26 Hvilken type mus Af mort1 i PC
11/0813:21 ms Forms Af leahcim i Andet software
10/0821:30 Blokeret på Snapchat? Af LineP i Chat & Messaging