van dbase naar .xls en ok massmail versturen

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Elian degroot

elian degroot

03/09/2015 17:30:23
Quote Anchor link
Beste,

het zijn hier wel 2 vragen.
Wat ik wilde weten is het volgende
bestaat er een mogelijkheid om met de uitkomst van een sql dit naar exel file te importen?
Zoja, hoe, kan iemand me helpen?

Mijn 2de vraag:
ik zou een massmail met php willen versturen.
Daar heb ik geen ervaring mee dus kan iemand me tippen hoe ik dit moet aanpakken?



Met dank
 
PHP hulp

PHP hulp

27/12/2024 02:06:35
 
Bo Ter Ham

Bo Ter Ham

03/09/2015 18:06:20
Quote Anchor link
1.) Bedoel je met PHP waarden ophalen uit de database en dan in een excel bestand zetten? dan zul je een externe library moeten gebruiken zoals https://phpexcel.codeplex.com/, maar je kunt beter gewoon in PHPMyAdmin naar exporteren gaan en dan "CSV voor MS Excel" exporteren.

2.) Belangrijk is zo'n script is dat:
- Je een library gebruikt zoals SwiftMailer of PHPMailer, deze libraries zorgen ervoor dat de "headers" van je emails meteen goed staan (waardoor de kans dat de emails aankomen en niet in de spambox terecht komen veel groter is).
- Je niet in één keer 10.000 mails gaat versturen, het kan best zijn dat je dat de mails dan worden aangemerkt als spam.
 

03/09/2015 20:28:37
Quote Anchor link
1.) Het Excel 2007+ bestandsformaat is net als met andere Microsoft Office formaten gezipte XML-bestanden. Je kunt een XLSX-bestand gewoon de extentie .zip geven en dan openen. De opmaak van de XML-bestanden is in SpreadsheetML-vorm. Je kunt die XLSX-bestanden dus ook met PHP openen, en vervolgens de XML manipuleren.

Afhankelijk van het gewenste resultaat kan SpreadsheetML nog wel eens een tijdrovende bezigheid zijn. Je kunt het sterk versimpelen door een template aan te maken in Excel, en dan via XPath de inhoud van alle relevante XML-nodes vervangen met een soort %VARIABELENAAM%. En er zijn ook PHP libraries als PHPExcel die het schrijven van Excel files versimpelen.



Toevoeging op 03/09/2015 20:34:38:

2.) Mass mailen is een ding apart, er zijn nogal wat zaken waar je rekening mee moet houden.
Er zijn wettelijke beperkingen, technische beperkingen, ed.
En je moet niet vergeten om als je dan een script hebt gemaakt, het eerst te testen tegen een dummy-ontvanger. Anders loop je het risico om direct gebeld te worden met boze reacties, door een flink deel van je e-mailbestand, met misschien nog een schadeclaim van je hostingpartij die dat geen fair use vindt, etc.
Dus in dit geval zou je het echt beter kunnen uitbesteden. Tenzij je denkt het structureel vaker te gaan doen, dan is het de tijdsinvestering waard.
 
Johan K

Johan K

03/09/2015 21:53:11
Quote Anchor link
Elian degroot op 03/09/2015 17:30:23:
Beste,

> het zijn hier wel 2 vragen.
..

Ik raad aan om het lekker simpel te houden en dit via phpMyAdmin een database dump te laten uitvoeren in jouw gewenste format. Als je specifieker wilt zijn, moet je je inderdaad zoals boven vermeld om een bibliotheek zoals de "php-excel.class.php" maar dat vereist de nodige PHP kennis. Je kan ook dit script gebruiken
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
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
#http://stackoverflow.com/questions/15699301/export-mysql-data-to-excel-in-php
<?php
/*******EDIT LINES 3-8*******/
$DB_Server = "localhost"; //MySQL Server    
$DB_Username = "username"; //MySQL Username    
$DB_Password = "password";             //MySQL Password    
$DB_DBName = "databasename";         //MySQL Database Name  
$DB_TBLName = "tablename"; //MySQL Table Name  
$filename = "excelfilename";         //File Name
/*******YOU DO NOT NEED TO EDIT ANYTHING BELOW THIS LINE*******/    
//create MySQL connection  

$sql = "Select * from $DB_TBLName";
$Connect = @mysql_connect($DB_Server, $DB_Username, $DB_Password) or die("Couldn't connect to MySQL:<br>" . mysql_error() . "<br>" . mysql_errno());
//select database  
$Db = @mysql_select_db($DB_DBName, $Connect) or die("Couldn't select database:<br>" . mysql_error(). "<br>" . mysql_errno());  
//execute query
$result = @mysql_query($sql,$Connect) or die("Couldn't execute query:<br>" . mysql_error(). "<br>" . mysql_errno());    
$file_ending = "xls";
//header info for browser
header("Content-Type: application/xls");    
header("Content-Disposition: attachment; filename=$filename.xls");  
header("Pragma: no-cache");
header("Expires: 0");
/*******Start of Formatting for Excel*******/  
//define separator (defines columns in excel & tabs in word)

$sep = "\t"; //tabbed character
//start of printing column names as names of MySQL fields

for ($i = 0; $i < mysql_num_fields($result); $i++) {
echo mysql_field_name($result,$i) . "\t";
}

print("\n");    
//end of printing column names  
//start while loop to get data

    while($row = mysql_fetch_row($result))
    {

        $schema_insert = "";
        for($j=0; $j<mysql_num_fields($result);$j++)
        {

            if(!isset($row[$j]))
                $schema_insert .= "NULL".$sep;
            elseif ($row[$j] != "")
                $schema_insert .= "$row[$j]".$sep;
            else
                $schema_insert .= "".$sep;
        }

        $schema_insert = str_replace($sep."$", "", $schema_insert);
        $schema_insert = preg_replace("/\r\n|\n\r|\n|\r/", " ", $schema_insert);
        $schema_insert .= "\t";
        print(trim($schema_insert));
        print "\n";
    }
  
?>

Deze kan je dan opslaan in dump.php of zoiets en als je dan de pagina bezoekt krijg je een downloadbare xls bestand voorgeschoteld. Deze zou alleen achter slot en grendel moeten gaan van dit is gewoon een hefige data leak.

Voor twee, dit hangt ervan af waar de Mail server zich bevind. Als het jouw lokale server is, word vrijwel elke email die je stuurt als spam gezien. Je kan ook de mail server van je provider gebruiken, maar daar staat vaak een limiet op. Je kan ook via de SMTP server van jouw email provider gebruiken om als "jouw email" de emails te versturen. Je kan ook een mail server huren, deze zijn gecertificeerd versturen en de verzonden emails worden niet direct gemarkeerd als spam. Deze rekenen vaak 10k emails p/month for $#.##

voor de rest, het zelfde als Bo Ter Ham zei over SwiftMailer & PHPMailer (en dan raad ik PHPMailer aan)
Gewijzigd op 03/09/2015 22:38:45 door Johan K
 

03/09/2015 21:55:28
Quote Anchor link
Mijn antwoord voor het exporteren van SQL naar XLSX is wel wat ingewikkeld voor een éénmalige actie, gezien de vraag kan je idd beter gaan voor phpMyAdmin.
 
Elian degroot

elian degroot

04/09/2015 09:31:24
Quote Anchor link
ok mensen bedankt voor de tips, ik ga het uitproberen.
Met massmail bedoel ik eigenlijk +- 100 mails.
Maar met de phpmailer lukt dit wel.

Met dank,

Elian
Gewijzigd op 04/09/2015 09:34:39 door elian degroot
 



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.