Jump to content

acratus

New Members
  • Posts

    4
  • Joined

  • Last visited

    Never

Profile Information

  • Gender
    Not Telling

acratus's Achievements

Newbie

Newbie (1/5)

0

Reputation

  1. Okay, we're getting closer. This hunk of code seems to get me what I want, at least for now: foreach ($_POST["theArray"] as $key) { if(is_array($key)){ foreach ($key as $key2 => $value) { echo "<li>".$value."</li>"; } } else { echo ""; } } However, I still want to be able to call the varible out using ['name'].
  2. Okay. I did what you said...the form adds elements dynamically, so I added two and this is what I got: Array ( [theArray] => Array ( [1] => Array ( ['name'] => foo ) [2] => Array ( ['name'] => bar ) [3] => Array ( ['name'] => sdfaasdf ) [4] => Array ( ['name'] => asdfasdf ) ) [submit] => submit ) This means the data is being passed correctly, right?
  3. Okay, I tried it. Didn't work. The idea is I'm setting it up for the 'for' loop to where every 'name' is printed out in succession. I'll add code later for other variables, but I want to get it from the same $_POST array.
  4. I'm having trouble with a three-dimensional $_POST array. It starts as a two-dimensional array on this side: <html> <head> <title>test</title> <script type="text/javascript"> var Dom = { get: function(el) { if (typeof el === 'string') { return document.getElementById(el); } else { return el; } }, add: function(el, dest) { var el = this.get(el); var dest = this.get(dest); dest.appendChild(el); }, remove: function(el) { // var el = this.get(el); // el.parentNode.removeChild(el); } }; var Event = { add: function() { if (window.addEventListener) { return function(el, type, fn) { Dom.get(el).addEventListener(type, fn, false); }; } else if (window.attachEvent) { return function(el, type, fn) { var f = function() { fn.call(Dom.get(el), window.event); }; Dom.get(el).attachEvent('on' + type, f); }; } }() }; Event.add(window, 'load', function() { var i = 2; Event.add('add-element', 'click', function() { var el = document.createElement('span'); el.innerHTML = '<input type="text" name="theArray['+i+'][\'name\']" value="">'; i++; Dom.add(el, 'content'); Event.add(el, 'click', function(e) { Dom.remove(this); }); }); }); </script> </head> <body> <p id="add-element">Add Elements</p> <form action="testPost.php" name="test" method="post"> <input type="text" name="theArray[1]['name']" value="foo" /> <input type="text" name="theArray[2]['name']" value="bar" /> <div id="content"></div> <input type="submit" name="submit" value="submit" /> </form> </body> </html> (If you're wondering why I only have one element it's because this is for a project where I will need nested lists later.) Now, onto testPost.php to process the code: <html> <head> <title>asdfdf</title> </head> <body> <ul> <?php for ($i=1;$i<=count($_POST["theArray"]);$i++){ echo("<li>".$_POST['theArray'][$i]['name']."</li>"); } ?> </ul> </body> </html> $_POST itself is an array, so we convert from a two-dimensional to a three-dimensional array. For some reason, only the first letter gets printed; the rest of the string gets truncated. My only request is that you don't suggest I just use a database or something of the like. This has to be easily portable and I will probably merge this into one document later. Thank you, Dan
×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.