Contact met nieuwsbrief checkbox

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

DeZond

DeZond

30/04/2008 09:48:00
Quote Anchor link
Ik ben op zoek naar een scriptje die nakijkt of de nieuwsbrief checkbox van een contactformulier is aangevinkt; dan kijkt of het emailadres reeds niet in de db zit.
Indien niet; voegt hij het toe in de db.

Iemand een idee of een leuk scriptje vanwaar ik kan vertrekken.
 
PHP hulp

PHP hulp

18/05/2024 17:11:17
 
Jan Koehoorn

Jan Koehoorn

30/04/2008 10:13:00
Quote Anchor link
Niet getest:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
<?php
    ini_set ('display_errors', 1);
    error_reporting (E_ALL | E_STRICT);
    $errs = array (); // deze moet je zelf vullen met eventuele errors
    $msgs = array ();
    if ($_SERVER['REQUEST_METHOD'] == 'POST') {
        if (isset ($_POST['nieuwsbrief'])) {
            if (isset ($_POST['email'])) {
                $sql = "
                    SELECT COUNT(id) AS aantal
                    FROM tabelnaam
                    WHERE email = '"
. mysql_real_escape_string ($_POST['email']) . "'
                    "
;
                if ($res = mysql_query ($sql) && mysql_num_rows ($res) == 0) {
                    $sql_insert = "
                        INSERT INTO tabelnaam
                        (
                            email
                        )
                        VALUES
                        (
                            '"
. mysql_real_escape_string ($_POST['email']) . "'
                        )
                        "
;
                    if (mysql_query ($sql_insert)) {
                        if (mysql_affected_rows () == 1) {
                            array_push ($msgs, 'E-mail adres is toegevoegd');
                        }
                    }
                }
            }
        }
    }

?>
Gewijzigd op 01/01/1970 01:00:00 door Jan Koehoorn
 
DeZond

DeZond

30/04/2008 10:43:00
Quote Anchor link
Dag Jan; ik ben al een flink eind op weg nu; op z'n dreamweavers. In uw voorbeeld zie ik arrays; daar ben ik nog een leek in.
Ik heb volgend ding al ineen kunnen steken, maar het wringt enkel nog bij de insert. Vermoedelijk verkeerd genoteerd: trial en error tot het is opgelost.
Vind je het script ok ?

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?php
if(isset($_POST['nieuwsbrief'])) {
  $loginUsername = $_POST['uemail'];
  $LoginRS__query = "SELECT email FROM tblnieuwsgebruiker WHERE email='" . $loginUsername . "'";
  mysql_select_db($dbxxx, $dconnxx);
  $LoginRS=mysql_query($LoginRS__query, $dconnxx) or die(mysql_error());
  $loginFoundUser = mysql_num_rows($LoginRS);

  //if there is now row in the database, the email was not found - can add email now
  if (empty($loginFoundUser)) {    
  $datumm = date('Y-m-d H:i:s');
  $emaill = $_POST['uemail'];
  $naamm = $_POST['uname'];
  $insertSQL = sprintf("INSERT INTO tblnieuwsgebruiker naam, email, datum VALUES '%s','%s','%s'", $naamm, $emaill, $datumm);
  echo $insertSQL;
  mysql_select_db($dbxxx, $dconnxx);
  $Result1 = mysql_query($insertSQL, $dconnxx) or die(mysql_error());
  }
}

?>
 
Jan Koehoorn

Jan Koehoorn

30/04/2008 10:49:00
Quote Anchor link
Hier mijn op/aanmerkingen. Kijk nog even goed naar mijn eerdere voorbeeld ;-)
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
<?php
    if(isset($_POST['nieuwsbrief'])) {
        // waarom de ene variabele in de andere kopieren?
        $loginUsername = $_POST['uemail'];
        // kijk uit voor SQL injection; gebruik mysql_real_escape_string
        $LoginRS__query = "SELECT email FROM tblnieuwsgebruiker WHERE email='" . $loginUsername . "'";
        // connecten/selecten van je DB doe je meestal aan het begin van je script
        mysql_select_db($dbxxx, $dconnxx);
        $LoginRS=mysql_query($LoginRS__query, $dconnxx) or die(mysql_error());
        $loginFoundUser = mysql_num_rows($LoginRS);
        
        //if there is now row in the database, the email was not found - can add email now
        if (empty($loginFoundUser)) {    
            // deze is niet nodig. Dat kun je met NOW() doen in je INSERT query
            $datumm = date('Y-m-d H:i:s');
            // waarom de ene variabele in de andere kopieren?
            $emaill = $_POST['uemail'];
            $naamm = $_POST['uname'];
            // kijk uit voor SQL injection; gebruik mysql_real_escape_string
            $insertSQL = sprintf("INSERT INTO tblnieuwsgebruiker naam, email, datum VALUES '%s','%s','%s'", $naamm, $emaill, $datumm);
            echo $insertSQL;
            // die select heb je al gedaan, dus is hier niet meer nodig
            mysql_select_db($dbxxx, $dconnxx);
            $Result1 = mysql_query($insertSQL, $dconnxx) or die(mysql_error());
        }
    }

?>
Gewijzigd op 01/01/1970 01:00:00 door Jan Koehoorn
 
Jesper Diovo

Jesper Diovo

30/04/2008 12:12:00
Quote Anchor link
Jan... geen or die() toestaan! Dat is nogal lelijk en niet bezoekervriendelijk ;-).
Wél bezoekervriendelijk:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
<?php
$inResult
= mysql_query($insertSQL, $dconnxx);
if($inResult) {
  // goed
} else {
  echo "Query ging fout: ".$insertSQL."<br />";
  echo "Fout: ".mysql_error();
}

?>
 
DeZond

DeZond

30/04/2008 12:34:00
Quote Anchor link
@djemo: Die "die" was de mijne ! :-))

Jan, kan het zijn dat volgende lijn in uw scriptje niet kan:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?
if ($res = mysql_query ($sql) && mysql_num_rows ($res) == 0) {
?>


Ik heb dit
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?
$res
= mysql_query($sql);
$num_rows = mysql_num_rows($res);
if ($num_rows == 0) {
?>


Dan lukt de insert wel, maar geeft hij een foutmelding weer:
Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /home/kasadv/public_html/nl/SendMail_contact.php on line 8

Voor de rest is het nog niet gans werkende, omdat ik het ook moet implementeren tussen het contactformulier en die validatie. Maar ik stormbrain verder.
 
Jesper Diovo

Jesper Diovo

30/04/2008 12:36:00
Quote Anchor link
Je kunt geen records tellen bij een INSERT-query. Dat geldt alleen bij een SELECT-query. Bovendien controleert jouw stukje niet of de query wel of niet gelukt is ;-).
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.