Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Dynamiczne tworzenie pól formularza
Forum PHP.pl > Forum > Przedszkole
lachi
Witam!

Muszę wykonać formularz do przesyłania CV ze strony. Jakoś sobie z tym radzę, jednak mam problem z budową samego formularza. W czym rzecz - w CV zazwyczaj są punkty wykształcenie i doświadczenie zawodowe. Liczba skończonych szkół lub firm, w których ktoś pracował jest różna. Chodzi o to, aby formularz zawierał tylko jedną linię pól edycyjnych (np.: przy wykształceniu) - DATA, KIERUNEK NAUKI, SZKOŁA - z możliwością dodania następnej linii. Tak samo sprawa wygląda przy doświadczeniu zawodowym. Żeby nie próbować tego na właściwym formularzu napisałem mały przykład na dodawanie nowych wierszy w tabelce: TEST FORMULARZA. I wszystko było ok - w momencie, gdy kliknąłem na "DODAJ NOWĄ POZYCJ" - następowało dodanie nowego wiersza w tabeli. Gorzej jest w chwili, gdy mam dwie tabele (i dwie zmienne) - jedna odpowiada za ilość wierszy w jednej tabeli, a druga w drugiej. I tu zaczyna się wszystko sypać - efekty pod podanym wyżej adresem. Może ktoś wie jak napisać kod, aby dodawanie nowego wiersza w tabeli następowało właściwie? Poniżej wstawiam kod formularza i strony startowej.

Pozdrawiam serdecznie
lachi

Odnośnik na stronie START.HTM

Kod
<div align="center"><font size="3" face="Geneva, Arial, Helvetica, sans-serif"><strong><a href="form.php?i=1&j=1" target="_self">Link  do pliku</a></strong></font></div>


KOD W PLIKU Z TABELKAMI

Kod
<body>
<p align="center"><font size="3" face="Geneva, Arial, Helvetica, sans-serif"><strong><a href="start.htm" target="_self">POWRÓT</a></strong></font></p>
<table align="center" width="300" cellpadding="5" cellspacing="1" bgcolor="#000000">
<?php
for( $x = 1; $x <= $i; $x++ ) {
  echo "<tr><td align=\"center\" valign=\"middle\" height=\"30\" bgcolor=\"#EEEEEE\"><font size=\"2\" face=\"Geneva, Arial, Helvetica, sans-serif\"> To jest wiersz nr.: ".$x." z pierwszej tabeli</font></td></tr></n>"; }
?>
<tr><td align="left" valign="bottom" height="35" bgcolor="#CCCCFF">
<?php
echo "<BR><p align=\"center\"><font size=\"3\" face=\"Geneva, Arial, Helvetica, sans-serif\"><strong><a href=\"form.php?i=" . ++$i  . "&j=".  $j . " target=\"_self\">+   DODAJ NOWĄ POZYCJ</a></strong></font></n>";
?>
</td></tr>
<tr><td align="left" valign="bottom" height="20" bgcolor="#FFFFFF"></td></tr>
</table>
<table align="center" width="300" cellpadding="5" cellspacing="1" bgcolor="#000000">
<?php
for( $y = 1; $y <= $j; $y++ )
echo "<tr><td align=\"center\" valign=\"middle\" height=\"30\" bgcolor=\"#EEEEEE\"><font size=\"2\" face=\"Geneva, Arial, Helvetica, sans-serif\"> To jest wiersz nr.: ".$y." z drugiej tabeli tabeli</font></td></tr></n>";
?>
<tr><td align="left" valign="bottom" height="35" bgcolor="#CCCCFF">
<?php
echo "<BR><p align=\"center\"><font size=\"3\" face=\"Geneva, Arial, Helvetica, sans-serif\"><strong><a href=\"form.php?i=" . $i  . "&j=".  ++$j . "\" target=\"_self\">+   DODAJ NOWĄ POZYCJ</a></strong></font></n>";
?>
</td></tr>
<tr><td align="left" valign="bottom" height="20" bgcolor="#FFFFFF"></td></tr>
</table>
</body>
karawan
Witam,

Moim skromnym zdaniem pod pierwszą tabelą zostaje zwiększona o 1 zmienna $i

echo "<BR><p align=\"center\"><font size=\"3\" face=\"Geneva, Arial, Helvetica, sans-serif\"><strong><a href=\"form.php?i=" . ++$i . "&j=". $j . " target=\"_self\">+ DODAJ NOWĄ POZYCJ</a></strong></font></n>";

co ma swoje konsekwencje pod drugą tabelką

echo "<BR><p align=\"center\"><font size=\"3\" face=\"Geneva, Arial, Helvetica, sans-serif\"><strong><a href=\"form.php?i=" . $i . "&j=". ++$j . "\" target=\"_self\">+ DODAJ NOWĄ POZYCJ</a></strong></font></n>";

Pozdrowienia
karawan
Zastosowałbym jakąś dodatkową zmienną

np:
$zz=$i+1;

...

<a href=\"form.php?i=" .$zz. "&j=". $j . " target=\"_self\">+ DODAJ NOWĄ POZYCJ</a>
lachi
Czyli jest tak, że pierwsza linia zawsze się wykona, nawet jeżeli w nią nie kliknę?

Podzr
karawan
Dokładnie tak jest. zwiekszenie o 1 zmiennej $i juz się wykonało przy ładowaniu strony(wykonaniu programu), a nie w momencie klikniecia :roll2:

A jeszcze jedno tutaj zauwazyłem jeszcze jeden mały błąd
Kod
<?php
echo "<BR><p align=\"center\"><font size=\"3\" face=\"Geneva, Arial, Helvetica, sans-serif\"><strong><a href=\"form.php?i=" . ++$i  . "&j=".  $j . " target=\"_self\">+   DODAJ NOWĄ POZYCJ</a></strong></font></n>";
?>


powinno być
Kod
<?php
echo "<BR><p align=\"center\"><font size=\"3\" face=\"Geneva, Arial, Helvetica, sans-serif\"><strong><a href=\"form.php?i=" . ++$i  . "&j=".  $j . "\" target=\"_self\">+   DODAJ NOWĄ POZYCJ</a></strong></font></n>";
?>

brakuje tylko \"
lachi
Wielkie dzięki wszystkim - wprowadzłem zmienną, poprawiłem błąd, zmieniłem odwołanie do zmiennych globalnych przez tablicę $_GET i...... działa.

Wiem, że moje pytania są często banalne, ale dopiero się uczę php i wiadomo jak to bywa. smile.gif

Pozdrawiam Serdecznie
lachi
karawan
Bardzo się cieszę że mogłem pomóc :roll2:
lachi
Wiem, że to już może będzie trochę bezczelne z mojej strony, ale proszę o jeszcze jedną podpowiedź.

Wszystko jest ładnie i pięknie z jednym małym, aczkolwiek znaczącym ale...

TEST FORMULARZA

Jak poprzedniu tutaj testuję stronkę.

Problem polega na tym, że w momencie dodawania kolejnej lini kasowane są dane wpisane w okna input. Przypuszaczam, że jest to konsekwencją przeładowania strony.

Jednak co zrobić, żeby dodawanie kolejnej linii w formularzu nie powodowało wykasowania wszystkich wpisanych danych?

Formularz, który przygotowuję jest długi, więc utrata wpisanych danych na pewno zirytuje użytkownika.

Pozdrawiam
lachi
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.