tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
8
ZUGRIFFE
422
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Registrierer Registrierer ist offline Mitglied Gold
    Registriert seit
    Mar 2009
    Beiträge
    171
    Das Formular:
    HTML-Code:
    <form name="vorschlag" method="post" action="">
      <textarea name="text_1[]" onchange="document.vorschlag.submit();"></textarea>
      <textarea name="text_1[]" onchange="document.vorschlag.submit();"></textarea>
    </form>
    gibt, wenn ich im 1. Feld "aaa" eingebe nach
    PHP-Code:
    <?PHP echo "<pre>"print_r($_POSTtrue) ."</pre>"?>
    folgendes aus:
    Array
    (
    [text_1] => Array
    (
    [0] => aaa
    [1] =>
    )

    )

    Ich benötige jetzt nicht nur den Inhalt (aaa), sondern auch den Schlüssel - in dem Fall 0.
    Wie komme ich daran?
    Also als Beispiel echo $_POST['text_1'][0]; <- diese Null!
    Danke.
    Geändert von Registrierer (21.11.11 um 22:52 Uhr)
     

  2. #2
    Avatar von para_noid
    para_noid para_noid ist offline Mitglied Gold
    Registriert seit
    Aug 2011
    Beiträge
    144
    Das kommt drauf an wie du auf die Werten zugreifen willst.

    Wenn du das Formulararray später mit einer Schleife durchgehst, kannst du dir den Index jeweils mit key() zurückgeben lassen.

    Wenn du den passenden Index zu einem bekannten Wert haben möchtest, sollte array_search() helfen.
     
    Für die Übereinstimmung von Niederschrift und Hirninhalt.

  3. #3
    Registrierer Registrierer ist offline Mitglied Gold
    Registriert seit
    Mar 2009
    Beiträge
    171
    Zitat Zitat von para_noid Beitrag anzeigen
    Das kommt drauf an wie du auf die Werten zugreifen willst.
    Der Hintergrund ist ein Formular mit erheblich mehr Feldern und natürlich mehr Zeilen, die einer Datenbank entspringen.
    Wird im Textfeld etwas verändert und das Feld verlassen, soll die Änderung sofort in der DB übernommen werden.
    Dazu brauche ich den Bereichsschlüssel, der den entsprechenden Wert des Feldes bzw. Tabellenzeile repräsentiert.
    Also nix Schleife
    Geändert von Registrierer (21.11.11 um 23:23 Uhr)
     

  4. #4
    Avatar von Yugeen
    Yugeen Yugeen ist offline Mitglied Silber
    Registriert seit
    Sep 2011
    Beiträge
    69
    Spontan würde mir
    PHP-Code:
    foreach($array as $key => $value){
    //...

    einfallen, hat alles was du brauchst, sonnst wüsste ich auch nicht wie man an den Schlüssel rankommt :/
     

  5. #5
    Avatar von Yaslaw
    Yaslaw Yaslaw ist offline n/a
    tutorials.de Moderator
    Registriert seit
    Dec 2007
    Ort
    Winterthur(CH)
    Beiträge
    5.205
    Da du nur immer ein Eintrag im Array abgefüllt hast, kannst du den Array einfach ausfiltern. Was übrig bleibt ist dein Wert und der Schlüssel
    PHP-Code:
    $entry array_filter($_POST['text_1']);
    $index key($entry);
    $value current($entry); 
     
    ---------------------------------------------------------------------------------------------------
    item: Ich habe es mir aus gesundheitlichen Gründen abgewöhnt unformatierten Code zu lesen (Auch SQL-Statements kann man formatieren!)
    item: Tutorial: [PHP][MySQL] Debug Queries
    item: Schreibt mir keine PN mit Fragen die im Forum beantwortet werden können - ich mache kein persönliches coaching
    item: Bitte zur besseren Lesbarkeit PHP-Code in [PHP]...[/PHP], SQL in [SQL]...[/SQL], Visual Basic in [VB]...[/VB] etc. schreiben

  6. #6
    Registrierer Registrierer ist offline Mitglied Gold
    Registriert seit
    Mar 2009
    Beiträge
    171
    Zitat Zitat von Yaslaw Beitrag anzeigen
    Da du nur immer ein Eintrag im Array abgefüllt hast, kannst du den Array einfach ausfiltern. Was übrig bleibt ist dein Wert und der Schlüssel
    PHP-Code:
    $entry array_filter($_POST['text_1']);
    $index key($entry);
    $value current($entry); 
    Danke, array_filter war mir nicht geläufig!
     

  7. #7
    Registrierer Registrierer ist offline Mitglied Gold
    Registriert seit
    Mar 2009
    Beiträge
    171
    Ein Problem gelöst, neues aufgetaucht.
    Folgende Situation:
    PHP-Code:
    <?PHP
    echo "<pre>"print_r($_POSTtrue) ."</pre>";
    $entry array_filter($_POST['text_1']);
    $index key($entry);
    echo 
    $index;
    ?>
    <form name="vorschlag" method="post" action="">
      <textarea name="text_1[]" id="100" onchange="document.vorschlag.submit();">Vorbelegung aus DB</textarea>
      <textarea name="text_1[]" id="200" onchange="document.vorschlag.submit();"></textarea>
    </form>
    Wenn das Feld mit der id 100 vorbelegt ist und im Feld mit der id 200 der onchange Effekt ausgelöst wird, ist $index immer 0! anstatt 1.

    Nur wenn beide Textfelder leer sind, bekomme ich als Rückgabe den richtigen Wert und den richtigen Schlüssel.
    Was habe ich übersehen?

    Vielen Dank.
     

  8. #8
    Avatar von para_noid
    para_noid para_noid ist offline Mitglied Gold
    Registriert seit
    Aug 2011
    Beiträge
    144
    Yaslaw hat es in seinem Post schon erwähnt:

    Da du nur immer ein Eintrag im Array abgefüllt hast
    $entry besitzt in diesem Fall $_POST['text_1'][0] & $_POST['text_1'][1], weil keiner der Werte false ist und entsprechend rausgefiltert wurde.

    An der Stelle
    PHP-Code:
    $index key($entry); 
    ist der Zeiger dann auf dem ersten Element, also Index 0.

    Ich schätze, langfristig wirst du um eine Übergabe des Namens im Event nicht herumkommen. Man könnte ein hidden-Input hinzufügen und im onchange-Event der Textfelder mit fillHidden(this.name) den Namen (oder gleich den Index) des geänderten Textfeldes übergeben, in der Funktion dann das value des hidden-Inputs mit dem Namen befüllen und danach erst das Formular absenden.
    Zugriff erfolgte dann über $_POST['name_des_hidden_inputs'].

    Btw, IDs dürfen meines Wissens nach nicht mit einer Ziffer beginnen.
     
    Für die Übereinstimmung von Niederschrift und Hirninhalt.

  9. #9
    Registrierer Registrierer ist offline Mitglied Gold
    Registriert seit
    Mar 2009
    Beiträge
    171
    Zitat Zitat von para_noid Beitrag anzeigen
    Ich schätze, langfristig wirst du um eine Übergabe des Namens im Event nicht herumkommen.
    Vielen Dank.
    Da ich in JS nicht sehr bewandert bin und der Aufwand mit zusätzlichen Feldern und JS Funktionen warscheinlich mein Wissen übersteigt und zusätzliche Fehlerquellen lauern, werde ich es wohl bei einem Absendeknopf belassen
     

Ähnliche Themen

  1. [SQL] Alles Daten aus eins auslesen/nur Daten mit c an dritter Stelle auslesen
    Von sqL-beginner im Forum Relationale Datenbanksysteme
    Antworten: 3
    Letzter Beitrag: 22.03.11, 21:58
  2. cmd.exe auslesen
    Von Respeckt im Forum Sonstige Sprachen
    Antworten: 7
    Letzter Beitrag: 06.04.09, 23:16
  3. Xml auslesen
    Von JaD im Forum C/C++
    Antworten: 12
    Letzter Beitrag: 20.03.08, 10:51
  4. Uhr Auslesen
    Von Mailyn im Forum Visual Basic 6.0
    Antworten: 1
    Letzter Beitrag: 06.04.06, 12:58
  5. GAC auslesen
    Von bastiglasl im Forum .NET Café
    Antworten: 6
    Letzter Beitrag: 25.11.05, 09:54