Antworten auf deine Fragen:
Neues Thema erstellen

Ungewollte Zeilenumbrüche beim speichern

Zero2000

Noch nicht viel geschrieben

Hallo,

ich versuche mal mein Problem zu schildern.
Ich schreibe per PHP in eine Textdatei Fahrzeugmarken mit folgendem Code:
Code:
<?php
if(isset($_POST['nksubmit'])){
$neukunde = $_POST['neukunde'];
$file = fopen("admin/kunden.txt", "a+");
$text="$neukunde\r\n";
fwrite($file,$text);
fclose($file);
}
?>
Diese Fahrzeugmarken lese ich in einem anderen Formular als Dropdownfeld wieder aus um sie auswählen zu können und zur weiteren Verwendung zu speichern mit diesem code:
Code:
<?php
if(isset($_POST['submit'])){

$kunde = $_POST['kunde'];
$fahrzeug = $_POST['fahrzeug'];
$fgstnummer = $_POST['fgstnummer'];
$kennzeichen = $_POST['kennzeichen'];
$arbeit = $_POST['arbeit'];
	
$file = fopen("auftraege.txt", "a+");

$text="\r\nKunde: $kunde\r\nFahrzeug: $fahrzeug\r\nFahrgestellnummer: $fgstnummer\r\nKennzeichen: $kennzeichen\r\nArbeiten: $arbeit\r\n";
fwrite($file,$text);

fclose($file);
}
?>
Beim speichern jedoch bekomme ich nach "kunde" 3 Zeilenumbrüche siehe nachfolgenden Quellode der Seite:
Code:
Kunde: Mazda<br /><br />
<br />
Fahrzeug: Mazda 6 Kombi<br />
Fahrgestellnummer: xxxxxxxxxxxxxxxxxxx<br />
Kennzeichen: XX-YY 11<br />
Arbeiten: Alles<br />
Mache ich aus dem Kundenfeld ein ganz normales Eingabefeld und gebe die Daten selbst ein funktionierts ohne Probleme, auch wenn ich das ganze mit MySQL statt ner Textdatei mache gehts, soll aber mit txt-Dateien funktionieren.

Ich könnte mir vorstellen das beim speichern der "Kunden" durch das hinzufügen der Zeilenumbrüche diese dann beim auslesen und erneuten speichern mit übernommen werden.
Ich habe nun aber keinen Plan wie ich die erkenne und entferne.
Kann mir da bitte jemand dabei helfen??

LG
Maik
 
Zuletzt bearbeitet:

maba

Noch nicht viel geschrieben

AW: Ungewollte Zeilenumbrüche beim speichern

a) ich würde auf \r verzichten, da PHP in den aktuellen Versionen mit diesen Umbrüchen umgehen kann. Nur der klassische Windows-Editor hat damit noch ein Problem. Als Ersatz für diesen würde ich Notepad++ empfehlen (gibt es bei sourceforge.net).

b) Das schreit nach Datenbank. Wenn Dein Provider keine MySQL oder ähnliches anbietet, dann ist in so einem Fall sqlite eine nette Datenbank.

c) Wenn Du auf ASCII-Text (wie werden Umlaute und andere Sonderzeichen gehandhabt?) bestehst, dann fehlt für eine korrekte Antwort ein Stück Code, nämlich das was die Dropdowns füllt.

Eine mögliche Lösung (mein Verdacht ist, daß Kunde ein \r\n am Ende hat). Wenn Du Deine Dropdowns füllst, z.B.

foreach ($alleZeilen as $zeile) {
$saubererKunde = trim($zeile);
// hier kommt dann das, was die Dropdown Liste füllt
// ...
}

Der Befehl trim macht alle Leerzeichen, Tabs, Zeilenumbrüche am linken und rechten Rand des Texts weg.
 
Zuletzt bearbeitet:

Zero2000

Noch nicht viel geschrieben

AW: Ungewollte Zeilenumbrüche beim speichern

Hallo,

also der Code der das Dropdown füllt ist folgender
Code:
<?php
  	$dateiname = "admin/kunden.txt";

	if (file_exists($dateiname))
	{
		$datei = fopen($dateiname,"r"); 
		if ($datei) 
		{
		echo "<select name='kunde' size='1'>";
		while(!feof($datei)) 
		{ 
		$text = nl2br(fgets($datei)); 
		echo "<option value='$text'>$text</option>";
		}
		echo "</select>";
		fclose($datei); 
		} 
	} else {
	echo "<br>Die Datei <strong>$dateiname</strong> existiert nicht!<br>Das ist nicht gut!<br><br>";
	} 
  ?>
Mein Hoster bietet MySQL an, aber es soll trotzdem mit txt-Dateien gearbeitet werden.
Schade, ich weis. Die gesamte Seite ist utf-8-codiert, wegen der Umlaute und Sonderzeichen. Vielleicht ist aber auch eine Seite dabei die das noch nicht ist, da ich das erst im Nachhinein gemacht habe. (war vorher iso-codiert)

LG
Maik
 

Doitsu

Aktives Mitglied

AW: Ungewollte Zeilenumbrüche beim speichern

PHP:
		$text = nl2br(fgets($datei)); 
		echo "<option value='$text'>$text</option>";
Wie maba schon sagte, du wird 'Mazda' mit einem Umbruch gespeichert haben (der 2 kommt durch EOL). Dazu haben Umbrueche in einer Selectbox nix zu suchen, warum tust du sie also rein machen? Benutze am besten trim() statt nl2br.
 

maba

Noch nicht viel geschrieben

AW: Ungewollte Zeilenumbrüche beim speichern

Ich würde folgende Änderung vorschlagen:

Dein Originalcode:
PHP:
	if (file_exists($dateiname))
	{
		$datei = fopen($dateiname,"r"); 
		if ($datei) 
		{
		echo "<select name='kunde' size='1'>";
		while(!feof($datei)) 
		{ 
		$text = nl2br(fgets($datei)); 
		echo "<option value='$text'>$text</option>";
		}
		echo "</select>";
		fclose($datei); 
		} 
	} else {
  // .....

Mein Vorschlag:

PHP:
	if (file_exists($dateiname))
	{
		echo "<select name='kunde' size='1'>";
		// lese alle Zeilen auf einmal in ein Array mit Einzelzeilen
		$zeilen = file($dateiname); 
                // Schleife über alle Zeilen
		foreach ($zeilen as $eine_zeile) {
		    $text = trim($eine_zeile);
 		    echo '<option value="'.$text.'">'.$text."</option>";
		}
		echo "</select>";
	} else {
  // .....

Zur Verbesserung der Lesbarkeit im Quellcode-Modus des Browsers kann man noch ein \n hinter </option> und </select> setzen.

Viele Grüße
 

Zero2000

Noch nicht viel geschrieben

AW: Ungewollte Zeilenumbrüche beim speichern

Hallo,

vielen Dank an euch, mit Hilfe von Trim konnte ich das Problem lösen.
Ihr seid Spitze und ich sollte mal einen echten PHP-Kurs machen statt diesem Selbstlerngedöhns.

LG
Maik
 

Zampano_

Nicht mehr ganz neu hier

AW: Ungewollte Zeilenumbrüche beim speichern

Wie meine Vorschreiber schon sagten, ist trim() die Methode der Wahl.
Noch eine Anmerkung zum Speichern der Daten:
wenn du die nur im Browser ausgibst, dann speicher doch direkt die <br>s in die Datei. Damit kannst du dann auf das nl2br verzichten. Nur am Ende jeder Zeile musst du das natürlich beibehalten.
Abgesehen davon ist es etwas merkwürdig in einer Dropdownliste Zeilenumbrüche zu machen. Bist du sicher das das in allen gängigen Browsern klappt?

Grüazi
 
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

Zurzeit aktive Besucher

Statistik des Forums

Themen
118.565
Beiträge
1.538.066
Mitglieder
67.488
Neuestes Mitglied
Andrew56524
Oben