email uit txt in DB
Ik mijn emailadressen uit bestand.txt in de database plaatsen.
Nu heb ik onderstaand script gemaakt:
Code (php)
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
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
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
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
<?php
include("config.php");
// Mail Checker
function checkmail($mail)
{
$email_host = explode("@", $mail);
$email_host = $email_host['1'];
$email_resolved = gethostbyname($email_host);
if ($email_resolved != $email_host && eregi("^[0-9a-z]([-_.~]?[0-9a-z])*@[0-9a-z]([-.]?[0-9a-z])*\\.[a-z]{2,4}$",$mail))
$valid = 1;
return $valid;
}
foreach( file( 'bestand.txt', FILE_SKIP_EMPTY_LINES | FILE_IGNORE_NEW_LINES ) as $line )
{
$split = explode(";",$line);
$split2 = str_replace(' ','', $split);
foreach($split2 AS $email){
if(checkmail($email) == 0) {
$emailfout .= $email;
}
else {
$emailgoed .= $email;
}
//query
$query = "INSERT INTO email (emailadres) VALUES ('$emailgoed')";
//echo $query;
mysql_query($query) or die(mysql_error());
sleep(2);
}
}
?>
include("config.php");
// Mail Checker
function checkmail($mail)
{
$email_host = explode("@", $mail);
$email_host = $email_host['1'];
$email_resolved = gethostbyname($email_host);
if ($email_resolved != $email_host && eregi("^[0-9a-z]([-_.~]?[0-9a-z])*@[0-9a-z]([-.]?[0-9a-z])*\\.[a-z]{2,4}$",$mail))
$valid = 1;
return $valid;
}
foreach( file( 'bestand.txt', FILE_SKIP_EMPTY_LINES | FILE_IGNORE_NEW_LINES ) as $line )
{
$split = explode(";",$line);
$split2 = str_replace(' ','', $split);
foreach($split2 AS $email){
if(checkmail($email) == 0) {
$emailfout .= $email;
}
else {
$emailgoed .= $email;
}
//query
$query = "INSERT INTO email (emailadres) VALUES ('$emailgoed')";
//echo $query;
mysql_query($query) or die(mysql_error());
sleep(2);
}
}
?>
Alleen wat gebeurt er nu.. hij zet alle emailadressen achter elkaar en gooit ze de database in.
Dus ik krijg honderden rijen met in elke rij alle emailadressen.
Dit is niet de bedoeling.
De emailadressen moeten uit elkaar getrokken worden en dus een voor een in een rij in de database komen staan.
Ik snap niet hoe ik dat moet doen, met welke functie..
Iemand die me de goede richting in kan sturen?
str_replace teruggeeft. Dat is een String en geen array. Je wil de str_replace bewerking binnen de foreach loop hebben. dus
edit:
Je maakt nog een tweede fout, wanneer een email goed is voeg je hem toe aan $emailgoed en deze gebruik je als input in je query. $emailgoed wordt dus een hele lange string met alle email adressen.
Kijk is goed naar wat Code (php)
1
2
3
4
5
6
2
3
4
5
6
<?php
foreach($split as $email) {
$email = str_replace(" ", "", $email);
//INSERT INTO db
}
?>
foreach($split as $email) {
$email = str_replace(" ", "", $email);
//INSERT INTO db
}
?>
edit:
Je maakt nog een tweede fout, wanneer een email goed is voeg je hem toe aan $emailgoed en deze gebruik je als input in je query. $emailgoed wordt dus een hele lange string met alle email adressen.
Gewijzigd op 01/01/1970 01:00:00 door Jan geen
hartelijk bedankt, dat had ik dus niet gezien, het werkt nu!