Mit PHP Zwei Textareas mittels Schleife auslesen?
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
absenden
anzahl
array
bild
code
datei
datum
feld
formular
frage
http
image
input
post
problem
schleife
textfeld
type
url
zeile
-
So soll es in der Datei gespeichert werden:
name1-#-link1 name2-#-link2 name3-#-link3 name4-#-link4
Die "name" stehen im Textfeld "head1", die "link" im Textfeld "head1link". Ich habe das so versucht:
$daten = $_POST['head1'].'-#-'.$_POST['head1link']; $daten = str_replace('&','&',$daten); $daten = str_replace('ß','ß',$daten); $daten = str_replace('ü','ü',$daten); $daten = str_replace('Ü','Ü',$daten); $daten = str_replace('ä','ä',$daten); $daten = str_replace('Ä','Ä',$daten); $daten = str_replace('ö','ö',$daten); $daten = str_replace('Ö','Ö',$daten); $datei = fopen(************); (Link zur Datei entfernt) fwrite($datei, $daten); fclose($datei);
Allerdings speichert er mir das dann (logischerweise) so:
name1name2name3name4-#-link1link2link3link4
Wie schaffe ich es also, dass er vobeiden Textfeld jeweils die erste (zweite, dritte, bis zur letzten) Zeile nimmst und abspeichert? Schleife? Aber wie sieht das dann aus? -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Da wirft er mir folgendes aus:
Array ( [head1] => test1 test2 test3 test4 [head1link] => link1 link2 link3 link4 [send] => Absenden )
-
Das Problem ist, dass du alles in zwei verschiedenen Arrays speicherst.
Mussst alles im selben speichern.
Eine einem assoziativen array -
Ich übergebe beide Textareas mittels POST Variable, wie mach ich das denn das alles in einem Array steht und wie sieht dann die foreach Schleife aus?
-
<textarea name="inhalt_name[1]"></textarea> <textarea name="inhalt_name[2]"></textarea>
Müsste so gehen! -
So weit so gut:
Array ( [head] => Array ( [1] => test1 test2 test3 test4 [2] => link1 link2 link3 link4 ) [send] => Absenden )
Hab die Variablen also head[1] und head[2] benannt, aber wie genau sieht jetzt die Schleife aus damit der Inhalt so gespeichert wird wie ganz oben erwähnt? -
Warum nimmst du nicht inputs, Das problem ist, das der Textarea nur mal mehrzeilig ist.
so kannst du ihn nicht so auslesen wie du es willst.
Du musst einzelen Inputs nehmen:
<input type="text" name="head_1" value="" /> <input type="text" name="head_2" value="" /> <input type="text" name="head_3" value="" /> <input type="text" name="head_4" value="" /> <input type="text" name="head_5" value="" /> <input type="text" name="head_6" value="" />
Dann klappt es auch. -
So hatte ich das anfangs auch, aber die Anzahl muss ich ja vorher festlegen, und ich hab mich für die Textarea entscheiden weil ich dort so viele Zeilen machen kann wie ich will.
-
melonenfans schrieb:
So hatte ich das anfangs auch, aber die Anzahl muss ich ja vorher festlegen, und ich hab mich für die Textarea entscheiden weil ich dort so viele Zeilen machen kann wie ich will.
Aber das geht nicht! -
mal <var> = explode ("\n", $_POST['head']); probiert?
-
czibere schrieb:
mal <var> = explode ("\n", $_POST['head']); probiert?
Das Problem ist hier, aber auch die Usereingabe.
Wenn der User nur einm,al vergisst ENTER zu drücken klappt es schon wieder nicht.
Man muss immer davon ausgehen einen absoluten nichts Könner davor sitzen zu haben.
Daher wäre mit inputs besser geholfen.
Und dann eine JS wo man eingibt wie viele Links man eingeben will und soviel Inputs stehen dann dort. -
Also wenn du schon von Nichtskönnern sprichst, dann setz doch mal bitte nicht vorraus, dass jeder JS aktiviert hat.
Einige schalten dies ab und das sind eher die etwas Vorsichtigeren und auch ein wenig Wissenden. Und wenn du JS vorraussetzt machst du es für die wiederum unmöglich überhaupt etwas einzugeben.
Also falls es mit Inputfeldern gemacht werden soll, könnte man halt einfach eine Seite vorschalten die die Anzahl der Inputs abfragt, danach wird dann auf die tatsächliche Seite weitergeleitet, bei der dann mit PHP die Anzahl ausgewertet wird und die entsprechende Anzahl an <input> feldern ausgegeben.
MfG
karlsve -
karlsve schrieb:
Also wenn du schon von Nichtskönnern sprichst, dann setz doch mal bitte nicht vorraus, dass jeder JS aktiviert hat.
Einige schalten dies ab und das sind eher die etwas Vorsichtigeren und auch ein wenig Wissenden. Und wenn du JS vorraussetzt machst du es für die wiederum unmöglich überhaupt etwas einzugeben.
Also falls es mit Inputfeldern gemacht werden soll, könnte man halt einfach eine Seite vorschalten die die Anzahl der Inputs abfragt, danach wird dann auf die tatsächliche Seite weitergeleitet, bei der dann mit PHP die Anzahl ausgewertet wird und die entsprechende Anzahl an <input> feldern ausgegeben.
MfG
karlsve
Ja oder so.
Aber, da er auch Probleme hat mit dem normalen auslesen von Arrays, dachte ich vielleicht JS wäre leichter.
Aber deine Variante wäre noch beser:
<?php if(isset($_POST['anzahl'])) { for($i = 0 ; $i <= $_POST['anzahl']; $i++) { echo '<input type="text" name="head_'.$i.'" /><br />'; } } else { ?> <form action="<?php echo $_SERVER['PHP_SELF']?>" method="post" > <input type="text" name="anzahl" /> <input type="submit" name="EIngeben" value="Eingeben"/> </form> <?php } ?>
Habe es getestet.
Kannst es auch hier probieren. http://newwarrior.lima-city.de/test.php -
@newwarrior
... Wenn der User nur einm,al vergisst ENTER zu drücken ...
und genau wie @karlsve sagt, ich kann aless auf jede erdnekliche art prüfen. nur dann ist die frage ob eine mikrige input so viel aufwand wert ist? in diesem fall ist aus meiner sicht möglich den 'name-N' zu testen und ob dazu ein link existiert, der auf eine gültige datei verweist. dann ist mir des user 'enter' reichlich egal. oder übersehe ich da was?
Beitrag zuletzt geändert: 22.1.2010 7:28:46 von czibere -
Aber er ist ein ziemlicher Anfänger.
Daher ist es so einfacher.
Er muss die Grundlagen lernen bevor er 20 mal alles checken muss.
Ich denke seine PHP Kenntnisse werden noch nicht soweit sein, dass er solche FUnktionen oder ähnliches schreiben kann, dass die textareas geprüft werden -
das mag sein. aber es wird ihm nicht erspart bleiben das zu lernen. je früher umso weniger ärger - glaube ich ...
-
Ich habe eine Frage? Kann man dass auch per Array machen?
-
Leute, was wird das?!?
Es hat nicht unser Problem zu sein, ob man Textareas oder Inputs nutzt. In fände Textareas bequemer. Und wenn der Threadersteller das ebenfalls so sieht, dann lasst ihn!
@Threadersteller: Nutze die vorgeschlagene explode-Strategie. -
So, jetzt hören wir mal mit dem Blödsinn auf, und fangen mit PHP an. Was Nikic gesagt hat ist 100%ig richtig. Daraus habe ich jetzt mal einen Code gemacht. Eigentlich ganz einfach:
// $_POST['head1'] und $_POST['head1link'] verwenden // 2 gesonderte Textareas $names = explode("\n", $_POST['head1']); $links = explode("\n", $_POST['head1link']); foreach($names as $c => $name) { $schreiben = $schreiben.$name.'-#-'.$links[$c]; }
-
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage