Seite 1 von 2

eMailadressen in txt exportieren

Verfasst: 21.12.2004 20:58
von Xelos
Hallo phpBB Gemeinde,
ich würde gerne ein Programm nutzen, um Newsletter für das Forum zu versenden.
Leider bin ich mit php und Datenbankabfragen noch nicht sehr weit, so dass ich auf eure Hilfe hoffe.

Ich würde gerne ein Script haben/machen, bei dem alle eMailadressen aus der phpBB Datenbank in eine Textdatei geschrieben werden.

z.B.
abc@cdf.de
ert@aod.com
rtg@sfsf.net
usw...

Könnt ihr mir einen Beispielcode geben?

Grüße
Xelos

Re: eMailadressen in txt exportieren

Verfasst: 21.12.2004 23:56
von Blutgerinsel
Xelos hat geschrieben: Könnt ihr mir einen Beispielcode geben?
Auf der einen Seite willst du einen Beispielcode haben mit dem du dich vermutlich nicht auseinandersetzen wirst und auf der anderen Seite möchtest du das selber machen und dabei lernen ?

Es gibt bei google Dutzende Scripte die teilweise schon furchtbar sind....

www.schattenbaum.net da bekommst du eine Informationen für die Basics......

Zum Thema kann ich nur eines sagen das du die Schleife nur bröckelweise abarbeiten solltest, da dies sehr Leistungsanfordernd ist. Und wenn du keinen Root Server besitzt behält sich jeder Hoster vor den Prozess zu killen wenn andere virtuelle Server hängen.

Verfasst: 22.12.2004 00:12
von Xelos
Hallo Blutgerinsel,
da unterstellst du mir was falsches. Ich setze mich mit allem auseinander, was ich machen will.
Leider geht es halt nicht immer so schnell, dass ich es dann kann, wenn ich es brauche.

Könnte es hiermit funktionieren?

Code: Alles auswählen

<?
  mysql_connect("localhost",  "username","passwort");
  mysql_select_db("Datenbank");
  $ergebnis = mysql_query("SELECT email FROM user");
  $datei = fopen("email.txt","w");
  fwrite($datei, $ergebnis);
  fclose($datei);
?>
Gruß
Xelos

PS: Einen Rootserver habe ich.

Verfasst: 22.12.2004 00:53
von Pyramide
Xelos hat geschrieben:Könnte es hiermit funktionieren?

Code: Alles auswählen

$ergebnis = mysql_query("SELECT email FROM user");
fwrite($datei, $ergebnis);
Nicht ganz. mysql_query gibt nur eine Resource zurück, welches du dann als Parameter an Funktionen wie [php:mysql_fetch_array], [php:mysql_num_rows], [php:mysql_result] o.ä. übergibst.

Verfasst: 22.12.2004 01:36
von QCO

Code: Alles auswählen

<?
  mysql_connect("localhost",  "username","passwort");
  mysql_select_db("Datenbank");
  $ergebnis = mysql_query("SELECT email FROM user");
   $text = '';
   while($zeile = mysql_fetch_array($ergebnis) )
   {
     $text .= $zeile['email'] . "\n";
   }
  $datei = fopen("email.txt","w");
  fwrite($datei, $text);
  fclose($datei);
?>

Verfasst: 22.12.2004 02:02
von Blutgerinsel
hab da irgendwie was überlesen in meiner Unkonzentriertheit aber.....

das von @QVO ergänzte Script beherbergt kein Fehlerhandling.....

die Mysql Funktionen daher am besten ein @ davor stellen und hinten ein or die (mysql_error()) anhängen. Damit bricht das Script ab was logisch ist weil der Rest nicht gehen kann.

Gleiches gilt bei fopen wenn der Filehandle bzw. der übergebene Pfad üngültig ist wird auch hier ein Fehler auftreten.....

daher die Variable $datei nach einem false abfragen oder besser zuvor den Pfad prüfen mit is_writeable(); ob man überhaupt speichern kann...

BTW: Standardzuweisung bzw. sichersteller der Initparameter
Randbemerkung:
indem Fall text='' wäre unset(); ein geeignetes PHP Mittel.....

Verfasst: 22.12.2004 02:07
von QCO
Also Fehler abfangen erschien mir hier nicht nötig. Er will doch nur einmal die Liste exportieren (-> Liste nicht leer) und wenn eine Fehlermeldung kommt, kann er das Skript anpassen. Aber das ist nicht das Problem...
Meine Frage:
BTW: Standardzuweisung bzw. sichersteller der Initparameter
Randbemerkung:
indem Fall text='' wäre unset(); ein geeignetes PHP Mittel.....
Was willst du mir damit sagen?

Verfasst: 22.12.2004 10:25
von Xelos
Danke für eure Hilfe!!!! Ohne hätte es nicht geklappt.

So sieht das fertige und funktionierende Script aus:

Code: Alles auswählen

<?
// eMailadressen aus phpBB Tabelle exportieren
  mysql_connect("localhost(Server)",  "Username","Passwort"); //Datenbank connect
  mysql_select_db("Datenbank"); //Datenbank auswählen
  $ergebnis = mysql_query("SELECT user_email FROM phpbb_users");
 		if (!$ergebnis) {
   						echo 'Fehler: ' . mysql_error();
  						exit;
						}
  $datei = fopen("email.txt","w");
   		while ($row = mysql_fetch_array($ergebnis, MYSQL_NUM)) {
   					if ($row[0]!="") { //Prüfen ob eMailfeld leer ist						
						printf ($row[0] . "<br>"); //Ausgabe auf Bildschirm
						fwrite($datei, $row[0]. "\n"); //Ausgabe in Datei
						}
		}
  fclose($datei);
echo "<br><b>Fertig</b>";
 ?>
Gruß
Xelos

Verfasst: 22.12.2004 15:48
von Blutgerinsel
QCO hat geschrieben:Also Fehler abfangen erschien mir hier nicht nötig. Er will doch nur einmal die Liste exportieren (-> Liste nicht leer) und wenn eine Fehlermeldung kommt, kann er das Skript anpassen. Aber das ist nicht das Problem...
Meine Frage:
BTW: Standardzuweisung bzw. sichersteller der Initparameter
Randbemerkung:
indem Fall text='' wäre unset(); ein geeignetes PHP Mittel.....
Was willst du mir damit sagen?
http://de2.php.net/manual/de/function.unset.php

BTW: Ich halte nichts von fehlendem Fehlerhandling, da ich zu 100% von Bullshit Daten ausgehe, da man an einen gesunden Menschenverstand heutzutage sich nicht mehr verlassen kann so traurig das auch ist... :roll:

Verfasst: 22.12.2004 23:13
von QCO
Ich weiß was unset macht, aber was soll das hier bringen?
Meine Variablen sind initialisiert, warum sollte ich mit unset rumwerkeln?