Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]formularz - nie wyświetla zmiennej
Forum PHP.pl > Forum > Przedszkole
achill
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?
darko
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;
achill
  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ć
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.