Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Funckja i lista rozwijana
Forum PHP.pl > Forum > PHP
koreja
Witam. Mam mały problem, mianowicie zbudowałem taką funkcję:

  1. <?php
  2. function buildOptions($options, $selectedOption) {
  3.    foreach($options as $value => $desc) {
  4.        if($value == $selectedOption) {
  5.            print '<option value "' . $value . '" selected="selected" name="'.$value.'">' . $desc . '</option>';
  6.        } else {
  7.            print '<option value"' . $value . '" name="'.$value.'">' . $desc . '</option>';
  8.        }
  9.    }
  10. }
  11. ?>


Wklejam ją do poniższego formularza:
strona.php
  1. <form action="strona.php" method="post">
  2. <label for="opt">Opcje:</label>
  3. <select id="opt" name="opt"><?php buildOptions($options); ?></select><br />
  4. <input type="submit" value="Dalej" name="submit" />
  5. </form>


Gdy wchodzę na stronkę z tym formularzem, lista jest poprawna, jednak po wyborze opcji i kliknięciu na "Dalej" listy już nie ma. A sprawdzenie
  1. <?php echo $_POST['opt']; ?>
nie pokazuje nic.

W czym może być problem?
Rafal Filipek
Kod
print '<option value"' . $value . '" name="'.$value.'">' . $desc . '</option>';

brakuje = po value
koreja
Ehh, mały błąd winksmiley.jpg Teraz już
  1. <?php
  2. $_POST['opt']
  3. ?>
wyświetla numerek, jednak po przesłaniu danych nie generuje listy po raz kolejny...
sowiq
Cytat(koreja @ 10.01.2009, 14:44:28 ) *
jednak po przesłaniu danych nie generuje listy po raz kolejny...
A może by tak <option...><option...> objąć tagiem <select...> ?
Rafal Filipek
Kod
<select id="opt" name="opt"><?php buildOptions($options); ?></select>

select jest
@koreja - po kodzie ktory pokazales nie jestesmy teraz w stanie stwierdzic dlaczego tak sie dzieje. musisz chyba pokazac cos wiecej.
koreja
Aha smile.gif

Plik register.php

  1. <?php include('reg.func.php');
  2.  
  3. if(isset($_POST['submit']) && $_POST['submit'] == "Rejestruj") {
  4.  
  5. ?>
  6. <fieldset id="register">
  7. <legend>Rejestracja nowego użytkownika:</legend>
  8. <form action="register.php" method="post">
  9. <label for="state">Województwo:</label><?php isValidState(); ?>
  10. <input type="submit" name="submit" style="margin-left:150px;" value="Rejestruj" />
  11. </form>
  12. <?php } else {
  13. ?>
  14. <fieldset id="register">
  15. <legend>Rejestracja nowego użytkownika:</legend>
  16. <form action="register.php" method="post">
  17. <label for="state">Województwo:</label>
  18. <select id="state" name="state"><?php buildOptions($stateOptions); ?></select><br />
  19. <input type="submit" name="submit" style="margin-left:150px;" value="Rejestruj" />
  20. </form>
  21. <?php }
  22. ?>


reg.func.php
  1. <?php
  2. function isValidState() {
  3.            if($_POST['state'] != '0') {
  4.                print '<select id="state" name="state">'; buildOptions($stateOptions, $_POST['state']); print '</select><br />';
  5.                $valid = true;
  6.                }
  7.                else {
  8.                print '<select id="state" name="state">'; buildOptions($stateOptions); print '</select><br />';
  9.                }
  10.            }
  11. ?>
sowiq
Cytat(Rafal Filipek @ 10.01.2009, 14:53:39 ) *
select jest
Sorry, nie doczytałem.
@autor,
czy w kodzie HTML jest generowane cokolwiek? Bo jeśli nie, to pewnie przekazujesz w parametrze pustą tablicę, lub coś w tym stylu.

  1. <?php
  2. function isValidState() {
  3.           if($_POST['state'] != '0') {
  4.               print '<select id="state" name="state">'; buildOptions($stateOptions, $_POST['state']); print '</select><br />';
  5. [...]
  6. ?>
Zapomniałeś o global $stateOptions
koreja
Wiesz, global nie ma sensu, bo do reg.func.php includuje plik array.php, w którym znajduje się funkcja buildOptions oraz tablice, z których generuję te opcje smile.gif
sowiq
Cytat(koreja @ 10.01.2009, 15:07:26 ) *
Wiesz, global nie ma sensu, bo do reg.func.php includuje plik array.php, w którym znajduje się funkcja buildOptions oraz tablice, z których generuję te opcje smile.gif
A jak chcesz wywołać z funkcji isValidState() funkcję
buildOptions($stateOptions, $_POST['state']), skoro w momencie wywołania zmienna $stateOptions nie istnieje (w kontekście funkcji isValidState() )?

Zrób:
  1. <?php
  2. function isValidState() {
  3.    global $stateOptions;
  4.    // reszta
  5. ?>
koreja
Dzięki sowiq smile.gif

Źle zrozumiałem poprzedni post. Dzięki smile.gif
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.