Antworten auf deine Fragen:
Neues Thema erstellen

Antworten zum Thema „Gelöst:mails von eine datenbank in eine andere kopieren“

B

balters

Guest

Hallo,

passt nicht ganz zu php aber ich habe gesehen das Ihr ein ähnliches Problem Gelöst habt.

Ich würde gerne die Mailadressen aus einer Datenbank in eine andere kopieren (Gleicher Server gleiche Zugangsdaten). Der Inhalt der Zieldatenbank soll dabei gelöscht werden. So das ich die Datenbank 2 mit der Quelldatenbank Update.

Meine Überlegung ist nun das auf der Shell Ebene zu machen oder über ein PHP Script. Leider habe ich von beiden nicht genügen Ahnung.

Hier mal die Datenbankn/Felder um die es sich handelt:

Quelldatenbank: usr_web5_5
Tabelle: tt_address
Felder: pid,email,name
es sollen nur die Mailadressen übertragen werden die den pid=9 haben. Es gibt auch Mailadressen mit dem pid 29 und 35

Zieldatenbank: usr_web5_6
Tabelle: nletter_entries
Felder: mail,name

Wie schon gesagt die Zieldatenbank sollte vor dem Update gelöscht werden. Es handelt sich zur Zeit um 93.000 Mailadressen.

Ich würde mich freuen wenn jemand helfen könnte.

mfg
 

saila

Moderatorle

Hi,

da gibt es mehrere Möglichkeiten. Entweder mit einem Datenbankadministrationstool wie z.B. phpMyAdmin oder indem du die Tabelle ausliest, in welcher die Daten liegen und die die neue einspielst.

Die Frage ist nur, warum willst du die Zieltabelle zuvor löschen bzw. die gesamte Datenbank? Bleibt der Name für die neue Zieltabelle gleich? Oder gibt es einen neuen Namen?

Du musst nicht jedesmal eine Datenbank löschen. Es kann in einer Datenbank beide Tabellen beinhalten. In der Regel gibt es mind. 100 MB für je eine Datenbank von den Providern.
 

B_B

ZIELGRUPPE SENIOREN

Der einfachste Weg ist das kopieren der DB.
Zum Kopieren der Datenbank verwendest du am besten phpMyAdmin. Als erstes exportierst du die Datenbank mit der Funktion 'Exportieren'. Wichtig ist, dass du Struktur und Daten exportierst, i.d.R. solltest du zusätzlich die Optionen 'Vollständige 'INSERT's' und 'Erweiterte 'INSERT's' aktivieren. Wenn du noch 'Senden' aktivierst, erhältst du die Daten gleich als sql-Datei, die du für den Import in die neue DB verwenden kannst.
Nachdem die Daten exportiert wurden, müssen sie auf dem neuen Server importiert werden. Dazu ist dann die Option 'SQL' von phpMyAdmin zuständig. Dort musst du angeben, dass du die Daten aus einer Datei verwenden willst und mit der Schaltfläche 'Durchsuchen' die vorher runtergeladene sql-Datei auswählen. Mit OK startest du den Import-Vorgang.

Viel Spass
BB

//Edit

Sollte der Datenbestand zu gross für das Importieren per phpMyAdmin sein, empfehle ich dir das Script BigDump. http://www.ozerov.de/bigdump
 

saila

Moderatorle

wer lesen kann ist klar im Vorteil...... und Deine unqualifizierten Kommentare, wie ich schon bei einigen anderen Thread's lesen konnte, kannst Du dir ersparen. Das ist weder Nebensache, noch eine Platzfrage.
 

r3nt5ch3r

~ Allround pG ~

es spielt doch keine rolle wieso ers macht? das geht doch nur ihn was an. oder nenn mir ein grund wieso du das wissen möchtest? ja und eine datenbank kann voll werden!

"meine unqualifizierten Kommentare" helfen manchen usern weiter und manchen nicht. meistens sind die, die sich besser/netter/verständlicher, die vielleicht sogar das handbuch gelesen haben, ausdrücken hier im vorteil.
 
B

Benni_f

Guest

Ein Kommilitone hatte das selbe Problem. 2 DBs die mit den selben daten arbeiten mussten. Folgendes szenario:
DB 1 wird den ganzen Tag über verwendet(von mitarbeitern meinetwegen). Daten in dieser DB werden also ständig verändert.
Um 17:00 ist da Feierabend. In DB 1 sind die Daten des ganzen Tages und werden bis zum nächsten Tag nicht mehr angerührt.
Nun werden die gewünschten Daten(bei dir die emails) per script aus DB 1 nach DB 2 gebracht.

Wie hat er das gelöst?!?
Nun ja ich weiß noch aus dem Vortrag das er das über CSV gelöst hatte. Also er holt jeden Tag per Script die gewünschten Daten und scheibt sie in die andere DB.
Da ich weiß das er ein C freak ist bin ich mir sicher das er das auch in C gelöst hat. Er holt also per C programm die Daten und speichert sie in einer CSV datei. Das Script/Programm muss also erst aus DB1 Exportieren, in CSV Datei, und dann in DB 2 ,aus CSV Datei,Importieren.

Diese Methode Arbeitet wundervoll und ist im Einsatz. Leider habe ich das selber noch nicht gemacht und weiß nicht wirklich wie man das auf "shell" (ich denke du meinst ein Linux script) macht. Aber ich habe hier ein Paar Links für dich die dir evntl. weiter helfen.

Guter Artikel zum Thema WAS MACHT CSV
http://www.aspheute.com/artikel/20010605.htm

CSV bei Wikipedia
http://www.aspheute.com/artikel/20010605.htm

CSV PHPscript für Import in mysql
http://www.stadtaus.com/php_scripts/csv_to_mysql/ueber_das_csv_to_mysql_script.php

der CSV import to mysql skill link
http://dev.mysql.com/doc/refman/5.0/en/load-data.html

PHP-Class für CSV Manipulation



Ich habe Michi angeschrieben und um seine Lösung gebeten. Er nutzte Allerdings PostgreSQL als Datenbank. Wann er mir Antwortet kann ich dir nicht sagen. Ich sehe ihn Persönlich erst Montag wieder in der UNI.

Ich habe aber ein wenig Zeit und versuch mich mal dran, aus reinem Interesse da ich auch 2 server habe und da immer per PHPmyadmin nen export -> import zum saven und zur Syncronisation mache. Warum nicht täglich automatisch?!?
Wenn ich ne Lösung finde Poste ich die....kanns aber nicht versprechen da vieeeel zu tun..
cu


[edit]
Ich habe mich mal bei gemacht und es über besagte CSV Datei gemacht...

[php:1:d310a9a75d]
<?php

/**
*
*
* @version $0.1
* @copyright 2006
*/


$host = "localhost";
$user ="root";
$pwd = "root";
$db = "forum";

if($connect = mysql_connect($host,$user,$pwd)) {
mysql_select_db($db);

}
else die("Could not connect");

if(isset($_GET['export']) && $_GET['export'] == 'on') {
$sql = "SELECT user_id , user_email
INTO OUTFILE 'c:/temp/test.csv'
FIELDS
TERMINATED BY ';'
OPTIONALLY ENCLOSED BY '\"'
FROM forum_users ";

if(!$result = mysql_query($sql)) {
die("Could not query");
}
}
else {
echo '<html><body>
Exportieren???';
}


$db2 = 'email';
if(isset($_GET['import'])&& $_GET['import']== 'on') {
if($connect = mysql_connect($host,$user,$pwd)) {
mysql_select_db($db2);
}
else die("Could not connect");
$sql = "LOAD DATA
LOCAL
INFILE 'c:/temp/test.csv'
REPLACE
INTO TABLE user
FIELDS
TERMINATED BY ';'
OPTIONALLY ENCLOSED BY '\"'";
if(!$result = mysql_query($sql)) {
die ("Could Not INSERT");
}

mysql_close();
}
else {
echo '
Importieren???</html>';
}
?>
[/php:1:d310a9a75d]


Kurz erklärt. Mittels select [spaltenNamen] into outfile [Pfad] exportierst du die gewünschten Spalten. Bei mir ist das ne User_id und die email. Mittels FILD TERMINAT BY legst du fest wie die Spalten von einander getrennt werden. Fertig ist die CSV Datei.
Problem hier ist jetzt das sie beim nächsten versuch nicht da sein darf. Aber das kann man regeln.

Nun wieder rein. Dazu müssen die erforderliche Structur in der neuen Tablle vorhanden sein. Sonst funktioniert das nicht. Dazu Kann der SQL Befehl LOAD DATA LOCAL INFILE genutzt werden. Der Rest ist wie bem Export. Und das wars auch schon.

Wenn du das jetzt noch ein wenig verfeinerst kann das ganz nützlich sein. Falls du fragen oder beschwerden hast ... immer HER cu BF
 
B

balters

Guest

Hallo erst mal danke für die menge Hilfe :D

@saila
da gibt es mehrere Möglichkeiten. Entweder mit einem Datenbankadministrationstool wie z.B. phpMyAdmin oder indem du die Tabelle ausliest, in welcher die Daten liegen und die die neue einspielst.

Die Frage ist nur, warum willst du die Zieltabelle zuvor löschen bzw. die gesamte Datenbank? Bleibt der Name für die neue Zieltabelle gleich? Oder gibt es einen neuen Namen?
Ich möcht den Tabelle nicht löschen sondern lehren damit die mit den Daten aus der Quelltabelle gefüllt wird. Da die Struckturen anders sind kann ich leider nicht den gesammten Inhalt einfügen sondern nur einzelnen Felder.

@B_B
phpMyAdmin kenne ich sehr gut ich möchte aber nicht die ganze Tabelle auf einen anderen Server spielen sondern nur einzelne Teile innerhalb eines Servers.

@Benni_f
Wau! Das finde ich doch mal sauber. Sollte das den in meinem Fall dann so aussehen?:

[php:1:8903058800]<?php

/**
*
*
* @version $0.1
* @copyright 2006
*/


$host = "localhost";
$user ="web5";
$pwd = "sage ich nicht";
$db = "usr_web5_5";

if($connect = mysql_connect($host,$user,$pwd)) {
mysql_select_db($db);

}
else die("Could not connect");

if(isset($_GET['export']) && $_GET['export'] == 'on') {
$sql = "SELECT pid, email, name
INTO OUTFILE '/home/www/web5/backup/usr_web5_5.csv'
FIELDS
TERMINATED BY ';'
OPTIONALLY ENCLOSED BY '\"'
FROM forum_users ";

if(!$result = mysql_query($sql)) {
die("Could not query");
}
}
else {
echo '<html><body>
Exportieren???';
}


$db2 = "usr_web5_6";
if(isset($_GET['import'])&& $_GET['import']== 'on') {
if($connect = mysql_connect($host,$user,$pwd)) {
mysql_select_db($db2);
}
else die("Could not connect");
$sql = "LOAD DATA
LOCAL
INFILE '/home/www/web5/backup/usr_web5_5.csv'
REPLACE
INTO TABLE user
FIELDS
TERMINATED BY ';'
OPTIONALLY ENCLOSED BY '\"'";
if(!$result = mysql_query($db2)) {
die ("Could Not INSERT");
}

mysql_close();
}
else {
echo '
Importieren???</html>';
}
?>[/php:1:8903058800]

Ein paar Angaben sind mir noch unklar:
Wo gebe ich den genau an das er die folgenden Daten exportiert?:

Tabelle: tt_address <--- wo mache ich die Angabe
Felder: pid,email,name <--- Habe ich so weit übernommen

Dann ist ja auch irgendwo anzugeben das er die Daten folgendermassen einfügt:

Zieldatenbank: usr_web5_6 <-- Habe ich übernommen
Tabelle: nletter_entries
Felder: mail,name

Rufe ich das Script dann per http auf oder über die linux Shell?

Ich hoffe ich stelle mich nicht zu blöd an :)

mfg
 

NicoB

Hat es drauf

Ich nehme nicht an, dass du via Shell ein PHP-Script ausführen kannst ;-)

Also mach's per http und am besten mit einem täglichen Cronjob.
Wenn's shell-basierend sein soll, würde ich eine Bash oder Perl-Datei als Cronjob direkt in die crontab einfügen.
 
B

Benni_f

Guest

Ok das mit der Datenbank geht hier nicht so ganz deutlich hervor. Normalerweise verwende ich eine Klasse db die mir das alles ein wenig erleichtert.
Aber nun zu deinen Fragen. Der übersicht halber würde ich zwei Variable definieren die die Gewünschten Tabellennamen enthalten.
In deinem Fall wären das:

[php:1:721c291ae2]

$table_export = 'tt_adress';
$table_import = 'nletter_entries';

[/php:1:721c291ae2]

bei der Datenbank empfiehlt sich das selbe:

[php:1:721c291ae2]

$source_db = 'usr_web5_5';
$target_db = 'usr_web5_6';

[/php:1:721c291ae2]

Aber wo macht man denn nun die Angaben???
Ok zuerst musst du eine Verbindung zum Datenbankserver herstellen. Das ist wie gehabt:

[php:1:721c291ae2]
$host = "localhost";
$user ="web5";
$pwd = "sage ich nicht";

$connect = mysql_connect($host,$user,$pwd);
if(!connect) {
die("Keine Verbindung");
}

[/php:1:721c291ae2]

Wenn du das hast kannst du die Datenbank selecten. Zuerst die Quelldatenbank:

[php:1:721c291ae2]

mysql_select_db($source_db);

[/php:1:721c291ae2]

Nun bist du mit der Quelldatenbank verbunden und kannst Befehle an sie senden. Du möchtest aus der Tabelle $table_export gewisse Dinge in ein File speichern. Dafür gibt es den SQL Befehl SELECT...INTO OUTFILE.... und musst dementsprechend den SQL Befehl wie folgt an die Datenbank senden:

[php:1:721c291ae2]

$sql = "SELECT pid, email, name
INTO OUTFILE '/home/www/web5/backup/usr_web5_5.csv'
FIELDS
TERMINATED BY ';'
OPTIONALLY ENCLOSED BY '\"'
FROM $table_export ";
[/php:1:721c291ae2]

SELECT wählt die Felder aus (pid...) INTO OUTFILE definiert Pfad und Datei. FIELDS TERMINATED BY legt fest welche Trennzeichen zwichen den Felder in deiner Datei stehen sollen. Das sieht im Texteditor dann in etwa so aus 12;"benni_f@gmx.net". Es ist sehr wichtig das du beim auslesen die selben "TERMINATED BY" verwendest weil mysql sonst nicht weiß wo ein Feld endet. FROM definiert die Tabelle in der die Felder stehen. In deinem Fall $table_export.
Nun hast du erstmal die Datei in der deine gewünschten Daten stehen. Zum schluss solltest du die Verbindung zu dieser Datenbank schließen weil du ja zu einer anderen eine Verbindung aufbauen möchtest.

[php:1:721c291ae2]

mysql_close();

[/php:1:721c291ae2]
...schließt alle vorhandenen Verbindungen.
Also nächstes bauen wir zur Zieldatenbank eine neue auf. Dazu verwenden wir wieder die vorher definierte Variable $target_db für die Zieldatenbank:

[php:1:721c291ae2]

mysql_select_db($target_db);

[/php:1:721c291ae2]

nach dem wir die Verbindung haben müssen wir uns überlegen wie wir vorgehen möchten.
Entweder die Tabelle und Struktur existiert, oder wir bauen sie uns. Ich bin davon ausgegangen das sie existiert(ich habe sie vorher erstellt). Falls nur die Datenbank und die Tabelle existiert, allerdings die Felder noch nicht, musst du diese dann erstellen.
[php:1:721c291ae2]
$sql = "CREATE TABLE $import_table (
pid INT(11) NOT NULL AUTO_INCREMENT PRIMARY KEY,
mail VARCHAR(256) NOT NULL,
name VARCHAR(256) NOT NULL
);";
[/php:1:721c291ae2]
Damit hast du eine Tabelle erstellt in der die Felder die du exportiert hast belegt werden können.
Wenn du die Tabelle vorher leeren möchtest brauchst du folgenden SQL Befehl:

[php:1:721c291ae2]
$sql="TRUNCATE TABLE $import_table";
[/php:1:721c291ae2]

Tabelle erstellt und leer dann rein damit:
[php:1:721c291ae2]
$sql = "LOAD DATA LOCAL
INFILE '/home/www/web5/backup/usr_web5_5.csv'
REPLACE
INTO TABLE $import_table
FIELDS
TERMINATED BY ';'
OPTIONALLY ENCLOSED BY '\"'";
[/php:1:721c291ae2]
INTO TABLE gibt dir die Zieldatenbank an. In diesem Falle $import_table.
Das wars eigentlich schon ich schreibs dir zur Übersicht nochmal Komplett auf.

[php:1:721c291ae2]
<?php

/**
*
*
* @version $0.1
* @copyright 2006
*/


$host = "localhost";
$user ="web5";
$pwd = "sage ich nicht";

//Datenbankvariablen und Tabellennamen
$table_export = 'tt_adress';
$table_import = 'nletter_entries';
$source_db = 'usr_web5_5';
$target_db = 'usr_web5_6';

$connect = mysql_connect($host,$user,$pwd);
if(!connect) {
die("Keine Verbindung");
}

//connect zur ersten db
mysql_select_db($source_db);

if(isset($_GET['export']) && $_GET['export'] == 'on') {
$sql = "SELECT pid, email, name
INTO OUTFILE '/home/www/web5/backup/usr_web5_5.csv'
FIELDS
TERMINATED BY ';'
OPTIONALLY ENCLOSED BY '\"'
FROM $table_export ";

if(!$result = mysql_query($sql)) {
die("Could not query EXPORT");
}

}
else {

echo '<html><body>
Exportieren???';
}

if(isset($_GET['import'])&& $_GET['import']== 'on') {
//connect zur 2.Datenbank

mysql_select_db($target_db);

$sql = "CREATE TABLE IF NOT EXISTS ".$table_import."(
pid INT(11) NOT NULL AUTO_INCREMENT PRIMARY KEY,
mail VARCHAR(256) NOT NULL,
name VARCHAR(256) NOT NULL
)";
if(!$result = mysql_query($sql)) {
die("Could not CREATE TABLE");
}
$sql = "TRUNCATE TABLE ".$table_import;
if(!$result = mysql_query($sql)) {
die ("Could Not TRUNCATE");
}

$sql = "LOAD DATA LOCAL
INFILE '/home/www/web5/backup/usr_web5_5.csv'
REPLACE
INTO TABLE $table_import
FIELDS
TERMINATED BY ';'
OPTIONALLY ENCLOSED BY '\"'";

if(!$result = mysql_query($sql)) {
die ("Could Not INSERT");
}

mysql_close();
}
else {
echo '
Importieren???</html>';
}
?>
[/php:1:721c291ae2]

Sorry hat en wenig gedauert
 
B

balters

Guest

Sorry hat ein wenig gedauert

das glaube ich gerne :) danke erst mal da für!!

Leider scheint es noch nicht zu gehen. Ich bekomme, beim Exportieren, deine angelegte Fehlermeldung "Could not query EXPORT"

Ich habe die Angaben noch mal verglichen. Bis auf die
[php:1:ee15b2acc3]$table_export = 'tt_address';[/php:1:ee15b2acc3]
die mit zwei D geschrieben wird scheinen die Angaben zu stimmen. Ich habe eine lehre CSV in das Verzeichnis Kopiert und CHMOD 777 gesetzt.

Gibt es eine Möglichkeit den Fehler einzugrenzen?

mfg
 

saila

Moderatorle

Hi balters,

du solltest schon wissen, was du selbst schreibst. Du hast vom Löschen der Zieldatenbank gesprochen :p

Hier ein Vorschlag, welcher von dir ergänzt werden kann:
[php:1:cbe8440181]
<?php
// 1. DB usr_web5_5
$host = "localhost";// Host
$user ="root"; // DB-User
$pwd = "root"; // Passwort
$db = "forum"; // Datenbank

$con_a = mysql_connect($host,$user,$pwd) or die ("Zugangsdaten zur 1. DB sind nicht korrekt");
mysql_select_db($db) or die ("Verbindung konnte zur 1. DB nicht aufgebaut werden");

// Tabelle der Mailadressen auslesen
$con = mysql_query("SELECT * FROM tt_address ORDER BY pid");
// 1. DB-Verbindung schliessen.
mysql_close($con_a);


// 2. DB usr_web5_6
$hosta = "localhost"; // Host
$usera ="root"; // DB-User
$pwda = "root"; // Passwort
$dba = "forum"; // Datenbank

// Verbindungsaufbau 2. DB
$con_b = mysql_connect($hosta, $usera, $pwda) or die ("Zugangsdaten zur 2. DB sind nicht korrekt");
mysql_select_db($dba) or die ("Verbindung konnte zur 2. DB nicht aufgebaut werden");

// Vorhandene Tabelle löschen
mysql_query("DROP TABLE nletter_entries");
// Tabelle neu erstellen
mysql_query("CREATE TABLE
nletter_entries
(id int(10) NOT NULL DEFAULT'',
mail varchar(250) NOT NULL DEFAULT'',
name varchar(250) NOT NULL DEFAULT'',
PRIMARY KEY (id))
TYPE=MyISAM AUTO_INCREMENT");
// Daten aus 1. DB Anfrage in 2. DB-Tabelle spielen
while($a = mysql_fetch_object($con)) {
mysql_query("INSERT INTO nletter_entries (id,mail,name) VALUES ('','".$a->email."','".$a->name."')");
}

// Fedback holen, ob alle Daten enthalten sind
$co = mysql_query("SELECT * FROM nletter_entries ORDER BY id");
while($b = mysql_fetch_object($co)) {
echo $b->id." ".$b->email." ".$b->name."
";
}
// 2. DB schliessen.
mysql_close($con_b);
?>
[/php:1:cbe8440181]

Gut wäre Prüfungen einzubeziehen ;)
 
B

balters

Guest

du solltest schon wissen, was du selbst schreibst.

da hast du wohl recht :) sorry

Ich habe dein Script ein wenig angepasst und siehe da es geht :lol:

Danke schon mal dafür!

[php:1:736baf6712]<?php
// 1. DB usr_web5_5

$host = "localhost";// Host
$user ="web5"; // DB-User
$pwd = "******"; // Passwort
$db = "usr_web5_5"; // Datenbank

$con_a = mysql_connect($host,$user,$pwd) or die ("Zugangsdaten zur 1. DB sind nicht korrekt");
mysql_select_db($db) or die ("Verbindung konnte zur 1. DB nicht aufgebaut werden");

// Tabelle der Mailadressen auslesen
$con = mysql_query("SELECT * FROM tt_address ORDER BY pid");
// 1. DB-Verbindung schliessen.
mysql_close($con_a);


// 2. DB usr_web5_6
$hosta = "localhost"; // Host
$usera ="web5"; // DB-User
$pwda = "******"; // Passwort
$dba = "usr_web5_6"; // Datenbank

// Verbindungsaufbau 2. DB
$con_b = mysql_connect($hosta, $usera, $pwda) or die ("Zugangsdaten zur 2. DB sind nicht korrekt");
mysql_select_db($dba) or die ("Verbindung konnte zur 2. DB nicht aufgebaut werden");

// Vorhandene Tabelle löschen
mysql_query("DROP TABLE nletter_entries");
// Tabelle neu erstellen
mysql_query("create table nletter_entries(".
"id int(10) not null AUTO_INCREMENT PRIMARY KEY,".
"id_unique varchar(6) NOT NULL,".
"mail varchar(50) NOT NULL,".
"mail_id varchar(80) NOT NULL,".
"name varchar(50) NOT NULL,".
"regdate date DEFAULT '0000-00-00' NOT NULL,".
"regdate_t int(30) NOT NULL,".
"flag int(1) NOT NULL".
")")or error(__LINE__,__FILE__,"An error occurred while creating the table $prefix"."_entries", mysql_error());


// Daten aus 1. DB Anfrage in 2. DB-Tabelle spielen
while($a = mysql_fetch_object($con)) {
mysql_query("INSERT INTO nletter_entries (id,mail,name) VALUES ('','".$a->email."','".$a->name."')");
}

// Fedback holen, ob alle Daten enthalten sind
$co = mysql_query("SELECT * FROM nletter_entries ORDER BY id");
while($b = mysql_fetch_object($co)) {
echo $b->id." ".$b->email." ".$b->name."
";
}
// 2. DB schliessen.
mysql_close($con_b);
?>[/php:1:736baf6712]

Ich habe in der Quelldatenbank verschiedenen Gruppen. Die Gruppen werden in dem Feld "pid" als Zahl festgelegt. Wie kann ich die Daten vor dem Eintrag in die Zieldatenbank so Filtern das nur die USER mit der Zahl "9" in die Datenbank übertragen werden?

Hättest du da auch eine Lösung?


MFG
 

saila

Moderatorle

per
[php:1:b1af701e1a]
<?php
while(.....)) {
if($b->pid == 9) {
mysql_query("INSERT......");
}
}
?>
[/php:1:b1af701e1a]

EDIT:
Achte darauf, das du Anweisungen an MySQL in Großbuchstaben schreibst, weil es da entsprechende Unterschiede zwischen Groß und Kleinschreibung gibt.
 
B

balters

Guest

ich habe den letzten Teil volgendermassen aufgebaut:
[php:1:9f0aa01243]// Daten aus 1. DB Anfrage in 2. DB-Tabelle spielen
while($a = mysql_fetch_object($con)) {
if($b->pid == 9) {
mysql_query("INSERT INTO nletter_entries (id,mail,name) VALUES ('','".$a->email."','".$a->name."')");
}
}
// Fedback holen, ob alle Daten enthalten sind
$co = mysql_query("SELECT * FROM nletter_entries ORDER BY id");
while($b = mysql_fetch_object($co)) {
echo $b->id." ".$b->email." ".$b->name."
";
}
// 2. DB schliessen.
mysql_close($con_b);
?>
[/php:1:9f0aa01243]

Leider schreibt er keine Daten mehr in die Zieldatenbank. Habe ich da was falsch gemacht?

mfg
 

saila

Moderatorle

[php:1:f5a47d2bbd]
<?php
// Daten aus 1. DB Anfrage in 2. DB-Tabelle spielen
while($a = mysql_fetch_object($con)) {
if($a->pid == 9) {
mysql_query("INSERT INTO nletter_entries (id,mail,name) VALUES ('','".$a->email."','".$a->name."')");
}
}
// Fedback holen, ob alle Daten enthalten sind
$co = mysql_query("SELECT * FROM nletter_entries ORDER BY id");
while($b = mysql_fetch_object($co)) {
echo $b->id." ".$b->email." ".$b->name."
";
}
// 2. DB schliessen.
mysql_close($con_b);
?>
[/php:1:f5a47d2bbd]

Der Fehler liegt im Detail. Deine If beginnt mit $b... während sie korrekt $a->pid lauten muss.
 
B

balters

Guest

Das hat ja "fast" super geklappt :) warum nur "fast" irgendwie kommen 211 mehr Mails an als in der Liste stehen!?

Sehr eigenartig 8)

@saila und Benni_f

Kann ich euch für eure Hilfe irgendwie danken? Ich bin Internetprovider. Braucht Ihr eventuell WebtSpeicherplatz oder einen vserver?

mfg
 
B

balters

Guest

irgendwie kommen 211 mehr Mails an als in der Liste stehen!?

Ich habe es gefunden. In der Datenbank sind auch die Kunden erhalten die sich ausgetragen haben. Ich habe das Script um folgende Abfrage erweitert:

[php:1:11dac28762]if($a->deleted == 0) {[/php:1:11dac28762]

danke noch mal :)
 
Bilder bitte hier hochladen und danach über das Bild-Icon (Direktlink vorher kopieren) platzieren.
Antworten auf deine Fragen:
Neues Thema erstellen

Willkommen auf PSD-Tutorials.de

In unseren Foren vernetzt du dich mit anderen Personen, um dich rund um die Themen Fotografie, Grafik, Gestaltung, Bildbearbeitung und 3D auszutauschen. Außerdem schalten wir für dich regelmäßig kostenlose Inhalte frei. Liebe Grüße senden dir die PSD-Gründer Stefan und Matthias Petri aus Waren an der Müritz. Hier erfährst du mehr über uns.

Stefan und Matthias Petri von PSD-Tutorials.de

Nächster neuer Gratisinhalt

03
Stunden
:
:
25
Minuten
:
:
19
Sekunden

Neueste Themen & Antworten

Flatrate für Tutorials, Assets, Vorlagen

Statistik des Forums

Themen
175.187
Beiträge
2.582.068
Mitglieder
67.257
Neuestes Mitglied
Can Ergin
Oben