![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 29 Pomógł: 0 Dołączył: 12.10.2007 Ostrzeżenie: (0%) ![]() ![]() |
Mam nastepujacy problem.
Odczytuje danez tablicy wielowymiarowej i: petla for $i=1 ; $i<=20(przykladowo 20); $i++ .. generuje mi kilka formularzy: pisze pobieżnie omijajac partie kodu aby przedstawic zarys problemu: Czesc 1. for($i=1; $i<=ilosc elementow w tablicy; $i++){ <form action=\"".$_SERVER['PHP_SELF']."\" method=\"post\"> <input type=hidden name=zmienna value=$i> /ta zmienna przeslana mowi potem ktora tablice ma zmienic skrypt <input type=text name=zmienna value=zmienna['towar'][$i]['cena'] ...... <input type=submit name=zmien value=zmien dane> <input type=submit name=reset value=usun dane> </form> }; zmienne sterujace $i , pozostale zmienne z tablic sa nastepnie przekazaywane do dwoch alternatywnych skryptow: czesc 2. skrypt modyfikujacy dane if(isset($reset)){usuwanie danych z formularza} if(isset($zmien)){modyfikacja danych wstawionych do powyzszuch pol - po zastapieniu wartosci value} czesc 2 dziala, walidacja przebiega ok, problem polega w czesci pierwszej. ciagle przekazywana jest zmiena $i=1....bez wzgledu na to w ktorym formularzu zmodyfikuje zmienne i submit(reset/zmien) ktorego formularza nacisne. czemu? czyzby zmienna zmien oraz reset ktora ma ta sama wartosc we wszystkich formularzach uruchmiala domyslnie tylko formularz 1 ![]() W czym rzecz? Ten post edytował edgar5 12.10.2007, 19:05:50 |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 100 Pomógł: 11 Dołączył: 20.05.2007 Skąd: z fotela :) Ostrzeżenie: (0%) ![]() ![]() |
tak wydaje mi się że o wiele prościej by było gdybyś wkleił kod taki jaki masz w skrypcie bo z tego co napisałeś ciężko wyczuć gdzie jest błąd - oprócz takich szczegółów jak braki cudzysłowów w atrybutach... zreszta jak wkleisz kod taki jaki masz (chodzi o całą pętlę) to bedzie znacznie prościej coś wywnioskować
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 29 Pomógł: 0 Dołączył: 12.10.2007 Ostrzeżenie: (0%) ![]() ![]() |
<?
//------------------------------------------- session_name('_Handlowa'); session_start(); //koniec naglowka i sprawdzania //------------------------------------------ //modyfikowanie danych //poczatek validacji if(isset($modyf)){ echo $zmienna; if(strlen($zmienna)>0){$zmienna=stripslashes($zmienna) && is_numeric($zmienna);}else{$zmienna=FALSE; $message1 .="<font color=red>Blad wewnetrzny!</font><br>";}; if(strlen($rozmiar)>0){$rozmiar=stripslashes($rozmiar);}else{$rozmiar=FALSE; $message1 .="<font color=red>Nie podano rozmiaru!</font><br>";}; if(strlen($kolor)>0 && !is_numeric($kolor)){$kolor=stripslashes($kolor);}else{$kolor=FALSE; $message1 .="<font color=red>Nie podano koloru!</font><br>";}; if(strlen($ilosc)>0 && is_numeric($ilosc) && $ilosc>0){$ilosc=stripslashes($ilosc); $ilosc=floor($ilosc);}else{$ilosc=FALSE; $message1 .="<font color=red>Nie podano ile sztuk!</font><br>";}; //koniec walidacji if($zmienna && $rozmiar && $kolor && $ilosc){ $_SESSION['towar'][$zmienna]['rozmiar']=$rozmiar; $_SESSION['towar'][$zmienna]['kolor']=$kolor; $_SESSION['towar'][$zmienna]['ilosc']=$ilosc; $cena_total=$ilosc*$_SESSION['towar'][$zmienna]['cena']; $_SESSION['towar'][$zmienna]['cena_total']=$cena_total; } }; //koniec modyfikacji //usowanie danych //walidacja formularza if(isset($usun)){ echo $zmienna; if(strlen($zmienna)>0){$zmienna=stripslashes($zmienna) && is_numeric($zmienna);}else{$zmienna=FALSE; $message1 .="<font color=red>Blad wewnetrzny usuwania!</font><br>";}; //koniec walidacji if($zmienna){ $_SESSION['towar'][$zmienna]['link']=0; $_SESSION['towar'][$zmienna]['pid']=0; $_SESSION['towar'][$zmienna]['nazwa']=0; $_SESSION['towar'][$zmienna]['rozmiar']=0; $_SESSION['towar'][$zmienna]['kolor']=0; $_SESSION['towar'][$zmienna]['ilosc']=0; $_SESSION['towar'][$zmienna]['cena']=0; $_SESSION['towar'][$zmienna]['cena_total']=0; } echo $message1; }; //FORMULARZ //poczatek tabeli echo "<table border=\"1\"><tr><td>Lp</td><td></td><td>Nazwa towaru</td><td>Rozmiar</td><td>Kolor</td><td>Ile sztuk</td><td>Cena za sztuke</td><td>Sumaryczna cena</td><td>Zmien</td><td>Usun</td></tr>"; $k1=$_SESSION['ile']; //petla for($i=1 ; $i<=$k1 ; $i++){ //czy wogole zmienna jest pelna, jak nie to jej nie wyswietla, wywalilem narazie //formularz poczatek echo "<tr><form action=\"".$_SERVER['PHP_SELF']."\" method=\"post\">"; //wysylanie zmiennej identyfikacyjenej $i echo "<input type=\"hidden\" name=\"zmienna\" value=\"".$i."\" />"; //wyswietlanie wierszy po kolei echo "<tr><td>".$i."</td><td><a href=\"galeria_handlowa.php?p=".$_SESSION['towar'][$i]['pid']."\"><img src=\"galeria/albums/userpics/10001/thumb_".$_SESSION['towar'][$i]['link']."\"></a></td><td>".$_SESSION['towar'][$i]['nazwa']."</td><td><select name=\"rozmiar\">"; echo "<option value=\"".$_SESSION['towar'][$i]['rozmiar']."\">rozmiar ".$_SESSION['towar'][$i]['rozmiar']."</option>"; echo "<option value=\"S\">rozmiar S</option>"; echo "<option value=\"M\">rozmiar M</option>"; echo "<option value=\"L\">rozmiar L</option>"; echo "<option value=\"XL\">rozmiar XL</option></select>"; echo "</td><td><input type=\"text\" name=\"kolor\" value=\"".$_SESSION['towar'][$i]['kolor']."\"/></td><td><input type=\"text\" name=\"ilosc\" value=\"".$_SESSION['towar'][$i]['ilosc']."\"/></td><td>".$_SESSION['towar'][$i]['cena']." PLN</td><td>".$_SESSION['towar'][$i]['cena_total']." PLN</td><td><input type=\"submit\" name=\"modyf\" value=\"zmien\" /></td><td><input type=\"submit\" name=\"usun\" value=\"usun\" /></td></form></tr>"; }; //koniec petli //koniec formularza echo "</table>"; //koniec tabeli ?> Ten post edytował edgar5 12.10.2007, 21:08:28 |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 100 Pomógł: 11 Dołączył: 20.05.2007 Skąd: z fotela :) Ostrzeżenie: (0%) ![]() ![]() |
![]() natomiast co do kodu to zmienna jest dobrze przekazywana do tego momentu:
wywal is numeric - bo akurat zamienia ci id na 1 i kod ci pójdzie poprawnie - osobiście - jeśli oczywiscie moge cos zaproponoac to żebyś zastosował wyrażenie regularne zamiast tego numerica czyli
i daj znac czy wywalenie numerica pomoglo ![]() u mnie zdaje egzamin i nie przepuszcza niczego oprocz cyfr |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 29 Pomógł: 0 Dołączył: 12.10.2007 Ostrzeżenie: (0%) ![]() ![]() |
Dzieki stary miałeś racje, zwracam honor, is_numeric chrzanilo sprawe, wytlumacz mi tylko dlaczego??
Ten post edytował edgar5 12.10.2007, 22:13:51 |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 100 Pomógł: 11 Dołączył: 20.05.2007 Skąd: z fotela :) Ostrzeżenie: (0%) ![]() ![]() |
dlaczego?
![]() ![]() ![]() oczywiście jest to wbrew sztuce i tak dalej ale jesli działa i działa poprawnie (a juz kilka moich tworow funkcjonuje w sieci) to znaczy ze jeszcze nie musze sie tym przejmować - oczywiście jesli ktoś wie jak to sprawdzać/deklarować przy przekazywaniu zmiennych również z checią poczytam ![]() o ja niekumaty ![]() ![]() Ten post edytował Prym 12.10.2007, 22:32:59 |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 25.06.2025 - 10:00 |