Textarea und variable...

  • Themenstarter Themenstarter Comenius
  • Beginndatum Beginndatum
C

Comenius

Hallo,

Ich möchte gerne, dass jede Zeile aus einer Textarea in eine Variable gepeichert wird, aber irgendwie komme ich nicht weiter.

PHP:
  <center>
       <?php
       echo '<form action="'.$_SERVER["PHP_SELF"].'" method="post">';
       echo '<textarea name="TEXT" cols="85" rows="20">';
       
       if (isset($_REQUEST["TEXT"])) 
       {
       echo $_REQUEST["TEXT"];
       }
       
       echo '</textarea>';
       echo '<input type="submit" value="OK">';
       echo '</form>';
       
       if (isset($_REQUEST["TEXT"])) 
       {
       $Zeilen = preg_split("/\r\n/", $_REQUEST["TEXT"]);
       foreach ($Zeilen as $key => $value){
       echo 'Der Inhalt von Zeile '.$key.' ist: "'.$value.'"<br>';
       }
       }
       ?>
     </center>




Ich habe in der Mitte eine Textarea mit einem "OK" Button.
Schreibt man nun etwas in die Area und drückt den Button, wird der Text, "gesplittet" unter dem Button ausgegeben:

---------
xxxxx
yyyyy
zzzzz
---------
OK
xxxxx
yyyyy
zzzzz

Ich möchte nur gerne jede Zeile in eine eigene Variable... hab leider keine Idee.
Freue mich schon auf Antworten

Gruss
Commi
 
Probier mal folgenden regulären Ausdruck zum Aufteilen der Zeichenkette: (\x0D\x0A|\x0A|\x0D)
 
Wie sollen denn die Variablen heissen? Die müssen dann ja auch dynamisch benennt werden, da du nicht weisst, wieviele Elemente $_REQUEST['TEXT'] hat.

Andere Frage: Warum einzelne Variablen für etwas verwenden, wofür ein Array offensichtlich viel besser geeignet ist (da er genau dafür da ist)?
 
sorry, hätte ich noch dazuschreiben sollen...

Ich möchte mit den Variablen Datenbankabfragen machen.

Deswegen muss auch für jede Zeile eine Variable erstellt werden.

Gruss
Commi :)

PS: Das stimmt, ich weiss nicht wie viele Zeilen (Variablen) ich am Ende habe, das ist immer unterschiedlich.
-
Gumbo das verstehe ich nicht ganz... :confused:
 
Zuletzt bearbeitet von einem Moderator:
Du kannst aber ja trotzdem ein Array nehmen. Die einzelnen Einträge darin lassen sich ja fast so benutzen wie einzelne Variablen.

Ich würde das etwa so machen:
PHP:
$keys = split("\n", $text);
$i = 1;
foreach($keys as $key){
  echo "in Zeile".$i." steht: ".$key;
  $i++;
}

Gruß Steff
 
Hmmm, ich verstehe nicht ganz... wie kann ich da die einzelnen Zeilen ansprechen ?

Ich habe deinen Code mal eben bei mir eingebaut, aber es wird genauso ausgegeben wie vorher.

Unter dem OK steht dann folgendes:

in Zeile1 steht: xxxxx
in Zeile1 steht: yyyyy
in Zeile1 steht: zzzzz
in Zeile1 steht:

(Das da nun überall "Zeile 1" steht, is eigentlich egal. Am ende soll ja nichts ausgegeben werden, sondern die Datenbank abgefragt werden.)

Kannst du mir das vielleicht nochmal erklären ? wäre nett :)

Gruss
Commi
 
Hm also ich weiß jetzt gerade nicht so genau was du wissen willst. Aber ich versuch trotzdem mal zu erklären was da passiert.

Also
PHP:
  $keys = split("\n", $text);
zerlegt den String der in $text steht in ein Array und zwar splitet der immer bei \n das ist ein Zeichen oder Synonym für einen Zeilenumbruch d.h. in jedem Feld von dem Array steht genau eine Zeile aus dem Textfeld.
mit
PHP:
 foreach($keys as $key)
wird jetzt das ganze Array durchlaufen und jede einzelne Zeile ausgegeben. Ich denke du hast bei dir vergessen $i zu inkrementieren in der Schleife dadurch steht halt immer Zeile 1 da war auch nur zur veranschaulichung.
Eine besser Bezeichnerwahl gibt dir vieleicht mehr Aufschluss darüber was passiert:
PHP:
 foreach ($alleZeilen as $einZeile)
Hoffe das hilft dir weiter.
Gruß Steff
 
PHP:
<html>
<head>
</head>
<body>
<form action="index.php" method="Get">
<textarea name="text" rows="5" cols="5">
</textarea>
<input type="submit" value="submit"/>
</form>
<?php
/*
 * Created on 25.04.2005
 *
 * Author sid
 */
 if(isset($_GET["text"])){
     $text = $_GET["text"];
     $keys = split("\n", $text);
     $i = 1;
     foreach($keys as $key){
       echo "in Zeile".$i." steht: ".$key."<br";
       $i++;
    } 
}
?>

Habs mal bei mir getested läuft einwand frei.

Gruß Steff
 
Sonst wäre auch Folgendes möglich:
PHP:
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post" accept-charset="utf-8">
	<textarea name="foobar"></textarea><input type="submit"/>
</form>
<?php

	if( isset($_POST['foobar']) ) {
		$contents = preg_split('/(?:\x0D\x0A|\x0A|\x0D)/u', trim($_POST['foobar']));
		foreach( $contents as $key => $value ) {
			echo '<p>Der Inhalt von Zeile '.($key+1).' ist: <code>'.htmlspecialchars($value).'</code></p>';
		}
	}

?>
Falls es nicht dem entspricht, was du dir vorgestellt hast, solltest du dein Anliegen noch einmal präzise beschreiben.
 
Hmmm....

@Steff : Ich habe deinen Code gerade mal 1 zu 1 kopiert und ausprobiert, er gibt bei mir nur die erste Zeile aus.

@Gumbo : Er gibt es ohne Probleme aus, nur muss ich mit jeder Zeile arbeiten können, aber die hängen bei deinem Code ja noch irgendwie in diesem Arry.. *grübel*

Ich schreibe jetzt einfach mal genau, was ich überhaupt vorhabe...

Wie schon gesagt, habe ich ein Textarea.
Wenn ich da nun in jede Zeile etwas eingebe, zb.:
1. xxxxx
2. yyyyy
3. zzzzz
Dann möchte ich gerne jede Zeile in eine Variable packen.
Habe ich dann die Variable, mache ich damit eine Datenbankabfrage.

Also zb. so :

$var1 (xxxxx)
$var2 (yyyyy)
$var3 (zzzzz)

und dann Frage ich mit diesen wörtern die passende Spalte in der Mysql Datenenbank ab. Als ergebniss bekomme ich dann zb. sowas hier:

xxxxx = Blau
yyyyy = Auto
zzzzz = Schön

Und um das machen zu können, brauche ich jede Zeile in einer Variablen.

Ich kann leider nie sagen wie viele Variablen es werden, die Eingaben in das Textarea sind immer unterschiedlich.

puuh *g* hoffe das mich jetzt jemand versteht :)

Danke auf jedenfall schonmal für eure Antworten, ging alles sehr fix :p:p:p

Gruss
Commi
 
Zurück