Schrift
[thread]95[/thread]

Zeilenumbruch wegmachen

Leser: 2


<< >> 7 Einträge, 1 Seite
CGIResource
 2003-11-20 18:36
#9878 #9878
User since
2003-10-14
5 Artikel
BenutzerIn
[Homepage] [default_avatar]
Hi,

ich habe da ein sehr ärgerliches Problem:
Ich habe vor einiger Zeit ein Newslettersystem geschrieben und die Adressdaten aus meiner vorher gepflegten Access-Datenbank in MySQL übernommen.

Nun habe ich das Problem, dass bei einigen Empfängern hinter der Mailadresse ein Zeilenumbruch ist (warum weiss ich auch nicht).

Ich habe schon versucht den Zeilenumbruch folgendermassen weg zu bkeommen:

1. Abruf der Daten aus der MySQL
2. Zeilenumbruch wegfiltern: $mailaddy =~ s/\n//g;
3. Gefiltete Variable wieder in die DB schreiben.

Allerdings bleibt dabei der Zeilenumbruch immer noch vorhanden.
Habt Ihr noch eine Idee, wie ich den Zeilenumbruch aus der DB wegbekommen kann?

Gruß,

CGIResource
[E|B]
 2003-11-20 18:57
#9879 #9879
User since
2003-08-08
2561 Artikel
HausmeisterIn
[Homepage] [default_avatar]
Funktioniert denn:

Code: (dl )
1
2
chomp($mailaddy);
$mailaddy =~ s!\n$!!;


?
Gruß, Erik!

s))91\&\/\^z->sub{}\(\@new\)=>69\&\/\^z->sub{}\(\@new\)=>124\&\/\^z->sub{}\(\@new\)=>);
$_.=qq~66\&\/\^z->sub{}\(\@new\)=>93~;for(@_=split(/\&\/\^z->sub{}\(\@new\)=>/)){print chr;}

It's not a bug, it's a feature! - [CGI-World.de]
[E|B]
 2003-11-20 18:58
#9880 #9880
User since
2003-08-08
2561 Artikel
HausmeisterIn
[Homepage] [default_avatar]
Funktioniert denn:

Code: (dl )
1
2
chomp($mailaddy);
$mailaddy =~ s!\n$!!;


?
Gruß, Erik!

s))91\&\/\^z->sub{}\(\@new\)=>69\&\/\^z->sub{}\(\@new\)=>124\&\/\^z->sub{}\(\@new\)=>);
$_.=qq~66\&\/\^z->sub{}\(\@new\)=>93~;for(@_=split(/\&\/\^z->sub{}\(\@new\)=>/)){print chr;}

It's not a bug, it's a feature! - [CGI-World.de]
CGIResource
 2003-11-20 19:07
#9881 #9881
User since
2003-10-14
5 Artikel
BenutzerIn
[Homepage] [default_avatar]
Hi,

hmm, nein leider auch nicht.
Ich kann nach meinem Prinzip ($mailaddy =~ s/\n//g;) die Daten korrekt (ohne Zeilenumbruch) in eine Textdatei schreiben.
Wenn ich die Daten aus der Textdatei aber wieder raushole und sie in die SQL schreibe (2. Testtabelle), dann ist der Zeilenumbruch wieder da. Ich weiss echt nicht warum...

Gruß,

CGIResource
[E|B]
 2003-11-20 19:11
#9882 #9882
User since
2003-08-08
2561 Artikel
HausmeisterIn
[Homepage] [default_avatar]
Kannst du den Codeausschnitt mal posten, in dem du vermutest, dass dort der Zeilenumbruch wieder in die DB geschrieben wird? (also die Stelle mit dem Auslesen der Datei)
Gruß, Erik!

s))91\&\/\^z->sub{}\(\@new\)=>69\&\/\^z->sub{}\(\@new\)=>124\&\/\^z->sub{}\(\@new\)=>);
$_.=qq~66\&\/\^z->sub{}\(\@new\)=>93~;for(@_=split(/\&\/\^z->sub{}\(\@new\)=>/)){print chr;}

It's not a bug, it's a feature! - [CGI-World.de]
CGIResource
 2003-11-20 19:15
#9883 #9883
User since
2003-10-14
5 Artikel
BenutzerIn
[Homepage] [default_avatar]
Klar!

Hier lese ich die Daten aus und schreibe sie (testweise) in eine Textdatei:

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
my $dbh = DBI->connect("dbi:mysql:$dbank:localhost","$dbuser","$dbpass");
$sth = $dbh->prepare( "SELECT * FROM $tabelledbsystem");
$sth->execute();  


while (@row = $sth->fetchrow_array()) {
$mailid = $row[0];
$mailaddy = $row[7];

chomp($mailaddy);
$mailaddy =~ s!\n$!!;


open (PASS3,">>/kunden/cgiresource/dbsystem/data/repairdb");
print PASS3 "$mailid|$mailaddy\n";
close(PASS3);


}
my $rc = $dbh->disconnect;    #schließen


Und hier hole ich die Daten wieder aus der Textdatei (wo die Daten wirklich ohne Zeilenumbruch sind!) und schreibe sie in eine weitere Tabelle (damit die Originaldaten nicht noch zerschossen werden):

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
open (DATEI,"</kunden/cgiresource/dbsystem/data/repairdb") || die "Fehler in $datei $!";
chomp(@datei = <DATEI>);
close (DATEI);

foreach $zeile (@datei)
{
($id,$mail) = split (/\|/, $zeile);
#$mail =~ s/\n//g;
my $dbh = DBI->connect("dbi:mysql:$dbank:localhost","$dbuser","$dbpass");
$sth = $dbh->prepare( "UPDATE dbsystem2 SET mail=\"$mail\" WHERE id='$id' LIMIT 1");
$sth->execute();  
my $rc = $dbh->disconnect;    #schließen
}


Aber wie gesagt sind dann in der 2. Tabelle die Zeilenumbrüche wieder zu finden...

Gruß,

CGIResource
CGIResource
 2003-11-20 19:56
#9884 #9884
User since
2003-10-14
5 Artikel
BenutzerIn
[Homepage] [default_avatar]
Ich glaube ich habe den Fehler gefunden!
Es war nicht das \n sondern entweder das \t oder das \r (wobei ich nicht genau weiss, wofür das \r steht);

Aber mir ist eingefallen, dass es auch noch ein \r gibt und habe es einfach mal ausprobiert!

Gruß,

CGIResource
<< >> 7 Einträge, 1 Seite



View all threads created 2003-11-20 18:36.