ugrás a tartalomhoz

Form új sor beszúrása!

cszlak · 2014. Jan. 29. (Sze), 21.58
Sziasztok.

Az lenne a problémám, hogy egy ártábla formot csináltam, sikerült gomb nyomársa új sort beszúrnom, de nem tudom hogy kellene neki megadni a name="" értéket Javascripptel, hogy el tudjam menteni php-val adatbázisba.

Kód:
  1. <html>  
  2. <head>  
  3. <?php   
  4. if(isset($_POST)){  
  5.     echo '<p style="font-size:16px; color:#000;">'; print_r($_POST); echo "</p>";  
  6.     }  
  7. ?>  
  8.     <script type="text/javascript">  
  9.         function insertRow(tableID,form_id) {  
  10.         var tabla = document.getElementById(tableID);  
  11.         var utolsosor = document.getElementById(tableID).lastChild;  
  12.         var szam = 0;  
  13.         var inputs = document.getElementsByTagName("input");  
  14. for (var i=0; i < inputs.length; i++)  
  15. {   
  16.    if (inputs[i].getAttribute('type') == 'text')  
  17.    {  
  18.       szamszam = szam+1;  
  19.    }  
  20. }  
  21.         var tr = document.createElement('tr');     
  22.         var td1 = document.createElement('td');  
  23.         var td2 = document.createElement('td');  
  24.         var text1 = document.createTextNode('');  
  25.         var text2 = document.createTextNode('');   
  26.         var id_szam = utolsosor; var szam = utolsosor + 1;  
  27.         td1.appendChild(text1);  
  28.         td2.appendChild(text2);  
  29.         szamszam = szam+1;  
  30.         td1.innerHTML = '<input type="text"   value="name"  name ="name' + szam + '" />';  
  31.         szamszam = szam+1;   
  32.         td2.innerHTML = '<input type="text"   value="price" name ="price' + szam + '" />';   
  33.         tr.appendChild(td1);  
  34.         tr.appendChild(td2);  
  35.         tabla.insertBefore(tr,utolsosor);  
  36.         }  
  37.     </script>  
  38. </head>  
  39. <body>  
  40.     <input type="button" onclick="insertRow('tableToModify','form_id')" value="Create Row" />  
  41.     <form action="" method="post" id="form_id">  
  42.     <table id="tableToModify">  
  43.         <tbody >  
  44.             <tr id="rowToClone">  
  45.             <td><input type="text" id="1"  value="text" name ="name0"/></td>  
  46.             <td><input type="text" id="1"  value="price" name ="price0"/></td>  
  47.             </tr>  
  48.         </tbody>  
  49.     </table>  
  50.     <input type="submit"  value="Mentes" />  
  51.     </form>  
  52. </body></html>  
A print_r($_POST) :
Array ( [name0] => text [price0] => price [name] => Array ( [object Text] => name ) [price] => Array ( [object Text] => price ) )


A name értéket így akartam: name0, name1, name2 ...
A price értéket meg ugyanagy: price0, price1, price2 ....
 
1

Tördeld újra

Poetro · 2014. Jan. 29. (Sze), 22.37
Szerintem először tördeld újra a kódot, mert nem látom hogy hol kezdődnek a függvények, a ciklusok, hol vannak deklarálva a változók.
2

ID attribútum nem kezdődhet számmal

pkadam · 2014. Jan. 30. (Cs), 07.48
Figyelj arra, hogy a HTML specifikáció szerint az ID attribútum nem kezdődhet számmal, és egyedinek kell lennie. A mellékelt kódrészletben mindkettőt megszeged.

Ha könnyedén szeretnéd a POST változókat feldolgozni, adhatsz nekik tömbszerű neveket (name attribútumokat), így tudsz rájuk szerveroldalon is ekként hivatkozni (vagy épp iterálni egy ciklusban). Például name="elem[0]['name']" és name="elem[0]['price']". Hátha hasznos.
3

index nélkül []

szabo.b.gabor · 2014. Jan. 30. (Cs), 09.29
használd így
  1. <table id="tableToModify">    
  2.     <tbody >    
  3.         <tr id="rowToClone">    
  4.         <td><input type="text" id="1"  value="text" name ="name[]"/></td>    
  5.         <td><input type="text" id="1"  value="price" name ="price[]"/></td>    
  6.         </tr>    
  7.     </tbody>    
  8. </table>  
ebből másolhatsz akármennyit, nem fognak összeakadni és szerver oldalon lesz két darab tömböd.

id és egyéb dolgokra tényleg oda kellene figyelni..
4

Tökéletes, köszi.

cszlak · 2014. Jan. 30. (Cs), 18.37
Igazatok van, annyit kavartam hogy elfelejtettem a szabályokat.
A legegyszerűbb meg nem jutott az eszembe.

Még egyszer köszi mindenkinek.