Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Dynamiczne tworzenie macierzy w html + php
Forum PHP.pl > Forum > Przedszkole
wlazly91i
Witam!
Mam za zadanie tworzyć dynamicznie tabele dwuwymiarową w html za pomocą formularza z selectami określać iośc kolumn i wierszy następnie do wygenerowanej tablicy wpisać dane i wysłać formularzem, formularz po wysłaniu ma zostać na stronie w tym samym miejscu z wpisanymi danymi a tylko dane wysłane metodą POST czy da się tak zrobić?
poniżej kod który generuje dynamicznie tabele ale po wysłaniu fomularza z danymi formularz znika i nie wiem jak to przeskoczyć?
jakieś sugestie?
  1. <html>
  2. <head>
  3. <meta charset="utf-8">
  4. </head>
  5. <body>
  6. <form action="index.php" method="post" id="formu" >
  7. <select name="rozA" onchange = "document.getElementById('formu').submit()">
  8. <option <?php if($_POST['rozA'] == '1'){echo("selected");}?>>1</option>
  9. <option <?php if($_POST['rozA'] == '2'){echo("selected");}?>>2</option>
  10. <option <?php if($_POST['rozA'] == '3'){echo("selected");}?>>3</option>
  11. <option <?php if($_POST['rozA'] == '4'){echo("selected");}?>>4</option>
  12. <option <?php if($_POST['rozA'] == '5'){echo("selected");}?>>5</option>
  13. </select>
  14. <select name="rozB" onchange = "document.getElementById('formu').submit()">
  15. <option <?php if($_POST['rozB'] == '1'){echo("selected");}?>>1</option>
  16. <option <?php if($_POST['rozB'] == '2'){echo("selected");}?>>2</option>
  17. <option <?php if($_POST['rozB'] == '3'){echo("selected");}?>>3</option>
  18. <option <?php if($_POST['rozB'] == '4'){echo("selected");}?>>4</option>
  19. <option <?php if($_POST['rozB'] == '5'){echo("selected");}?>>5</option>
  20. </select>
  21. <select name="rozC" onchange = "document.getElementById('formu').submit()">
  22. <option <?php if($_POST['rozC'] == '1'){echo("selected");}?>>1</option>
  23. <option <?php if($_POST['rozC'] == '2'){echo("selected");}?>>2</option>
  24. <option <?php if($_POST['rozC'] == '3'){echo("selected");}?>>3</option>
  25. <option <?php if($_POST['rozC'] == '4'){echo("selected");}?>>4</option>
  26. <option <?php if($_POST['rozC'] == '5'){echo("selected");}?>>5</option>
  27. </select>
  28. </form>
  29.  
  30. <?php
  31. $_SESSION['rozA']= $_POST['rozA'];
  32. $_SESSION['rozB']= $_POST['rozB'];
  33. $_SESSION['rozC']= $_POST['rozC'];
  34. $A= $_SESSION['rozA'];
  35. $B= $_SESSION['rozB'];
  36. $C= $_SESSION['rozC'];
  37. echo '<form method="post" id="gora">';
  38. echo '<table style="margin-left:100px;" name="macA">';
  39. for($i=0;$i<$B;$i++)
  40. {
  41.  
  42. echo '<tr>';
  43. for($j=0;$j<$C;$j++)
  44. {
  45. echo '<td><input type="text" style="width:44px;background:blue;" name="Ax'.$i.'y'.$j.'" id="text" value="'.$_POST['Ax'.$i.'y'.$j].'"></td>';
  46. }
  47. echo '</tr>';
  48. }
  49. echo '</table>';
  50. echo '<table name="macB">';
  51. for($i=0;$i<$A;$i++)
  52. {
  53. echo '<tr>';
  54. for($j=0;$j<$B;$j++)
  55. {
  56. echo '<td><input type="text" style="width:44px;background:green;" name="Bx'.$i.'y'.$j.'" id="text" value=""></td>';
  57.  
  58. }
  59. echo '</tr>';
  60. }
  61. echo '</table>';
  62. echo '<input type="submit" value="Oblicz"/>';
  63. echo '</form>';
  64. ?>
  65. </body>
  66. </html>
nospor
Stworzyles dwa formularze. Pierwszy formularz mowi, ile ma byc wierszy i kolumn, zas drugi formularz wysyla dane z utworzonej macierzy. Wysylajac wiec drugi formularz, tracisz dane, ktore byly w pierwszym formularzu. Logiczne wiec, ze wszystko znika.
W drugim formularzu, ktory wysyla dane z macierzy, musisz dorobic pola ukryte (HIDDEN) i w te pola wpisac te wartosci, ktore zostaly przekazane z pierwszego forma. Wowczas wszystko bedzie grac.

ps: Twoje uzycie sesji jest totalnie bez sensu.
Raz, ze sesja i tak ci sie nie tworzy, bo sesja musi byc tworzona na samym poczatku i nic przed nią nie moze isc do przegladarki
A dwa, ze ty i tak zawsze do sesji wkladasz dane z forma, nawet jak nic nie idzie...
wlazly91i
zrobiłem tak jak poniżej ale jak odwołać się do tych pól już w pętli for żeby było tylko powtórzeń?
PS: sesja była na próbę nie usunąłem przy podaniu kodu na stone wink.gif

  1. <html>
  2.  
  3. <head>
  4. <meta charset="utf-8">
  5. </head>
  6. <style>
  7. #macA
  8. {
  9. margin-left:100px;
  10. }
  11. #macB
  12. {
  13.  
  14. }
  15. #macC
  16. {
  17. margin-left:100px;
  18. margin-top:-93px;
  19. }
  20. </style>
  21. <script>
  22. function powieksz(obiekt, wartosc) {
  23. obiekt.style.marginLeft=wartosc;
  24. }
  25. </script>
  26.  
  27. <body>
  28. <form action="index.php" method="post" id="formu" >
  29. <select name="rozA" onchange = "document.getElementById('formu').submit()">
  30. <option <?php if($_POST['rozA'] == '1'){echo("selected");}?>>1</option>
  31. <option <?php if($_POST['rozA'] == '2'){echo("selected");}?>>2</option>
  32. <option <?php if($_POST['rozA'] == '3'){echo("selected");}?>>3</option>
  33. <option <?php if($_POST['rozA'] == '4'){echo("selected");}?>>4</option>
  34. <option <?php if($_POST['rozA'] == '5'){echo("selected");}?>>5</option>
  35. </select>
  36. <select name="rozB" onchange = "document.getElementById('formu').submit()">
  37. <option <?php if($_POST['rozB'] == '1'){echo("selected");}?>>1</option>
  38. <option <?php if($_POST['rozB'] == '2'){echo("selected");}?>>2</option>
  39. <option <?php if($_POST['rozB'] == '3'){echo("selected");}?>>3</option>
  40. <option <?php if($_POST['rozB'] == '4'){echo("selected");}?>>4</option>
  41. <option <?php if($_POST['rozB'] == '5'){echo("selected");}?>>5</option>
  42. </select>
  43. <select name="rozC" onchange = "document.getElementById('formu').submit()">
  44. <option <?php if($_POST['rozC'] == '1'){echo("selected");}?>>1</option>
  45. <option <?php if($_POST['rozC'] == '2'){echo("selected");}?>>2</option>
  46. <option <?php if($_POST['rozC'] == '3'){echo("selected");}?>>3</option>
  47. <option <?php if($_POST['rozC'] == '4'){echo("selected");}?>>4</option>
  48. <option <?php if($_POST['rozC'] == '5'){echo("selected");}?>>5</option>
  49. </select>
  50. </form>
  51.  
  52. <?php
  53. $A= $_POST['rozA'];
  54. $B= $_POST['rozB'];
  55. $C= $_POST['rozC'];
  56. echo '<div id="first">';
  57. echo '<form method="post" id="gora">';
  58. echo '<input type="hidden" name="rozmA" value="'.$A.'">';
  59. echo '<input type="hidden" name="rozmB" value="'.$B.'">';
  60. echo '<input type="hidden" name="rozmC" value="'.$C.'">';
  61. echo '<table name="macA" id="macA";">';
  62. for($i=0;$i<$A;$i++)
  63. {
  64. //$powieksz = powieksz(table,1000);
  65. //echo $powieksz;
  66. echo '<tr>';
  67. for($j=0;$j<$C;$j++)
  68. {
  69. echo '<td><input type="text" style="width:44px;background:blue;" name="Ax'.$i.'y'.$j.'" id="text" value=""></td>';
  70.  
  71. }
  72. echo '</tr>';
  73. }
  74. echo '</table>';
  75. //echo '</div>';
  76. //echo '<div id="secount">';
  77. echo '<table name="macB" id="macB">';
  78. for($i=0;$i<$A;$i++)
  79. {
  80. echo '<tr>';
  81. for($j=0;$j<$B;$j++)
  82. {
  83. echo '<td><input type="text" style="width:44px;background:green;" name="Bx'.$i.'y'.$j.'" id="text" value=""></td>';
  84. }
  85. echo '</tr>';
  86.  
  87. }
  88. echo '<table name="macC" id="macC">';
  89. for($i=0;$i<$A;$i++)
  90. {
  91. echo '<tr>';
  92. for($j=0;$j<$C;$j++)
  93. {
  94. echo '<td><input type="text" style="width:44px;background:red;" name="Cx'.$i.'y'.$j.'" id="text" value=""></td>';
  95. }
  96. }
  97. echo '</tr>';
  98. echo '</table>';
  99. echo '<input type="submit" name="nazwa" value="wartość" />';
  100. echo '</form>';
  101. echo '</div>';
  102.  
  103. ?>
  104. </body>
  105. </html>
nospor
Po pierwsze

rozmA
rozA

znajdz 10 roznic....

Po drugie: nie ma po drugie
wlazly91i
Dziękuję Bardzo wink.gif
facepalmxd.gif ok pozostawię to co zrobiłem bez komentarza:)
a czy w php da się wywoływać funkcjie zmieniającą style css np: żeby za każym przejściem pętli for zwiększała margines ewy danej tabeli
smile.gif
nospor
Cytat
a czy w php da się wywoływać funkcjie zmieniającą style css np: żeby za każym przejściem pętli for zwiększała margines ewy danej tabeli
A jaki problem w petli FOR zwiekszac jakąś zmienną o zadaną liczbe??
wlazly91i
ale chodzi mi mi o to czy trzeba wywoływać to funkcją jakąś czy jakoś inaczej ?
nospor
No ale po co?? Tlumacze ci, zwiekszasz jakąś zmienna w tej petli, i potem tę zmienną wstawiasz jako wartogsc marginesu...

echo '<td><input type="text" style="width:44px;background:blue;margin-left:'.$jakaszmienna.'px;" name="Ax'.$i.'y'.$j.'" id="text" value=""></td>';
wlazly91i
ja to na prawde jestem sto lat za murzynami wink.gif dzięki i sorki za zawracanie głowy i to że musisz się denerwowaćwink.gif
nospor
Nie 100 a 200 wink.gif

Przenosze na przedszkole.
wlazly91i
no wiesz początki z php od tygodnia programuje:P
nospor
Dlatego też przenioslem na przedszkole. Tam tez mozesz zakladac kolejne ewentualne tematy smile.gif
wlazly91i
dzięki za pomoc wink.gif i sorki za nerwa wink.gif
nospor
Co ty z tym nerwem? Obserwujesz mnie przez lornetke i widzisz w jakim stanie emocjonalnym jestem? Jesli nie, to nie wciskaj mi na sile stanu, w ktorym nie jestem.
wlazly91i
ale nie tobie nerwa wciskam tongue.gif
nospor
Nie ogarniam.... CHyba jestem za stary by kumać teksty dzieci z przedszkola.... tongue.gif
wlazly91i
trudno mi się wypowiadać w kwestii czy jesteś stary czy nie tongue.gif
nospor
Wystarczy, ze nie wyparles sie przedszkola... W porownaniu wiec z Twoim wiekiem, kazdy na tym forum jest za stary biggrin.gif
wlazly91i
hehe;)
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.