Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] Jak skrócić formularz?
Forum PHP.pl > Forum > Przedszkole
pa-jong
Witam

zrobilem prosty formularz który zapisuje dane do pliku..
pytanie brzmi jak go skrócic? bo jak tak dalej pójdzie to z czasem bedzie się stawał coraz dłuzszy :/

aktualnie wygląd to tak:

są odpowiednie pola.. i jesli pole box jest zaznaczone to zapisuje je do pliku..


plik formularza
  1. <form action="dodaj.php" method="post">
  2.  
  3.  
  4.  
  5. <tr>
  6. <td class="cell2"><center><b>Lp.</b></center></td><td class="cell2"><b>Nazwa </b></td><td align="center" class="cell2">Rozmiar</td><td align="center" class="cell2">Cena</td></tr>
  7. <tr>
  8. <td class="cell2"><center><b>1.</b></center></td>
  9. <td class="cell"><input type="text" name="nazwa1" style="width: 100px; "></td>
  10. <td class="cell" align="center"><input type="text" name="rozm1" style="width: 50px; "></td>
  11. <td class="cell" align="center"><input type="text" name="cen1" style="width: 50px; "></td>
  12. <td class="cell" align="center"><input type="checkbox" name="box1" style="width: 50px; "></td>
  13. <td class="cell"> <input type="submit" value="wyslij"></td></tr>
  14.  
  15. <tr>
  16. <td class="cell2"><center><b>2.</b></center></td>
  17. <td class="cell"><input type="text" name="nazwa2" style="width: 100px; "></td>
  18. <td class="cell" align="center"><input type="text" name="rozm2" style="width: 50px; "></td>
  19. <td class="cell" align="center"><input type="text" name="cen2" style="width: 50px; "></td>
  20. <td class="cell" align="center"><input type="checkbox" name="box2" style="width: 50px; "></td>
  21. <td class="cell"> <input type="submit" value="wyslij"></td></tr>
  22.  
  23. <tr>
  24. <td class="cell2"><center><b>3.</b></center></td>
  25. <td class="cell"><input type="text" name="nazwa3" style="width: 100px; "></td>
  26. <td class="cell" align="center"><input type="text" name="rozm3" style="width: 50px; "></td>
  27. <td class="cell" align="center"><input type="text" name="cen3" style="width: 50px; "></td>
  28. <td class="cell" align="center"><input type="checkbox" name="box3" style="width: 50px; "></td>
  29. <td class="cell"> <input type="submit" value="wyslij"></td></tr>
  30.  
  31. <tr>
  32. <td class="cell2"><center><b>4.</b></center></td>
  33. <td class="cell"><input type="text" name="nazwa4" style="width: 100px; "></td>
  34. <td class="cell" align="center"><input type="text" name="rozm4" style="width: 50px; "></td>
  35. <td class="cell" align="center"><input type="text" name="cen4" style="width: 50px; "></td>
  36. <td class="cell" align="center"><input type="checkbox" name="box4" style="width: 50px; "></td>
  37. <td class="cell"> <input type="submit" value="wyslij"></td></tr>
  38.  
  39. <tr>
  40. <td class="cell2"><center><b>5.</b></center></td>
  41. <td class="cell"><input type="text" name="nazwa5" style="width: 100px; "></td>
  42. <td class="cell" align="center"><input type="text" name="rozm5" style="width: 50px; "></td>
  43. <td class="cell" align="center"><input type="text" name="cen5" style="width: 50px; "></td>
  44. <td class="cell" align="center"><input type="checkbox" name="box5" style="width: 50px; "></td>
  45. <td class="cell"> <input type="submit" value="wyslij"></td></tr>
  46.  
  47. itd itd do 40..



plik dodaj.php
  1. <?php
  2.  
  3.  
  4.  
  5. $pole1 ="<tr><td><b>".$_POST['nazwa1']."</b></td><td align='center'>".$_POST['rozm1']."</td><td align='center'>".$_POST['cen1']."</td></tr>";
  6. $pole2 ="<tr><td><b>".$_POST['nazwa2']."</b></td><td align='center'>".$_POST['rozm2']."</td><td align='center'>".$_POST['cen2']."</td></tr>";
  7. $pole3 ="<tr><td><b>".$_POST['nazwa3']."</b></td><td align='center'>".$_POST['rozm3']."</td><td align='center'>".$_POST['cen3']."</td></tr>";
  8. $pole4 ="<tr><td><b>".$_POST['nazwa4']."</b></td><td align='center'>".$_POST['rozm4']."</td><td align='center'>".$_POST['cen4']."</td></tr>";
  9. $pole5 ="<tr><td><b>".$_POST['nazwa5']."</b></td><td align='center'>".$_POST['rozm5']."</td><td align='center'>".$_POST['cen5']."</td></tr>";
  10.  
  11. ...itd aż do
  12.  
  13. $pole40 ="<tr><td><b>".$_POST['nazwa40']."</b></td><td align='center'>".$_POST['rozm40']."</td><td align='center'>".$_POST['cen40']."</td></tr>";
  14.  
  15.  
  16.  
  17.  
  18.  
  19. //DANE DO ZAPISANIA W PLIKU 
  20.  
  21.  
  22. $dane = ( $_POST['box1'] == "on" ? $pole1 : '')."\n".
  23.  ( $_POST['box2'] == "on" ? $pole2 : '')."\n".
  24.  ( $_POST['box3'] == "on" ? $pole3 : '')."\n".
  25.  ( $_POST['box4'] == "on" ? $pole4 : '')."\n".
  26.  ( $_POST['box5'] == "on" ? $pole5 : '')."\n".
  27.  
  28. //...itd az do:
  29.  
  30.  ( $_POST['box40'] == "on" ? $pole40 : '');
  31.  
  32. //ZAPIS DO PLIKU
  33.  
  34.  
  35. $file = "dane.txt";
  36.  
  37. $fp = fopen($file, "w"); 
  38.  
  39. flock($fp, 2); 
  40.  
  41. fwrite($fp, $dane); 
  42.  
  43. flock($fp, 3); 
  44.  
  45. fclose($fp); 
  46.  
  47. ?>




jak to skrócić aby wszystko dodawalo sie dynamicznie ?

tzn mam np formularz

nazwa1 rozm1 cen1 i jesli potrzeba do klikam np na "dodaj pole" obok tego formularza i dodają sie odpowiednio pola nazwa2,3,4,5 itd rozm2,3,4,5 itd..

analogicznie w pliku dodaj zaleznie od formularza zmienna

$pole1 i jesli wystepuje to pole2,3,4,5 itd...

mam nadzieje ze nie zamotałem :]
MaestroS
Zastosuj tablice w name'ach (np. zamiast box1, box2, box3): box[]
Po stronie PHP pętla IF + count i lecisz, sprawdzając.
pa-jong
hmmm

hmm a co z formularzem ? tzn co z polem "dodaj" po nacisnieciu któreo będą sie pojawialy nowe pola formularza ( odpowiednio nazwa1,2,3 rozm1,2,3 itd...

mozna jakiś przykład takiej pętli ? - bedzie mi łatwiej zrozumiec..
MaestroS
Nie zadne "nazwa1", "nazwa2", tylko nazwa[].

Przykladowo, kazde pole input ma name jako nazwa[], a kazdy checkbox ma name box[].

Po stronie PHP to mniej wiecej tak.

Cytat
$names = $_POST['name'];
$box = $_POST['box'];

for ($i=0; $i<count($box); $i++)
{
if ($box[$i]==<cos tam>) {
//cos tam
}
}


Wszystko otrzymasz w formie tablic, do poruszania sie miedzy nimi wykorzystujesz pętle FOR a do zliczania elementow tablicy = COUNT.

Taka metode stosuje ja i jest dobra, zeby nie powiedziec bardzo dobra. Imo oczywiscie.
pa-jong
Cytat(MaestroS @ 29.03.2008, 00:04:19 ) *
Nie zadne "nazwa1", "nazwa2", tylko nazwa[].

Przykladowo, kazde pole input ma name jako nazwa[], a kazdy checkbox ma name box[].


no to ja rozumiem :] tylko nie dociera do mnie jak niby te pola sie mają tworzyc w formularzu tongue.gif

trzeba 40 recznie dodac czy jakos tam sie one dodają ?
tzn

nazwa[] rozm[] cen[]
nazwa[] rozm[] cen[]
nazwa[] rozm[] cen[]
nazwa[] rozm[] cen[] i tak do 40 lub wiecej ?

czy poprostu

nazwa[] rozm[] cen[]

jak na moje oko to chyba powinienem zastosowac IFa ?

formularz
  1. <tr>
  2. <td class="cell"><input type="text" name="nazwa[]" style="width: 100px; "></td>
  3. <td class="cell" align="center"><input type="text" name="rozm[]" style="width: 50px; "></td>
  4. <td class="cell" align="center"><input type="text" name="cen[]" style="width: 50px; "></td>
  5. <td class="cell"> <input type="button" value="nowepole"></td>
  6. <td class="cell"> <input type="submit" value="wyslij"></td></tr>
  7.  
  8. // i tutaj php - jak siebie znam to na bank sa tu błedy tongue.gif 
  9.  
  10. <? 
  11. $nowepole = $_POST['nowepole'];
  12.  
  13. for ($i=0; $i<count($nowepole); $i++)
  14. {
  15.  
  16.  
  17. if ($_POST['nowepole'] ) jest klikniete {
  18.  
  19. echo'<tr>
  20. <td class="cell"><input type="text" name="nazwa[]" style="width: 100px; "></td>
  21. <td class="cell" align="center"><input type="text" name="rozm[]" style="width: 50px; "></td>
  22. <td class="cell" align="center"><input type="text" name="cen[]" style="width: 50px; "></td>
  23.  <td class="cell"> <input type="button" value="nowepole"></td>
  24.  <td class="cell"> <input type="submit" value="wyslij"></td></tr>';
  25.  
  26. }
  27. }
  28.  
  29. ?>




a po stronie php hmmm kombinuje narazie :]
Mlodycompany
a nie lepiej by ci bylo to zrobic na GETach. Ja u siebie na stronie mam zrobione na gecikach i działa pięknie.
pa-jong
Cytat(MaestroS @ 29.03.2008, 00:04:19 ) *
Po stronie PHP to mniej wiecej tak.
  1. <?php
  2. $names = $_POST['name'];
  3. $box = $_POST['box'];
  4.  
  5. for ($i=0; $i<count($box); $i++)
  6. {
  7. if ($box[$i]==<cos tam>) {
  8. //cos tam
  9. }
  10. }
  11. ?>



Wszystko otrzymasz w formie tablic, do poruszania sie miedzy nimi wykorzystujesz pętle FOR a do zliczania elementow tablicy = COUNT.

Taka metode stosuje ja i jest dobra, zeby nie powiedziec bardzo dobra. Imo oczywiscie.


czyli
  1. <?php
  2. $nazwa = $_POST['nazwa'];
  3. $rozm = $_POST['rozm'];
  4. $cen = $_POST['cen'];
  5.  
  6. for ($i=0; $i<count($nazwa; $i++){if ($nazwa[$i]== costam) {//cos tam}}
  7. for ($i=0; $i<count($rozm); $i++){if ($rozm[$i]== costam) {//cos tam}}
  8. for ($i=0; $i<count($cen); $i++){if ($cen[$i]== costam) {//cos tam}}
  9. ?>


nieeee nie podoba mi sie to...
Mlodycompany
ale poczekaj. nie rozumie. po co chcesz uzyskac 1500 formularzy na stronie??
pa-jong
tzn sam formularz 1 ale odpowiednie <input> aktualnie do 40..

a co chce uzyskac

np mam sklep.. przychodzi dostawa 3 rybek.. o nazwie 1,2,3 rozmiarze1,2,3 i cenie 1,2,3

wiec..

nazwa1 rozm1 cen1
nazwa2 rozm2 cen2
nazwa3 rozm3 cen3

ale jesli przychodzi np 6 rybek.. to chce aby po kliknięciu w "dodaj nowe pola" pojawialy się nowe input

odpowiednio nazwa4,5,6 rozm4,5,6 cen4,5,6

no i poprawny kod do zapisania tego wszystkiego w pliku txt - narazie dziala to tak jak w 1 poscie ale to za długie sie robi.. bo co jak przyjdzie dostawa wlasnie 1500 rybek ? bede siedzial przed komputerem i dodawal 1500 pól do formularza ? nie... dlatego tez chce "zautomatyzować" cały proces do klikania w "dodaj nowe pola"
Mlodycompany
nie wiem dokladnie o co ci chodzi ale mniejsza. powiem ci jak ja zrobilem z filmami na stronie. tez chcialem dodawac kazdy film na strone i tworzyc plik na serwie.
  1. <?php
  2. $name = $_GET['id'];
  3.  if ($_GET['id'] == $name){
  4.  while($row = mysql_fetch_array($wynik)){
  5. $id = $row['ID'];
  6. $nazwa = $row['nazwa'];
  7. $kategoria = $row['kategoria'];
  8. $dodal = $row['dodal'];
  9. $data = $row['data'];
  10. $kod = $row['kod'];
  11. $zdjecie = $row['ID'];
  12. $width = 425;
  13. $height = 355;
  14. if ($id == $name){
  15. include('echo.php');
  16. }
  17. }
  18. }
  19. ?>

wyciagnij z tego wnioski i sprobuj zrobic pelna automatyke.

ale poczekaj. juz chyba wiem. tobie chodzi o to zebys mial jeden formularz i zeby on dodawal do pliku dane z niego??
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.