tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
6
ZUGRIFFE
542
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    nick_beat20 nick_beat20 ist offline Mitglied
    Registriert seit
    Oct 2008
    Beiträge
    18
    Hallo zusammen,
    ich habe eine Funktion gebaut, mit der bei dem aktivieren diverser Checkboxen, jeweils eine neue Zeile, bestehend aus diversen Formularfeldern, eingefügt wird.

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    
                    <script type="text/javascript">
                    
                            var RowID = 0;
                        
                            function AddRow(part_id,part_beschreibung,kategorie) {
                            RowID++;
                            
                            var label = new Element('label', {'for': part_id + 'anzahl', 'style': 'display: block; width: 300px; height: 18px; float: left; line-height: 18px; padding-left: 5px; margin-right: 15px; background-color: #999999;'}).update(part_beschreibung);
                            var input_anzahl = new Element('input', {'type': 'text','id': part_id + 'anzahl','name': part_id + 'anzahl'});
                            var input_preis = new Element('input', {'type': 'text','id': part_id + 'preis','name': part_id + 'preis'});
                            var remove_link = new Element('a', { 'class': 'foo', href: '#', onclick: 'RemoveRow(' + RowID + ')' }).update("entfernen");
                            
                            var a = new Element('div', { 'id': 'feld' + RowID + '' })
                            
                            $('Posten' + kategorie + 'List').insert ({'bottom' : a });
                            
                            $('feld' + RowID).writeAttribute("style","border-bottom: 1px #999999 dotted; padding-top: 15px; padding-bottom: 15px;");
                            
                            $('feld' + RowID).insert ({'bottom' : label });
                            $('feld' + RowID).insert ({'bottom' : input_anzahl });
                            $('feld' + RowID).insert ({'bottom' : input_preis });
                            $('feld' + RowID).insert ({'bottom' : remove_link });
                            
                            $(part_id + 'anzahl').writeAttribute("value","test");
                            $(part_id + 'anzahl').writeAttribute("style","border: 1px #669900 solid; margin-right: 15px; width: 30px;");
                            
                            $(part_id + 'preis').writeAttribute("value","test");
                            $(part_id + 'preis').writeAttribute("style","border: 1px #669900 solid; margin-right: 15px;");
            
                            }
                            
                            function RemoveRow(RowID) {
                            $('feld' + RowID + '').remove();
                            }
                        
                    </script>

    Funktioniert super das ganze. Nun möchte ich gerne, wenn das Formular abgesendet wird, die Daten in meiner PHP Datei verarbeiten. Da aber vorher nicht absehbar ist, wieviele Zeilen eingefügt werden, denke ich mal dass es am besten ist, ein mehrdimensionales Array zu erstellen. Dieses kann dann von meinem PHP-Script ausgelesen und weiterverarbeitet werden.

    Nun ist die Frage wie ich in meinem Script ein Array erstelle. Da ich so etwas noch nie gemacht habe und mir Google auch nicht sonderlich weiterhelfen konnte wende ich mich nun an euch.

    Danke

    Gruß Sven
     

  2. #2
    Avatar von Sven Mintel
    Sven Mintel Sven Mintel ist offline Mitglied
    Registriert seit
    Aug 2003
    Beiträge
    18.238
    Blog-Einträge
    6
    Moin,

    ich würde dies über das name-Attribut der Inputs regeln.

    Beispiel:
    bisher->
    Code :
    1
    
    var input_anzahl = new Element('input', {'type': 'text','id': part_id + 'anzahl','name': part_id + 'anzahl'});
    neu->
    Code :
    1
    
    var input_anzahl = new Element('input', {'type': 'text','id': part_id + 'anzahl','name': 'anzahl['+part_id+']'});

    du solltest dann in PHP einen Request-Array anzahl erhalten, den du durchlaufen kannst(die part_id ist dabei der Key der Elemente, falls du diese benötigen solltest)
     

  3. #3
    nick_beat20 nick_beat20 ist offline Mitglied
    Registriert seit
    Oct 2008
    Beiträge
    18
    Hey Sven,
    vielen Dank für deine produktive Antwort.
    Nur sehe ich folgendes Problem, dass ich so die Felder (bis jetzt anzahl + preis) einander zugeordnet bekomme. Ich hatte mir das irgendwie so in der Art gedacht:

    row[part_id][anzahl]
    row[part_id][preis]
    usw.

    Ist das ein Denkfehler meinerseits?

    Danke

    Gruß Sven
     

  4. #4
    Avatar von Sven Mintel
    Sven Mintel Sven Mintel ist offline Mitglied
    Registriert seit
    Aug 2003
    Beiträge
    18.238
    Blog-Einträge
    6
    So kannst du es auch machen, wenn es besser passt für dich

    Code :
    1
    
    var input_anzahl = new Element('input', {'type': 'text','id': part_id + 'anzahl','name': 'row['+part_id+'][anzahl]'});
     

  5. #5
    nick_beat20 nick_beat20 ist offline Mitglied
    Registriert seit
    Oct 2008
    Beiträge
    18
    OK. So habe ich mir das gedacht. Das Ding ist jetzt nur dass wenn ich das Array in meiner foreach-Schleife durchlaufen lasse, wird mir nur "ArrayArrayArray" ausgeworfen.

    So sieht die Schleife aus:

    PHP-Code:
    foreach( $row as $part_id => $s ) {
      echo 
    $s;  

    Gibt es da was besonderes was ich beachten muss?

    Gruß Sven
     

  6. #6
    Avatar von Sven Mintel
    Sven Mintel Sven Mintel ist offline Mitglied
    Registriert seit
    Aug 2003
    Beiträge
    18.238
    Blog-Einträge
    6
    $s beinhaltet in deinem Fall ja wiederum einen Array mit den Elementen anzahl und preis, der Durchlauf müsste also so aussehen:
    Code :
    1
    2
    3
    
    foreach( $row as $part_id => $part ) {
      echo $part['anzahl'].'/'.$part['preis'];  
    }
     

  7. #7
    nick_beat20 nick_beat20 ist offline Mitglied
    Registriert seit
    Oct 2008
    Beiträge
    18
    Ich danke Dir Sven. Ich beneide Dich um Dein Wissen. Damit kann ich jetzt weiterarbeiten. Also nochmal vielen vielen Dank.

    Gruß Sven
     

Ähnliche Themen

  1. Antworten: 2
    Letzter Beitrag: 25.12.08, 07:07
  2. mehrdimensionales array
    Von Nadscha im Forum PHP
    Antworten: 12
    Letzter Beitrag: 17.07.07, 17:13
  3. Antworten: 5
    Letzter Beitrag: 30.04.07, 15:03
  4. Mehrdimensionales Array
    Von Texaner im Forum Javascript & Ajax
    Antworten: 8
    Letzter Beitrag: 17.11.03, 19:56
  5. mehrdimensionales array
    Von kimbo im Forum PHP
    Antworten: 2
    Letzter Beitrag: 26.10.03, 09:55