Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Sprawdzenie zawartości zmiennej $POST
Forum PHP.pl > Forum > Przedszkole
krzesik
Witam, mam poniższy kod generujący mi krotkę w tabeli

  1. .....
  2. echo '<td><input type=text name=WSK1 size=3 value="'.$WSK1.'">%</td>';
  3. .....

user po uruchomieniu skryptu otrzymuje tabelkę z wypełnionymi danymi wysłanymi z forma i to jest oki, ale chciałbym wpisać w poszczególne krotki wartości początkowe, które powinny być wyświetlane na wejściu, dopiero po ewentualnej zmianie przez usera powinny być podmienione, nie do końca wiem jak to napiać. Kombinowałem z testowaniem if(empty($_POST['WSK1'])) echo..... i tu się zamotałem.
proszę o pomoc w temacie.
abort
isset, a nie empty.
Szczegóły ich działania w manualach.
Damonsson
if(empty($_POST['WSK1'])) echo 'bla bla'

nie działa?

to przed tym wyświetl sobie

print_r($_POST['WSK1']);
abort
1. Jeśli nie będzie zdefiniowane $_POST['WSK1'] (a będzie wtedy, gdy pole w formularzu nie zostanie wypełnione), to (szczerze mówiąc) nie wiem, co empty zrobi - może się wyłożyć z errorem (nie testowałem).
2. jeśli $_POST['WSK1'] będzie miało wartość 0 (zero jako wartość albo zero jako string), to empty zwróci TRUE, co niekoniecznie musi być tym, czego krzesik oczekuje. Jest to opisane w manualu do empty().
krzesik
Cytat(abort @ 6.11.2012, 12:55:51 ) *
1. Jeśli nie będzie zdefiniowane $_POST['WSK1'] (a będzie wtedy, gdy pole w formularzu nie zostanie wypełnione), to (szczerze mówiąc) nie wiem, co empty zrobi - może się wyłożyć z errorem (nie testowałem).
2. jeśli $_POST['WSK1'] będzie miało wartość 0 (zero jako wartość albo zero jako string), to empty zwróci TRUE, co niekoniecznie musi być tym, czego krzesik oczekuje. Jest to opisane w manualu do empty().

Tak, Abort poczytałem wskazane manuale. Wydaje mi się że empty jest właściwszym rozwiązaniem, dlaczego?
wskazane pola zawsze istnieją gdyż tak mam zbydowanego forma, mogą mieć wartość zero stringowe czy też nie, dla mnie to nie ma znaczenia. Chciałbym uzyskać efekt taki jak wcześniej opisałem,
Damonsson
No tak masz rację, jeśli zero będzie jakąś istniejącą opcją wyboru, to wtedy faktycznie, empty nie zadziała tak jak autor by chciał.
b4rt3kk
Jeśli dobrze zrozumiałem, masz sobie formularz (oczywiście to schematyczne rozwiązanie):

  1. <input type="text" name="costam0" value="<?php echo $wartosc[0]; ?>" />
  2. <input type="text" name="costam1" value="<?php echo $wartosc[1]; ?>" />
  3. <input type="text" name="costam2" value="<?php echo $wartosc[2]; ?>" />


zawiera on pewne wartości początkowe, załóżmy więc, że ich podstawienie wygląda tak:

  1. $wartosc = array(10, 15, 20);


I teraz po przesłaniu formularza ten formularz jest ciągle widoczny, ale ma już mieć nie koniecznie wartości początkowe lecz te wpisane przez użytkownika (chyba, że tych wartości nie zmieniał)? Czy użytkownik może pozostawić puste pole?

  1. if ($_SERVER['REQUEST_METHOD'] == 'POST') {
  2. $wartosc = array ($_POST['costam0'], $_POST['costam1'], $_POST['costam2']); // to zwykłe podstawienie nowych wartości, nie zabezpiecza przed zostawieniem pustego pola.
  3.  
  4. for ($i=0; $i<3; $i++) {
  5. $fieldName = 'costam'.$i;
  6. if ($_POST[$fieldName] != '') $wartosc[$i] = $_POST[$fieldName]; // to natomiast podstawi jedynie niepuste wartości przesłane w formularzu, dla pustych pozostanie wartość domyślna
  7. }
  8. }


Nie jestem pewien czy właśnie coś takiego chcesz osiągnąć?
krzesik
zrobiłem tak, ponieważ nie chcę kożystać z tablicy ze zmiennymi (no chyba że inaczej się nie da...)
  1. echo '<td><input type=text name=WJR size=3 if(!isset($_POST[WJR])) {echo value="'.$WJR.'" else echo value="123"}>%</td>';


ale niestety nie działa.............
nospor
dałeś IF w echo więc trudno oczekiwać by się if wykonał.... ten if się poprostu wyświetla, jak wszystko w echo.... wink.gif
b4rt3kk
Cytat(krzesik @ 6.11.2012, 16:39:21 ) *
zrobiłem tak, ponieważ nie chcę kożystać z tablicy ze zmiennymi (no chyba że inaczej się nie da...)
  1. echo '<td><input type=text name=WJR size=3 if(!isset($_POST[WJR])) {echo value="'.$WJR.'" else echo value="123"}>%</td>';


ale niestety nie działa.............


Umieszczenie wszystkiego w tablicy wydaje się najprostszym pomysłem. Ale Twoim sposobem:

  1. echo '<td><input type=text name=WJR size="3"';
  2. if(isset($_POST[WJR])) echo ' value="$WJR"'; else echo ' value="123"';
  3. echo ' />%</td>';


i dałeś odwrotny warunek poprzednio, bo jeśli nie jest ustanowiony $_POST to wtedy wyświetlasz wartość zmiennej, a gdy jest to dajesz wartość domyślną, a nie to chyba było Twoim założeniem?
krzesik
Cytat(b4rt3kk @ 6.11.2012, 16:52:33 ) *
Umieszczenie wszystkiego w tablicy wydaje się najprostszym pomysłem. Ale Twoim sposobem:

  1. echo '<td><input type=text name=WJR size="3"';
  2. if(isset($_POST[WJR])) echo ' value="$WJR"'; else echo ' value="123"';
  3. echo ' />%</td>';


i dałeś odwrotny warunek poprzednio, bo jeśli nie jest ustanowiony $_POST to wtedy wyświetlasz wartość zmiennej, a gdy jest to dajesz wartość domyślną, a nie to chyba było Twoim założeniem?


tak, faktycznie warunek teraz wpisałem odwrotny, ale to pozostałości z testowania, jednak teraz wyszło czy lepsze jest isset czy też empty. Więc dla potomnych informuję że stosując isset w sytuacji gdy user nic nie wpisał w krotce pojawia się $WJR, dla empty działa jak należy.
Dziękuję i pozdrawiam

jednak wracam do tematu....
mój kod wygląda teraz tak:
  1. echo '<td><input type="text" name="WJB3" size="3"'; if(empty($_POST[WJB3])) echo ' value="$WJB3"'; else echo ' value="15"'; echo ' />%</td>';

uruchamiając skrypt w krotce mam $WJB3 - a powinno być 15, po wysłaniu forma zmienia się na 15 i dalsza część skryptu prawidłowo mi się przelicza, jednak jak wpiszę coś ręcznie i wyślę to POST dostaje nową zmienną i dalsza częśc się przelicza, lecz w krotce zamiast nowej zmiennej nadal mam 15
b4rt3kk
Wedle tego warunku:

  1. if(empty($_POST['WJB3'])) echo ' value="$WJB3"'; else echo ' value="15"';


Jeśli $_POST['WJB3'] jest pusty przypisz wartość $WJB3, w przeciwnym razie przypisz wartość 15. Odwróć warunek i ponieważ nie wiem czym jest $WJB3 przypisz tak:

  1. if(!empty($_POST['WJB3'])) echo ' value="$_POST[\'WJB3\']"'; else echo ' value="15"';
krzesik
Dzięki!
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.