kostenloser Webspace werbefrei: lima-city


Mit PHP Zwei Textareas mittels Schleife auslesen?

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    melonenfans

    melonenfans hat kostenlosen Webspace.

    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?
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. n********r

    Mit Foreach.
    Grund, POST ist ein array.

    Mach mal Bitte folgendes:

    echo '<pre>';
    print_r($_POST);

    Und dann poste mal, was dort dann steht.
  4. Autor dieses Themas

    melonenfans

    melonenfans hat kostenlosen Webspace.

    Da wirft er mir folgendes aus:

    Array
    (
        [head1] => test1
    test2
    test3
    test4
    
        [head1link] => link1
    link2
    link3
    link4
        [send] => Absenden
    )

  5. n********r

    Das Problem ist, dass du alles in zwei verschiedenen Arrays speicherst.
    Mussst alles im selben speichern.

    Eine einem assoziativen array
  6. Autor dieses Themas

    melonenfans

    melonenfans hat kostenlosen Webspace.

    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?
  7. n********r

    <textarea name="inhalt_name[1]"></textarea>
    <textarea name="inhalt_name[2]"></textarea>


    Müsste so gehen!
  8. Autor dieses Themas

    melonenfans

    melonenfans hat kostenlosen Webspace.

    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?
  9. n********r

    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.
  10. Autor dieses Themas

    melonenfans

    melonenfans hat kostenlosen Webspace.

    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.
  11. n********r

    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!
  12. mal <var> = explode ("\n", $_POST['head']); probiert?
  13. n********r

    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.
  14. karlsve

    Moderator Kostenloser Webspace von karlsve

    karlsve hat kostenlosen Webspace.

    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
  15. n********r

    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
  16. @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
  17. n********r

    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
  18. das mag sein. aber es wird ihm nicht erspart bleiben das zu lernen. je früher umso weniger ärger - glaube ich ...
  19. s********m

    Ich habe eine Frage? Kann man dass auch per Array machen?
  20. 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.
  21. 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];
        }
  22. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!