Textarea verträgt sich nicht mit dem € Zeichen

Fragen zu allen Themen rund ums Programmieren außerhalb von phpBB können hier gestellt werden - auch zu anderen Programmiersprachen oder Software wie Webservern und Editoren.
Antworten
hotkey
Mitglied
Beiträge: 89
Registriert: 19.11.2002 13:49
Wohnort: Stralsund
Kontaktdaten:

Textarea verträgt sich nicht mit dem € Zeichen

Beitrag von hotkey »

Ich habe ein Problem mit meinem Formular. Wenn in der Textarea ein € Zeichen verwendet wird, dann wird beim Abschicken des Formulars der Wert des ersten Eingabefelds gelöscht. Kann mir jemand sagen warum das passiert?
Benutzeravatar
oxpus
Ehemaliges Teammitglied
Beiträge: 5394
Registriert: 03.02.2003 12:33
Wohnort: Bad Wildungen
Kontaktdaten:

Beitrag von oxpus »



also hier funktioniert das. Poste doch mal den Code...

OXPUS
Grüße
OXPUS
Kein Support bei unaufgeforderten PNs, E-Mails oder auf anderem Weg!!
hotkey
Mitglied
Beiträge: 89
Registriert: 19.11.2002 13:49
Wohnort: Stralsund
Kontaktdaten:

Beitrag von hotkey »

Code: Alles auswählen

<?php
include ("connect.php");
?>
<!-- Start Protokolle //-->
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<form action="<?php $PHP_SELF ?>" method="post" enctype="multipart/form-data" name="records_insert">
  <tr>
    <td colspan="5" align="left" valign="top">&nbsp;</td>
  </tr>
  <tr>
    <td width="5%" align="left" valign="top">&nbsp;</td> 
    <td width="45%" align="left" valign="top">
      <fieldset>
        <legend>
          <p class="content_topic">
            Protokolle:
          </p>
        </legend>

<table width="100%" border="0" cellspacing="0" cellpadding="0">
  <tr> 
    <td width="30%" align="left" valign="top">
      <p class="content_font">
        Datum:
      </p>
    </td>
    <td width="70%" align="left" valign="top">
      <input class="content_input" name="records_date" size="30" maxlength="10" value="<?php echo "".$_POST['records_date'].""?>">
    </td>
  </tr>
  <tr> 
    <td width="30%" align="left" valign="top">
      <p class="content_font">
        Thema:
      </p>
    </td>
    <td width="70%" align="left" valign="top">
      <input class="content_input" name="records_topic" size="30" maxlength="40" value="<?php echo "".$_POST['records_topic'].""?>">
    </td>
  </tr>  
  <tr>
    <td width="30%" align="left" valign="top">
      <p class="content_font">
        Text:
      </p>
    </td>
    <td width="70%" align="left" valign="top">
      <textarea class="content_textarea" name="records_text" cols="40" rows="15" wrap="physical"><?php echo "".stripslashes($_POST['records_text']).""?></textarea>
    </td>
  </tr>
  <tr>
    <td colspan="2" align="left" valign="top">&nbsp;</td>
  </tr>
  <tr>
    <td width="30%" align="left" valign="top">&nbsp;</td>
    <td width="70%" align="left" valign="top">
      <input class="content_input" type="submit" name="records_insert" value="Protokoll anlegen">
    </td>
  </tr>    
</table>

      </fieldset>        
    </td>
    <td width="5%" align="left" valign="top">&nbsp;</td>
    <td width="40%" align="left" valign="top">
      <fieldset>
        <legend>
          <p class="content_topic">
            Statusmeldung:
          </p>
        </legend>
    
<table width="100%" border="0" cellspacing="0" cellpadding="0">
  <tr>
    <td width="100%" align="left" valign="top">
<?php    
// Der folgende PHP Code prüft, ob alle Felder ausgefüllt wurden.
if (isset($_POST['records_insert'])) {	
  if ($_POST['records_date'] == "") {
  	$records_error[0] = "&middot; Es wurde kein Datum eingegeben.<br>\n";  
  } elseif (!ereg("^([0-9]{2}).([0-9\-]{2}).([0-9\-]{4})$", $_POST['records_date'])) {
  	$records_error[1] = "&middot; Das Datum wurde im falschen Format eingegeben.<br>\n";  	
  }
  
  if ($_POST['records_topic'] == "") {
  	$records_error[2] = "&middot; Es wurde kein Thema eingegeben.<br>\n";  
  } 
  
  if ($_POST['records_text'] == "") {
  	$records_error[3] = "&middot; Es wurde kein Text eingegeben.<br>\n";  
  }
  
  if (isset($records_error)) {
  	echo "      <p class=\"content_font\">\n";
  	echo "        Der Datensatz konnte nicht angelegt werden.<br> Es traten folgende Fehler auf:\n";
  	echo "      </p>\n";
  	echo "      <p class=\"content_warn\">\n";
  	
  	for ($i = 0; $i <= 3; $i++) {
  	  echo "        ".$records_error[$i]."\n";  	  
  	}
  	
  	echo "      </p>\n";
  } else {  	
  	echo "      <p class=\"content_font\">\n";
  	echo "        Der Datensatz wurde erfolgreich angelegt.\n";
  	echo "      </p>\n";
  	
  	$records_topic = trim($_POST['records_topic']);
  	$records_text = trim($_POST['records_text']);
  	$records_date = trim($_POST['records_date']);
  	$records_update = date("d.m.Y");  	  	
  	$records_username = $_SESSION['login_username'];
  	
  	// Der folgende MySQL Code speichert die Daten in der Datenbank.
  	if ($update = mysql_query("INSERT INTO records
  							   SET records_topic = '$records_topic',
  								   records_text = '$records_text',
  								   records_date = '$records_date',
  								   records_update = '$records_update',
  								   records_username = '$records_username'")) {
  	
  	// Der folgende PHP Code erzeugt eine PDF Datei.
  	$fd = fopen("pdf/Protokoll_".$_POST['records_date'].".pdf", "w");
 	$pdfdoc = pdf_open($fd);
 	pdf_begin_page($pdfdoc, 595, 842);
	pdf_set_font($pdfdoc, "Times-Roman", 12, "host");
	pdf_set_text_pos($pdfdoc, 45, 752);
	pdf_show($pdfdoc, "Protokoll");
	pdf_set_text_pos($pdfdoc, 45, 740);
	pdf_show($pdfdoc, "Datum:");
	pdf_set_text_pos($pdfdoc, 145, 740);
	pdf_show($pdfdoc, "".$_POST['records_date']."");
	pdf_set_text_pos($pdfdoc, 45, 728);
	pdf_show($pdfdoc, "Thema:");
	pdf_set_text_pos($pdfdoc, 145, 728);
	pdf_show($pdfdoc, "".$_POST['records_topic']."");
	pdf_set_text_pos($pdfdoc, 45, 716);
	pdf_show($pdfdoc, "Text:");
	pdf_set_text_pos($pdfdoc, 145, 716);
	pdf_show($pdfdoc, "".nl2br($_POST['records_text'])."");
	pdf_end_page($pdfdoc);
	pdf_close($pdfdoc);
	fclose($fd);
  	
  	// Der folgende PHP Code verschickt eine eMail.
    }  	
  }
} else {
  echo "        &nbsp;\n"; 
}  	
?>
    </td>
  </tr>
</table>    
    
      </fieldset>
    </td> 
    <td width="5%" align="left" valign="top">&nbsp;</td>
  </tr>
  <tr>
    <td>&nbsp;</td>
  </tr>
</form>
</table>
<!-- End Protokolle //-->
Zuletzt geändert von hotkey am 17.10.2003 14:25, insgesamt 1-mal geändert.
Benutzeravatar
oxpus
Ehemaliges Teammitglied
Beiträge: 5394
Registriert: 03.02.2003 12:33
Wohnort: Bad Wildungen
Kontaktdaten:

Beitrag von oxpus »

Das hat mit dem Euro-Zeichen nichts zu tun. Du hast die Felder für Datum und Dauer mit dem gleichen Namen name="news_period" versehen. Dann kann natürlich das Datum nicht mit übertragen werden, weil das Feld den Wert Dauer beinhaltet.
Der Variablen weist Du Datum zu. Setze doch im entsprechenden <input...>-Befehl name="news_date" und weise dieses dann der Variablen zu...

OXPUS
Grüße
OXPUS
Kein Support bei unaufgeforderten PNs, E-Mails oder auf anderem Weg!!
hotkey
Mitglied
Beiträge: 89
Registriert: 19.11.2002 13:49
Wohnort: Stralsund
Kontaktdaten:

Beitrag von hotkey »

Ich habe den Code für die News gepostet, weil sich die Dateien ähnlich sind. Außerdem ist der Code ein wenig kürzer und übersichtlicher.

Bezüglich der doppelt benannten Input Felder hast Du natürlich recht, aber das fällt nicht wirklich ins Gewicht, weil das erste Feld ja automatisch das aktuelle Datum zugewiesen bekommt und gleichzeitig schreibgeschützt ist.

Mein Problem tritt jedoch bei den Protokollen auf und dort sind meiner Meinung nach keine Input Felder oder Variablen doppelt benannt. Ich kann das komplette Formular ausfüllen und wenn ich in der Textarea ein € Zeichen verwende, wird nur das Datums Feld gelöscht. Alle anderen Eingaben bleiben bestehen.

PS: Ich habe den Code mal fix ausgetauscht.
Benutzeravatar
oxpus
Ehemaliges Teammitglied
Beiträge: 5394
Registriert: 03.02.2003 12:33
Wohnort: Bad Wildungen
Kontaktdaten:

Beitrag von oxpus »

Goodi, der Code war zumindest nicht fehlerhaft. Ich werde mir nachher/morgen mal den aktuellen ansehen. Vielleicht finde ich ja das Problem noch...
Grüße
OXPUS
Kein Support bei unaufgeforderten PNs, E-Mails oder auf anderem Weg!!
hotkey
Mitglied
Beiträge: 89
Registriert: 19.11.2002 13:49
Wohnort: Stralsund
Kontaktdaten:

Beitrag von hotkey »

Mal sehen ob Du etwas findest. Ich bin dir auf jeden Fall dankbar. Wenn man seid Tagen in diversem Code festhängt, dann findet man solche Fehler eh nur noch selten. Gerade wenn es so etwas spezielles ist.

Vielleicht muß ich einfach nur von PHP mitgelieferte Funktion wie z.B. stripslashes oder ähnliches vor die Variable setzen oder es ist ein Bug in Zusammenhang mit der Session oder meinem wilden Code.

Oder, oder, oder ... ;)
Benutzeravatar
oxpus
Ehemaliges Teammitglied
Beiträge: 5394
Registriert: 03.02.2003 12:33
Wohnort: Bad Wildungen
Kontaktdaten:

Beitrag von oxpus »

... oder bei Obi.
Nicht verzagen. Vielleicht stösst ja auch ein ganz anderer noch drauf.
Schaun wir mal...


EDIT: Ich hab alles probiert. Leider ohne Erfolg. Sobald ein Euro-Zeichen im Text eingegeben wird, ist das Datum weg. Ich weis nicht mehr weiter :cry:
Grüße
OXPUS
Kein Support bei unaufgeforderten PNs, E-Mails oder auf anderem Weg!!
Antworten

Zurück zu „Coding & Technik“