Textformatierung in PHP

Jetzt habe ich die Datei in eine .txt-Datei umbenannt.

Hier der Link dazu.

Hoffentlich ist es so besser.
 
Zuletzt bearbeitet von einem Moderator:
chris_9_11 schrieb:
Jetzt habe ich die Datei in eine .txt-Datei umbenannt.

Hier der Link dazu.

Hoffentlich ist es so besser.


ok... es ist etwas frickeliger. schau mal den screenshot von meinem editor an:



dort siehst du komische vertikale striche vor einigen code-zeilen. das sind irgendwelche sonderzeichen, die php nicht verarbeiten kann. in anderen editoren sind diese u.U. nicht sichtbar. du musst jetzt überall, wo ein entsprechender fehler auftaucht, die "leerzeichen" vor dem code löschen und neu einfügen (entweder leerzeichen oder tabs). dann sollte es funktionieren. fehler muss wohl beim kopieren aus dem forum entstanden sein...

dann auch wichtig: deine zeile 111 zeigt fehlermeldungen, die aufgrund der verwendung der geklammerten variablen entstehen. den mailtext müsstest du wie folgt aufbauen:

beispiel:

PHP:
$test = "Hallo ".$form["name"].", deine blah ist".$form["blah"].";

oder so, wenn das einfacher für dich ist:

PHP:
$test = "Name:";
$test .= "\n";
$test .= $form['name'];
$test .= "\n";
$test .= "E-Mail:";
$test .= "\n";
$test .= $form['email'];

zwischen .= und den variablen würde ich wg. lesbarkeit immer leerschritte setzen.

hoffe, das hilft :)
cat.
 
Zuletzt bearbeitet von einem Moderator:
catvarlog schrieb:
dort siehst du komische vertikale striche vor einigen code-zeilen. das sind irgendwelche sonderzeichen, die php nicht verarbeiten kann. in anderen editoren sind diese u.U. nicht sichtbar.

Yo. Zeichen 160, sieht in ISO 8859-1 aus wie ein Leerzeichen, entspricht   in HTML. Weg damit.

PHP:
$test = "Hallo ".$form["name"].", deine blah ist".$form["blah"].";

oder "Hallo {$form['name']}, deine blah ist {$form['blah']}."

Bei Arrayindices in Hochkommas in Strings muß diese Form benutzt werden.

Zu dem Skript:

Mit exit() abzubrechen ist schlecht. Es bricht die Verarbeitung der Seite ab. Alles was danach an HTML kommt wird nicht zum Browser geschickt (hier: das </body></html>).

Es fehlt mir ein Konzept bei der ganzen Geschichte. So wäre es m.E. besser:

1. Benutzer ruft Kontaktseite auf
2. Benutzer trägt Daten ein
3. Benutzer schickt Seite ab
4. Prüfung ob Pflichtfelder ausgefüllt wurden, Prüfung der Inhalte aller Felder
5a. Wenn alles OK ist, "Danke"-Seite zeigen
5b. Wenn Fehler aufgetreten sind,
- Mitteilen, daß Fehler aufgetreten sind
- Fehler aufzählen
- Das Formular nochmals anzeigen, die abgeschickten Werte als Vorgaben in den Feldern
- zurück zu 2

Zu deinem Formular:

Momentan halte ich es für ein Kontaktverhinderungsformular. Ich will nur eine Frage stellen, und muß dafür ins "Kreuzverhör"?

Ziel ist es, zur Kontaktaufnahme zu animieren. Dazu sollte man nicht den Datensammler raushängen lassen, wie man es zu oft sieht. Also nur die Daten erheben, die man für den Kontakt braucht.

Desweiteren verarbeitest du die Daten eh nicht automatisch weiter, eine solche Feingliederung wie du sie jetzt hast ist also garnicht nötig.

Vorschlag:

Kennzeichnung der Pflichtfelder!

Firma
Ihr Name (Pflicht)

Wie möchten Sie kontaktiert werden? Bitte geben Sie E-Mailadresse, Telefonnummer, Faxnummer oder Anschrift ein. (Freundlich, gibt freie Auswahl -> wird positiv angenommen, Prüfungen können unterbleiben)

Kontaktdaten (Pflicht) - Freifeld
Nachricht (Pflicht)

Vergiß den Betreff, die Erfahrung zeigt, daß die Leute eh nicht wissen was sie reinschreiben sollen und da irgendeine Verlegenheitstext wie "Frage" oder so reinschreiben.

Alles direkt freundlicher, mit Freiheiten, weniger ausfragend. Maclike ;-)

Dann noch:

Feldlängen sind schlecht, wenn der Benutzer nicht vorher weiß, wieviel Text er maximal reinschreiben darf, und wieviel er schon "verbraucht" hat.

Fehlermeldungen wie "X ist zu lang" sind auch schlecht, da der Benutzer nicht weiß, wieviel er kürzen muß.

Laß die "zu lang" Prüfungen ganz weg, sind recht sinnfrei. Es gibt keinen technischen Grund dafür.

500 Zeichen für die Nachricht sind zu knapp. Kappe heimlich bei 10000 Zeichen und gut ist.

Kappe die anderen Felder auch heimlich. Und zwar großzügig! Ernsthafte Anfragen enthalten dann immernoch alle Daten, und bei Spaßvögeln, die dir 100.000 Zeichen in die Kontaktdaten schreiben, wird die Mail nie eine Maxmalgröße Überschreiten.

Der Benutzer soll sich nicht eingeschränkt fühlen, keine künstlichen technischen Schranken.

Die Regexp für die Emailadresse ist falsch. Es gibt TLDs mit mehr als vier Zeichen und sie erfaßt auch nicht alle gültigen Emailadressen. Es gibt eine, die umfaßt eine ganze Buchseite. Ich prüfe nur die allgemeine Form <irgendwas@irgendwas.irgendwas>.

Die semantischen Prüfungen kannst du dir eh sparen, wenn du meinem Vorschlag folgst.

Übrigens: Du glaubst garnicht, wieviele Leute bei Telefon sowas wie "0221 / 4711 oder -0815" eintragen. Und das sollen sie auch dürfen.

Den "Zurücksetzen" Knopf kannst du auch weglassen (sauberer Oberfläche), ich habe noch nie gesehen, wie jemand einen reset Button benutzt hätte. Wofür auch. Kaum jemand weiß wofür die überhaupt gut sind.

Viel Erfolg noch!
 
Nogger schrieb:
Die Regexp für die Emailadresse ist falsch. Es gibt TLDs mit mehr als vier Zeichen und sie erfaßt auch nicht alle gültigen Emailadressen. Es gibt eine, die umfaßt eine ganze Buchseite. Ich prüfe nur die allgemeine Form <irgendwas@irgendwas.irgendwas>.

.museum - ja... die hat 5 zeichen. nur die allgemeine syntax zu prüfen, ist nicht verkehrt.
 
Nach dem Korrekturvorschlag von catvarlog läuft das Script nun endlich durch. Wofür ich ihm sehr dankbar bin.

Jedoch gibt es noch einen kleinen Fehler bei folgendem Scriptabschnitt führt er die letzte Funktion aus, obwohl alle Eingaben richtig sind. Für die Variable $fehlermeldung zeigt er keinen Inhalt ein. Bei falschen Angaben läuft das Script wie gewünscht.

PHP:
	if ($form['name'] == ""){
        $fehlermeldung .= "Bitte geben Sie Ihren Namen ein!<br/>";
        $error = TRUE;
		}
	if ($form['email'] == "") { 
        $fehlermeldung .= "Bitte geben Sie eine E-Mail-Adresse ein!<br />";
        $error = TRUE;
		}
	if ($form['betreff'] == "") { 
        $fehlermeldung .= "Bitte geben Sie einen Betreff ein!<br />";
        $error = TRUE;
		}
	if ($form['text'] == "") { 
        $fehlermeldung .= "Sie haben keine Nachricht eingegeben!<br />";
        $error = TRUE;
		}
	if ($error = TRUE){ 
        echo "<strong>Aufgrund der folgenden Fehler konnte Ihre Nachricht nicht übermittelt werden:<br /></strong>$fehlermeldung"; 
        exit; 
        }

Auch hier kann ich nach einigen Versuchen (wobei ich ja nicht wirklich weiß wie ich richtig suchen soll) den Fehler nicht finden.

Zu deinem Beitrag Nogger:
Dein Einwand mit dem exit-Befehl finde ich interessant, weil wir es bereits zu Anfang dieses Themas darüber hatten. Was würdest du vorschlagen? Irgendwie muss ich das Script an diesem Punkt abbrechen, oder nicht?

Mit der Markierung der Pflichtfelder hast du recht. Das hatte ich auch noch vor, habe mich aber vorerst auf das Script konzentriert.

Wie kappe ich die Felder heimlich?

Ein Formular nach deinen Vorstellungen wäre mir auch am liebsten, aber da ich noch ein PHP-Neuling bin weiß ich nicht, wie ich das verwirklichen soll. Das momentan Script entstand auch aus einem Script welches ich aus dem Internet downgeloadet und mit Hilfe der anderen hier lauffähig gemacht habe. Wenn du mir beim Erstellen eines Formulars behilflich wärst, wäre ich dir natürlich sehr dankbar.

Da ich noch sehr unwissend auf dem Bereich der PHP-Programmierung bin, bin ich für jegliche Hilfe offen und dankbar.
 
……………………………………………
 
Zuletzt bearbeitet von einem Moderator:
PHP:
	if ($error = TRUE){ 
        echo "<strong>Aufgrund der folgenden Fehler konnte Ihre Nachricht nicht übermittelt werden:<br /></strong>$fehlermeldung"; 
        exit; 
        }


hi chris - mach aus "$error = TRUE" einfach "$error == TRUE" mit 2 Gleichzeichen. Klar, oder?
gruß, cat
 
:D ES FUNKTIONIERT :D

Das Script läuft jetzt ohne Probleme durch. Vielen herzlichen Dank für eure Hilfe! Es könnte jedoch sein, dass ich mich nochmal melde, weil ich noch ein paar Dinge abändern möchte.

Wie kann ich jetzt die Länge der eingegeben Daten heimlich kappen? Ich möchte nämlich die Funktionen, welche die Länge der Daten überprüfen einfach rausnehmen.
 
Zuletzt bearbeitet:
Vielen Dank! Ich denke, jetzt dürften sich alle Fragen erledigt haben.
 
Ihr werdet mich einfach nicht los. Es tut mir echt leid, aber ich habe schon wieder eine Zeile, die nicht so will wie ich. Das problem mit der Textformatierung besteht immer noch.

PHP:
echo "<span style="font-size: large; font-family: Arial, Helvetica, sans-serif; font-weight: bold;">Ihre Nachricht wurde übermittelt.<br>Vielen Dank!</span>";

Normalerweise müßte das doch funktionieren oder täusche ich mich?

Der Browser gibt folgende Fehlermeldung aus:

Parse error: parse error, unexpected T_STRING, expecting ',' or ';' in /homepages/2/d11726925/htdocs/Test/kontaktsend.php on line 230

Das dürfte wirklich das letzte Problem sein. :)
 
Der String wird in "" geschrieben, Du darfst dann darin keine weiteren "-zeichen mehr benutzen!

(a) Du kannst das Zeichen als \" im String schreiben (neudeutsch: escapen )
also:

print "Hier kommt ein \"-Zeichen<br>";

ergibt:

Hier kommt ein "-Zeichen


(b) Du Schreibst den string in '...' dann darfst Du auch "-Zeichen verwenden

Ich rate Dir zu (a), da in '-Zeichen Variablen nicht interpretiert werden!


Vielen Dank! Ich denke, jetzt dürften sich alle Fragen erledigt haben.

...Du wärst der Erste :D
 
Ok, ich gebe mich geschlagen. Bei dem Versuch den Text zu zentrieren trat mein nächstes Problem auf. Die Zeile sieht jetzt folgendermaßen aus:

PHP:
echo "<span style=\"text-align: center; font-size: large; font-family: Arial, Helvetica, sans-serif; font-weight: bold;\">Ihre Nachricht wurde übermittelt.<br>Vielen Dank!</span>";

Unter OS X mit Safari und Firefox wird der Text beides Mal unzentriert ausgegeben. Dagegen unter Windows mit IE wird er wie gewünscht zentriert ausgegeben. Woran liegt das?

Bis zum nächsten Mal! :)
 
Wie Du siehst, wird's unübersichtlich! Geh mal zu selfhtml und les Dir durch, wie man externe css-Dateien für die styles erstellt, dann hast Du mehr Struktur in Deinem Dokument.
Zu Deiner Frage: Kann es sein, daß text-align der falsche Bezeichner ist!? Ich meine es wäre nur align. Auch das findest Du alles bei selfhtml beschrieben:

http://de.selfhtml.org/
 
chris_9_11 schrieb:
Ok, ich gebe mich geschlagen. Bei dem Versuch den Text zu zentrieren trat mein nächstes Problem auf. Die Zeile sieht jetzt folgendermaßen aus:

PHP:
echo "<span style=\"text-align: center; font-size: large; font-family: Arial, Helvetica, sans-serif; font-weight: bold;\">Ihre Nachricht wurde übermittelt.<br>Vielen Dank!</span>";

Unter OS X mit Safari und Firefox wird der Text beides Mal unzentriert ausgegeben. Dagegen unter Windows mit IE wird er wie gewünscht zentriert ausgegeben. Woran liegt das?

Bis zum nächsten Mal! :)

die syntax ist OK. m.E. ist das problem, dass du alles im span zentrierst und der span allerdings nur so breit ist, wie der text, der da drin steht. also wird nichts relativ zur seite zentriet. probier mal das hier:

<div align="center">
<span style='deine angaben'>vielen dank usw</span>
</div>


gruss, cat
 
Zurück
Oben Unten