SELFPHP: Version 5.8.2 Befehlsreferenz - Tutorial – Kochbuch – Forum für PHP Einsteiger und professionelle Entwickler

SELFPHP


Professional CronJob-Service

Suche



CronJob-Service    
bei SELFPHP mit ...



 + minütlichen Aufrufen
 + eigenem Crontab Eintrag
 + unbegrenzten CronJobs
 + Statistiken
 + Beispielaufrufen
 + Control-Bereich

Führen Sie mit den CronJobs von SELFPHP zeitgesteuert Programme auf Ihrem Server aus. Weitere Infos



:: Buchempfehlung ::

Webseiten professionell erstellen

Webseiten professionell erstellen zur Buchempfehlung
 

:: Anbieterverzeichnis ::

Globale Branchen

Informieren Sie sich über ausgewählte Unternehmen im Anbieterverzeichnis von SELFPHP  

 

:: Newsletter ::

Abonnieren Sie hier den kostenlosen SELFPHP Newsletter!

Vorname: 
Name:
E-Mail:
 
 

Zurück   PHP Forum > SELFPHP > PHP Grundlagen

PHP Grundlagen Hier kann über grundlegende Probleme oder Anfängerschwierigkeiten diskutiert werden

Antwort
 
Themen-Optionen Ansicht
  #1  
Alt 25.04.2014, 12:30:43
de-maebinger de-maebinger ist offline
Anfänger
 
Registriert seit: Apr 2014
Alter: 40
Beiträge: 10
Variable wird beschnitten (phpmailer)

Hallo,

ich steh aufm Schlauch und ich hoffe ihr könnt mir helfen.

Erstmal der Code bevor ich ihn vergesse:
PHP-Code:
$ausgabe    =    "Es wurden einige Änderungen an dem Aggregat (".$e1['katalognummer']." / ".$e1['strichnummer']." / ".$e1['oe_nummer'].") durchgeführt

"
;
$ausgabe    .=    "<table cellspacing='0' cellpadding='0'>";
$ausgabe    .=    "<tr bgcolor='#999999'><td width='40%'>Was wurde geändert</td>";
$ausgabe    .=    "<td width='30%'>Wert vorher</td>";
$ausgabe    .=    "<td width='30%'>Wert nachher</td></tr>";
$zahler_i    =    0;
while (
$treffer=mysql_fetch_array($f3)){
      if (
$zahler_i%2){
$ausgabe     .=    "<tr><td>".$treffer['colum']."</td>";
$ausgabe     .=    "<td>".utf8_decode($treffer['wert_vorher'])."</td>";
$ausgabe     .=    "<td>".utf8_decode(utf8_decode($treffer['wert_nachher']))."</td></tr>";
} else {
$ausgabe     .=    "<tr bgcolor='cccccc'><td>".$treffer['colum']."</td>";
$ausgabe     .=    "<td>".utf8_decode($treffer['wert_vorher'])."</td>";
$ausgabe     .=    "<td>".utf8_decode(utf8_decode($treffer['wert_nachher']))."</td></tr>";
}
$zahler_i++;
}
$ausgabe    .=    "</table>"
Ich ziehe Daten aus einer MySQL DB und möchte sie in der Variablen $ausgabe speichern um sie mit dem phpmailer zu versenden.
Das klappt auch alles soweit ganz prima. Wenn ich nun aber mehr als ca. 6 Zeilen in $ausgabe speichere kommt nix mehr raus, oder er gibt die hälfte der Zeile noch aus und dann kommt nix mehr obwohl noch was kommen müsste!
Die Mail wird verschickt und kommt bei mir also nun mit 6 Zeilen an und diese sind dann zum Teil unvollständig.

Hat jemand ne Idee. Wenn ihr weitere Infos benötigt bitte melden

Vielen Dank
Mit Zitat antworten
  #2  
Alt 25.04.2014, 14:46:51
oe2azm oe2azm ist offline
Anfänger
 
Registriert seit: Dec 2011
Alter: 74
Beiträge: 1
AW: Variable wird beschnitten (phpmailer)

EIn Schuß ins Blaue? Hat das MySQL Feld den richtigen Typ (TEXT)? CHAR hat nur eine Länge von 255 Zeichen und das ist bei >6 Zeilen sicher zu wenig.
Mit Zitat antworten
  #3  
Alt 25.04.2014, 14:53:48
de-maebinger de-maebinger ist offline
Anfänger
 
Registriert seit: Apr 2014
Alter: 40
Beiträge: 10
AW: Variable wird beschnitten (phpmailer)

Hallo,

vielen Dank für den Schuss ins Blaue :) Lieber irgendein Hinweis wie nichts!

Nun aber wieder zur Sache:
Ich lese ja nur die Tabelle aus. Die einzelnen Felder sind korrekt befüllt.
Nach dem auslesen lasse ich sie in $ausgabe "fließen" um sie dann mit dem PHP Mailer zu verschicken.

Die Daten werden also nicht in die DB eingetragen. Die Felder sind als Text angelegt, weil sie auch etwas länger sein können.

Danke
Mit Zitat antworten
  #4  
Alt 25.04.2014, 18:03:43
Ckaos Ckaos ist offline
Member
 
Registriert seit: Nov 2007
Beiträge: 843
AW: Variable wird beschnitten (phpmailer)

hi,

Zitat:
phpmailer
wo ist dazu der Code?

PHP-Code:
$ausgabe    =    "Es wurden einige Änderungen an dem Aggregat (".$e1['katalognummer']." / ".$e1['strichnummer']." / ".$e1['oe_nummer'].") durchgeführt

"
;
$ausgabe    .=    "<table cellspacing='0' cellpadding='0'>";
$ausgabe    .=    "<tr bgcolor='#999999'><td width='40%'>Was wurde geändert</td>";
$ausgabe    .=    "<td width='30%'>Wert vorher</td>";
$ausgabe    .=    "<td width='30%'>Wert nachher</td></tr>";
$zahler_i    =    0;
while (
$treffer=mysql_fetch_array($f3)){
$color '';
$ausgabe     .=    "<tr".($zahler_i%2?"":" bgcolor='cccccc'")."><td>".$treffer['colum']."</td>";
$ausgabe     .=    "<td>".utf8_decode($treffer['wert_vorher'])."</td>";
$ausgabe     .=    "<td>".utf8_decode(utf8_decode($treffer['wert_nachher']))."</td></tr>";

$zahler_i++;
}
$ausgabe    .=    "</table>"
geht kürzer.... und noch kürzer.....

MfG

CKaos
__________________
"Wenn die Leute Häuser so bauen würden, wie wir Programme schreiben, würde der erstbeste Specht unsere Zivilisation zerhacken."
In den allermeisten Fällen sitzt der Bug etwa 40 cm vor dem Monitor!
Mit Zitat antworten
  #5  
Alt 25.04.2014, 18:09:14
de-maebinger de-maebinger ist offline
Anfänger
 
Registriert seit: Apr 2014
Alter: 40
Beiträge: 10
AW: Variable wird beschnitten (phpmailer)

Sorry hier kommt der ganze Code

PHP-Code:
$xx=mysql_query("SELECT * FROM strich2oe_db WHERE s2oid='$s2oid2'");
$e1                        =    mysql_fetch_array($xx);

$katalognummer            =    $e1['katalognummer'];

if (
substr($katalognummer,1,1)==8){
    
$tabelle            =    "starter_db";
}
if (
substr($katalognummer,1,1)==9){
    
$tabelle            =    "generatoren_db";
}

$f2=mysql_query("SELECT * FROM $tabelle WHERE soid='$s2oid2'");
$e2                    =    mysql_fetch_array($f2);
$warenbezug            =    $e2['herkunft'];

$f3=mysql_query("SELECT * FROM changehistory WHERE s2oid='$s2oid2' AND date='$datetime'");
$z3=mysql_num_rows($f3);

$ausgabe    =    "Es wurden einige &Auml;nderungen an dem Aggregat (".$e1['katalognummer']." / ".$e1['strichnummer']." / ".$e1['oe_nummer'].") durchgef&uuml;hrt<br><br>";
$ausgabe    .=    "<table cellspacing='0' cellpadding='0'>";
$ausgabe    .=    "<tr bgcolor='#999999'><td width='40%'>Was wurde ge&auml;ndert</td>";
$ausgabe    .=    "<td width='30%'>Wert vorher</td>";
$ausgabe    .=    "<td width='30%'>Wert nachher</td></tr>";
$zahler_i    =    0;
while (
$treffer=mysql_fetch_array($f3)){
      if (
$zahler_i%2){
        
$ausgabe        .=    "<tr><td>".$treffer['colum']."</td>";
        
$ausgabe        .=    "<td>".utf8_decode($treffer['wert_vorher'])."</td>";
        
$ausgabe        .=    "<td>".utf8_decode(utf8_decode($treffer['wert_nachher']))."</td></tr>";
    } else {
        
$ausgabe        .=    "<tr bgcolor='cccccc'><td>".$treffer['colum']."</td>";
        
$ausgabe        .=    "<td>".utf8_decode($treffer['wert_vorher'])."</td>";
        
$ausgabe        .=    "<td>".utf8_decode(utf8_decode($treffer['wert_nachher']))."</td></tr>";
    }
    
$zahler_i++;
}
$ausgabe    .=    "</table>";

//************************** Mailerbereich ***********************
@require_once('../../PHPMailer/class.phpmailer.php');
$mail             = new PHPMailer(); // defaults to using php "mail()"
$mail->AddReplyTo("xxx");
$mail->SetFrom('xxx');
$mail->AddAddress('xxx');
if (
$warenbezug=='PPAP'){
    
$mail->Subject    utf8_decode("Datenänderungen für ".$e1['katalognummer']." / ".$e1['strichnummer']." ($warenbezug)");
}
if (
$warenbezug=='Einkauf'){
    
$mail->Subject    utf8_decode("Datenänderungen für ".$e1['katalognummer']." / ".$e1['strichnummer']." ($warenbezug)");
}
$mail->MsgHTML($ausgabe);

if(!
$mail->Send()) {
    print 
"<div align='center'>Mailer Error: " $mail->ErrorInfo;
} else {
    print 
"<div align='center'><font color='green'>Messages verschickt!</font></div><br>";
    
//$f4=mysql_query("UPDATE strich2oe_db SET empbdruck='0' WHERE s2oid='$s2oid2'");

Danke
Mit Zitat antworten
  #6  
Alt 25.04.2014, 18:50:02
Benutzerbild von meikel (†)
meikel (†) meikel (†) ist offline
SELFPHP Guru
 
Registriert seit: Dec 2003
Ort: Erfurt
Alter: 75
Beiträge: 4.001
AW: Variable wird beschnitten (phpmailer)

Zitat:
Zitat von de-maebinger Beitrag anzeigen
Ich lese ja nur die Tabelle aus. Die einzelnen Felder sind korrekt befüllt.
Nach dem auslesen lasse ich sie in $ausgabe "fließen" um sie dann mit dem PHP Mailer zu verschicken.

Die Daten werden also nicht in die DB eingetragen. Die Felder sind als Text angelegt, weil sie auch etwas länger sein können.
Dafür, daß Du Hilfe brauchst und daß Du nicht weißt, welche Codezeile fehlerhaft ist, rückst Du entschieden zuwenig Code raus.
Zitat:
Sorry hier kommt der ganze Code
Nein, daß kann nicht der ganze Code (ausgenommen die Strings der Zugangsdaten für MySQL und SMTP-auth) sein. Außerdem fehlt noch das *komplette* Formular.

1. mit welchem Content-typ + charset header wird das Formular präsentiert?
2. mit welchem Charset kommen die Formulardaten an?
3. mit welchem Charset/Collation stehen die SQL Daten in der Tabelle?
4. welcher charset, welcher Content-type und welcher encoding Typ wird beim phpmailer verwendet?
5. welche Form des Zeilenumbruchs und welche Zeilenlänge wurde eingestellt?
6. $mail->AddReplyTo("xxx");
$mail->SetFrom('xxx');
$mail->AddAddress('xxx');
alles falsch.
7. hat der SMTP die selbe IP wie der Absender oder isses ein gefälschter Absender?
8. SMTP-Auth fehlt vollständig.
9. der plain/text Part im MIME fehlt komplett
10. Dein HTML ist grottenschlecht.

Keine Prüfung auf unerlaubte Zeichen bei Formularvariablen. Zeilenumbruch ist ausschließlich nur im Body gestattet!
Kein Test, ob ne Zeile mit nem "." beginnt und ob Strings 0-Bytes enthalten.
Mit Zitat antworten
  #7  
Alt 25.04.2014, 20:45:50
de-maebinger de-maebinger ist offline
Anfänger
 
Registriert seit: Apr 2014
Alter: 40
Beiträge: 10
AW: Variable wird beschnitten (phpmailer)

Hi meikel,

danke für die Antwort.

Okay sorry ich habe den Code aus Dreamweaver kopiert und hier eingefügt. Leider wurden alle Tabs und sonstiges nicht übernommen.

Das ist der Code der zuständig ist, dass die Mail verschickt wird und die Daten rauskommen und wo der Fehler stecken muss.

zu 1. Ist das relevant dafür wie die Daten in der Mail ankommen? Ist es dafür relevant das nicht alles übertragen wird? Ich kann es noch einfügen, bezweifele aber das es aufgrund dessen dann funktioniert. Ich würde "charset=utf-8" nutzen
zu 3. $treffer['colum'] ist als Varchar
$treffer['wert_vorher'] und $treffer['wert_nachher'] haben beide Text als Collation.
Die Daten kommen ja korrekt an, werden aber in der Mail nach x Zeichen abgeschnitten, darum glaube ich auch hier das es nicht relevant ist.
zu 4. bei beiden utf-8 und text/plain
zu 5. ??? auf was genau spielst du an?
zu 6. war Absicht. Muss ja nicht wissen an wen ich die Mail schicken möchte.
zu 7 und 8. Ich nutze keinen SMTP, weil ich nur innerhalb der Firma die Mail versenden möchte und da geht alles über den Mercury und dann zum Exchange.
zu 10. danke

Ich habe nicht behauptet das ich es kann...
Mit Zitat antworten
  #8  
Alt 25.04.2014, 23:08:40
Benutzerbild von meikel (†)
meikel (†) meikel (†) ist offline
SELFPHP Guru
 
Registriert seit: Dec 2003
Ort: Erfurt
Alter: 75
Beiträge: 4.001
AW: Variable wird beschnitten (phpmailer)

Zitat:
Zitat von de-maebinger Beitrag anzeigen
Das ist der Code der zuständig ist, dass die Mail verschickt wird und die Daten rauskommen und wo der Fehler stecken muss.
Der ist fehlerhaft und dürftig.

Zitat:
zu 1. Ist das relevant dafür wie die Daten in der Mail ankommen?
Grundsätzlich: mail basiert auf 7bit US-ASCII. Im Header sind alle non-US-ASCII-Zeichen verboten und müssen deshalb codiert werden.

Zitat:
Ist es dafür relevant das nicht alles übertragen wird?
Ich habe absolut keine Ahnung, was Du wie verschickst und was fehlt.

Zitat:
Ich kann es noch einfügen, bezweifele aber das es aufgrund dessen dann funktioniert. Ich würde "charset=utf-8" nutzen
Egal, was Du würdest. Auch der Body muß beim Transfer aus 7bit US-ASCII bestehen. Genutzt wird da als content-transfer encoding normalerweise base64 oder quoted printable. Das muß der phpmailer wissen, weil sonst die Mail in nem gut sortiertem SPAM Filter in die Tonne getreten wird.

Zitat:
zu 3. $treffer['colum'] ist als Varchar
$treffer['wert_vorher'] und $treffer['wert_nachher'] haben beide Text als Collation.
Da verstehste mich miß. Klar sind Texte Texte und keine Ziffern.
Ich will wissen, wie die varchars gespeichert wurden, weil Du sie mit utf8_decode() behandelst. Das:
Zitat:
utf8_decode(utf8_decode($treffer['wert_nachher']))
ist Blödsinn. Ich frage deshalb, weil ich bezüglich von Formulardaten und SQL Daten schon Pferde kotzen gesehen habe.

Zitat:
Die Daten kommen ja korrekt an, werden aber in der Mail nach x Zeichen abgeschnitten, darum glaube ich auch hier das es nicht relevant ist.
Ich kann nicht hellsehen, weil ich nicht weiß, wie die Daten aussehen, die Du zusammenhäkelst.
In Deinem Script tummeln sich Umlaute, htmlentities und nach ISO-8859-1 konvertierte Strings, die (KA, obs stimmt) mit charset UTF-8 aufschlagen. Da Du (wie Du weiter untenschreibst) den Kram höchstwahrscheinlich mit xampp verwurstest, besteht zusätzlich noch die Gefahr, daß vielleicht noch "Windowsumlaute" den Kohl fett machen.
Zitat:
zu 4. bei beiden utf-8 und text/plain
text/plain ist bei US-ASCII - a-zA-Z0-9 und die paar Sonder- und Satzzeichen - umkompliziert. Taucht in header und body ein lausiger Umlaut auf, fängt die Arbeit an.
Verwende als content transfer encoding base64 oder quoted printable. Damit kommen zumindest alle mir bekannten Emailprogrämmelchen klar. Bei 8bit u/o UTF-8 habe so meine Zweifel.
Zitat:
zu 5. ??? auf was genau spielst du an?
Verwendest Du LF oder CRLF?
Zitat:
zu 6. war Absicht. Muss ja nicht wissen an wen ich die Mail schicken möchte.
Das Format stimmt nicht:
PHP-Code:
public function AddAddress($address$name ''
Adresse ohne Username ist pfui.
Zitat:
zu 7 und 8. Ich nutze keinen SMTP, weil ich nur innerhalb der Firma die Mail versenden möchte und da geht alles über den Mercury und dann zum Exchange.
Mercury kenne ich nicht genau und weiß nicht, wie das Teil dann reagiert, wenn in der Mail am Zeilenanfang ein Punkt steht. So wird eigentlich das Ende der mail gekennzeichnet.
Zitat:
zu 10. danke
Da mußte durch. HTML ist ein Standard, an den man sich halten sollte, wenn man keine Fehler haben möchte. Komplettiere das HTML einfach so, daß es HTML ist. Ohne DOCTYPE, <head> und content="text/html; charset=ISO-8859-1" könnte der Emailreader auf stur schalten und HTML 3.20 annehmen.

Folgende Fehlerquellen sind denkbar: irgend wo produzierst Du irgend ein "nicht druckbares" Zeichen, welches eventuell als Stringende interpretiert wird. Möglicherweise stirbt das Script hier
utf8_decode(utf8_decode())
oder produziert ungewollt Unfug. Steht eventuell im error_log was drin?
Oder Mercury frißt die Mail nicht komplett.
Zitat:
Ich habe nicht behauptet das ich es kann...
Dann würdest Du nicht fragen. Ich tippere ja deshalb, weil Du phpmailer verwendest und Dich damit schon wohltuend von der "plain-mail()" Fraktion unterscheidest.
Mit Zitat antworten
  #9  
Alt 26.04.2014, 00:12:25
de-maebinger de-maebinger ist offline
Anfänger
 
Registriert seit: Apr 2014
Alter: 40
Beiträge: 10
AW: Variable wird beschnitten (phpmailer)

Hallo meikel,

Vielen dank für die vielen Tipps und Hinweise.
Leider kann ich alles erst am Montag testen. Ich werde versuchen einiges umzusetzen und zu verbessern.
Werde am Montag nochmals berichten.

Nochmals danke
Mit Zitat antworten
  #10  
Alt 30.04.2014, 12:37:24
de-maebinger de-maebinger ist offline
Anfänger
 
Registriert seit: Apr 2014
Alter: 40
Beiträge: 10
AW: Variable wird beschnitten (phpmailer)

Hallo,

leider habe ich das Problem nicht lösen können.
Habe alle Content und Charsets eingetragen und getestet. Das Ergebnis blieb immer das selbe. Habe nun eine andere Lösung für mich gefunden

Hier das Resultat meiner Bemühungen: (Ergebnis in Mail)

Es wurden einige Änderungen an dem Aggregat (28212104 / 8212104-1 / 0001107402 ) durchgeführt
Was wurde geändert Wert vorher Wert nachher
empb_bemerkung n212 n212f
oe_hersteller Boschn2h12 Boschn2h12f
nennspannung h12 h12f
nennleistung h12 h12f
referenz h12 h12f
lieferanten_teile_nr h12 h12f
gewicht h12 h12f
einpassdurchmesser_soll h12 h12f
einpassdurchmesser_toleranz h12 h12f
einpassdurchmesser_ist h12 h12f
einpassdurchmesser_bez h12 h12f
zaehnezahl_soll</td

ich lasse nun nach 10 Zeilen abbrechen.

Danke für die Bemühungen
Mit Zitat antworten
Antwort


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind aus.
[IMG] Code ist aus.
HTML-Code ist aus.

Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Variable selbst per GET übergeben juergen PHP Grundlagen 28 29.09.2009 23:59:05
Wert einer Variable ändern und die Änderung auf die Variable ablegen. Ichthys PHP Grundlagen 8 04.05.2006 01:18:55
Variable in Variable? Giz PHP für Fortgeschrittene und Experten 13 22.07.2005 12:12:00
variable variable-Name gerhard PHP Grundlagen 2 02.08.2003 06:58:28
URL mit Präfix und Variable im Speicher ??? ben PHP für Fortgeschrittene und Experten 1 15.06.2002 22:45:08


Alle Zeitangaben in WEZ +2. Es ist jetzt 08:51:10 Uhr.


Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.


© 2001-2024 E-Mail SELFPHP OHG, info@selfphp.deImpressumKontakt