Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]formularz - nie wyświetla zmiennej
achill
post 20.01.2011, 04:06:04
Post #1





Grupa: Zarejestrowani
Postów: 29
Pomógł: 0
Dołączył: 28.08.2009
Skąd: wertykalne przez większość dnia

Ostrzeżenie: (0%)
-----


Witam.
mam maly problem juz sprawdziłem wszystko co się da i się pogubiłem co i jak.
mianowicie. mam formularz, ktory sie przesyla do siebie samej (PHP_SELF). mam tez kilka zmiennych (ponizej kod).
probelm polega na tym ze nie wyswietla mi zmiennej $er/nazwa/ w divach r/nazwa/ tylko traktuje albo jak tekst html albo nie wyswietla nic - nie widzi zmiennej.
Czy ktos moglby mi podsunac jakies pomysly.
oto kody:
funkcja tworzaca inputy w formularzu:
  1. function autoPasswording()
  2. {
  3. $choices = array('pass' => 'hasło.',
  4. 'pass1' => 'ponownie hasło.');
  5. foreach ($choices as $name => $nazwa)
  6. {
  7. echo '<div id="c">';
  8. echo '<div id="l'.$name.'">Podaj '.$nazwa.' : </div>';
  9. echo '<div id="m"><input type="password" id="input" name="'.$name.'" lenght="6" tabindex="1" onkeyup="czek'.ucfirst($name).'()" value="'.$_POST['$name'].'" /></div>';
  10. $er = '$er'.$name;
  11. echo '<div id="r'.$name.'">'.$er.'</div>';
  12. echo '</div>';
  13. }
  14. }

fragment obrobki danych z POSTa- samo przesyłanie działa sprawdzone print_r($_POST)
  1. if (($_POST['pass']) != ($_POST['pass1']))
  2. {
  3. $erpass1 = 'Oba pola muszą zostać wypełnione tym samym hasłem';
  4. $blad+=1;
  5. }

zasada działania jest taka ze jesli blad >0 to nie przesyla danych jesli rowne to przesyla. - banał

tak sobie analizowałem i zajrzałem w kod jaki sie wyświetla w źródle strony i wyglada to tak:
  1. <div id="c">
  2. <div id="lpass1">Podaj ponownie hasło. : </div>
  3. <div id="m"><input type="password" id="input" name="pass1" lenght="6" tabindex="1" onkeyup="czekPass1()" value="" /></div>
  4. <div id="rpass1">$erpass1</div>
  5. </div>


gdy zmienie
  1. echo '<div id="r'.$name.'">'.$er.'</div>';

na
  1. echo '<div id="r'.$name.'">';
  2. echo '<?php echo '.$er.'; ?>';
  3. echo '</div>';

daje w rezultacie:
  1. <div id="rpass1"><?php echo $erpass1; ?></div>


Czy ktoś może mi wytłumaczyć w czym rzecz? nie rozumiem czemu nie może tego odczytać - każda zmienna jest zadeklarowana istnieje taka zmienna i w każym innym miejscu ją pobiera ale nie tu?

Ten post edytował achill 20.01.2011, 04:16:34


--------------------
"pomógł" daje nie dlatego, że ktoś mi pomógł
ale dlatego, że się czegoś mogłem nauczyć.
Go to the top of the page
+Quote Post
darko
post 20.01.2011, 04:22:24
Post #2





Grupa: Zarejestrowani
Postów: 2 885
Pomógł: 463
Dołączył: 3.10.2009
Skąd: Wrocław

Ostrzeżenie: (0%)
-----


tip:
jesteśmy wewnątrz funkcji i nie wiemy, co to jest $er, tym bardziej nie wiemy czym jest
  1. $er = '$er'.$name;

w źródle strony $erpass wzięło się z powyższej linii kodu, ponieważ
pass wzięło się stąd:
  1. $choices = array('pass' => 'hasło.',

a "$er" stąd:
  1. $er = '$er'.$name;


--------------------
Nie pomagam na pw, tylko forum.
Go to the top of the page
+Quote Post
achill
post 20.01.2011, 16:34:23
Post #3





Grupa: Zarejestrowani
Postów: 29
Pomógł: 0
Dołączył: 28.08.2009
Skąd: wertykalne przez większość dnia

Ostrzeżenie: (0%)
-----


  1. /*zmienna*/$er = /*string*/ '$er'./*zmienna*/$name

w ten sposób chce tworzyć 'dynamicznie' nazwy zmiennej dla bledow według tablicy
czyli zmienna $er dla wartości tablicy pass1
daje nam $erpass1 (a to moim zdaniem jest zmienna wiec php powinno to lapac)

a wartosc dla tej zmiennej okreslamy w :
  1. $erpass1 = 'Oba pola muszą zostać wypełnione tym samym hasłem';


Wydaje mi się że tu wszystko jest dobrze - chyba, że z jakiegoś powodu strona widzi to jako string a nie zmienna ale ujecie tego w <?php ?> powinno zalatwiac sprawe?

no coz jesli nie da rady w ten sposob to moze tablica $er['name'=> '']?
a w obobce przeslanych danych nadawanie drugiej wartosci stringa $er['name' => 'jakis tam błąd']



Cytat(darko @ 20.01.2011, 04:22:24 ) *
tip:
jesteśmy wewnątrz funkcji i nie wiemy, co to jest $er, tym bardziej nie wiemy czym jest
  1. $er = '$er'.$name;

no dobra cos zaczyna mi sie ukladać w głowie
masz racje wewnątrz funkcji $er nie ma właściwie żadnej wartości ( zpunktu widzenia tego co chcę osiągnąć)
przypisałem jej tylko dwa inne stringi '$er' i string ktory sie kryje pod $name
a potem juz na zewnarz funkcji zmieniam wartość $er-a lub innaczej na to patrząc próbuje nadać wartość stringowi '$erpass1'?

krotko mowiac zeby cokolwiek nadac musze innaczej to deklarować.

dobrze analizuję?

no i ruszyłem ciut do przodu
  1. echo '<div id="r'.$name.'"> '. ${'er'.$name}.' </div>';

wyswietla prawidlowy element (narazie na filtrze - print_r($pass1) echo (...) tez juz sprawdzilem teraz musze to w html wkleic.
Dzięki wielkie za wskazówkę


ps.popełniłem kilka błędów ale spoko rozwiązanie które znalazłem otworzyło mi droge do rozwiązania problemu - na koniec wkleję jak to zrobiłem ku przestrodze


Obiecany poprawny kod funkcji php:

  1. function autoPasswording()
  2. {
  3. $choices = array('pass' => 'hasło.',
  4. 'pass1' => 'ponownie hasło.');
  5. foreach ($choices as $name => $nazwa)
  6. {
  7. global ${'er'.$name};
  8. echo '<div id="c">';
  9. echo '<div id="l'.$name.'">Podaj '.$nazwa.' : </div>';
  10. echo '<div id="m"><input type="password" id="input" name="'.$name.'" lenght="6" tabindex="1" onkeyup="czek'.ucfirst($name).'()" value="'.$_POST['$name'].'" /></div>';
  11. echo '<div id="r'.$name.'">'. ${'er'.$name} .'</div>';
  12. echo '</div>';
  13. }
  14. }


GLOBAL Panowie i Panie!
wstydnis.gif jaki wstyd - podstawy zmiennych się kłaniają
w każdym razie wszystko śmiga aż miło popatrzeć

Ten post edytował achill 20.01.2011, 16:37:41


--------------------
"pomógł" daje nie dlatego, że ktoś mi pomógł
ale dlatego, że się czegoś mogłem nauczyć.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 19.07.2025 - 14:39