Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Problem z checkboxami (implode)
Forum PHP.pl > Forum > Przedszkole
kuzarek
Witam! Mam następujący problem:

dodaj.php
  1. <?
  2. if ($wporzo != "tak") {
  3.  header("Location: http://localhost/baza.php");
  4.  exit;
  5. } else {
  6.  session_register('wporzo');
  7. }
  8.  
  9. for($i = 0 ; $jezyk[$i] != null; $i++)
  10. {
  11. $jezyki = implode(", ", $jezyk);
  12. }
  13. ?>

  1. <form action="dodaj_baza.php" method="post">
  2. <tr>
  3. <td>
  4. <p><strong>Nazwa szkoly:</strong><br>
  5. <input type="text" name="nazwa" size=35 maxlenght=100></p>
  6. <p><strong>Jezyki:</strong><br>
  7. <input type="checkbox" name="jezyk[]" value="Angielski podstawowy">
  8. Angielski podstawowy<br>
  9. <input type="checkbox" name="jezyk[]" value="Angielski rozszerzony">
  10. Angielski rozszerzony<br>
  11. <input type="checkbox" name="jezyk[]" value="Niemiecki podstawowy">
  12. Niemiecki podstawowy<br>
  13. <input type="checkbox" name="jezyk[]" value="Niemiecki rozszerzony">
  14. Niemiecki rozszerzony<br>
  15. <input type="checkbox" name="jezyk[]" value="Hiszpański podstawowy">
  16. Hiszpański podstawowy<br>
  17. <input type="hidden" name="jezyki" value="<? echo $jezyki; ?>">
  18. </td>
  19. </tr>
  20. <tr>
  21. <td><input type="submit" name="submit" value="Wyślij"></td>
  22. </tr>
  23. </table>
  24. </form>
  25. </body>
  26. </html>


Generalnie w tym skrypcie chodzi o to aby za pomocą checkboxów można było zaznaczyć dowolne opcje,
a następnie wynik w postaci ciągu (implode) był w oknie wynikowym skryptu dodaj_baza.php. Problemu nie ma gdy w action wstawimy
dodaj.php zamiast dodaj_baza.php (można to sprawdzić wstawiając
  1. <? echo $jezyki; ?>
po
  1. <td><input type="submit" name="submit" value="Wyślij"></td>
).
Jednak gdy w polu action damy dodaj_baza.php to zachowuje sie tak jakby nie było zmiennej $jezyki w wyniku czego powracamy do formularza (skrypt dodaj_baza.php kontroluje czy wartości dla zmiennych istnieją). Proszę o pomoc gdyż przeszukiwałem co się dało, to forum, jak i inne oraz google wraz z angielskimi serwisami! i szczerze mówiąc sie nie doszukałem. Problem podkreślam raz jeszcze polega na ustawieniu wartości dla Action w Form chyba że tkwi on gdzieś indziej.

dodaj_baza.php
  1. <?
  2.  
  3. if ((!$nazwa) || (!$jezyki)) {
  4. header( "Location: http://localhost/dodaj.php");
  5. } else {
  6. }
  7.  
  8. if ($wporzo != "tak") {
  9.  header("Location : http://localhost/baza.php");
  10.  exit;
  11. } else {
  12.  session_register('wporzo');
  13. }
  14.  
  15. $nazwa_bazy = "nazwa bazy";
  16. $nazwa_tabeli = "nazwa tabeli";
  17. $polaczenie = @mysql_connect("localhost", "login", "haslo") or die ("Próba polaczenia nie powiodla sie");  
  18. $baza = @mysql_select_db($nazwa_bazy, $polaczenie) or die("Wybór bazy danych nie powiódl sie.");
  19.  
  20. $sql = "INSERT INTO $nazwa_tabeli
  21. (id, nazwa, jezyki)
  22. VALUES ("", "$nazwa", "$jezyki")
  23. ";
  24.  
  25. $wynik = @mysql_query($sql, $polaczenie) or die("Wykonanie zapytania nie powiodlo sie.");
  26.  
  27. ?>

  1.  
  2. <p>Ponizsze informacje zostaly dodane do <? echo "$nazwa_tabeli"; ?></p>
  3.  
  4. <table cellspacing=3 cellpadding=5)
  5. <tr>
  6. <td valgin=top>
  7. <p><strong>Nazwa:</strong><br>
  8. <? echo "$nazwa"; ?></p>
  9. <p><strong>Jezyki:</strong><br>
  10. <? echo "$jezyki"; ?></p>
  11. </td>
  12. </tr>
  13. <tr>
  14. <td algin=center colspan=2><br>
  15. <p><a href="baza.php">Powrót do glównego menu</a></p>
  16. </td>
  17. </tr>
  18. </body>
  19. </html>
Ociu
  1. <?
  2. $nazwa = $_POST['nazwa'];
  3. $jezyki = $_POST['jezyki'];
  4.  
  5. if ((!$nazwa) || (!$jezyki)) {
  6. header( "Location: http://localhost/dodaj.php");
  7. } else {
  8. }
  9. ?>
kuzarek
Jeżeli mam być szczery to tego typu rozwiązanie sprawdzałem, ale przed sprawdzeniem wiedziałem że nie może pomóc, ponieważ nie było problemu z przekazaniem wartości zmiennej $nazwa do dodaj_baza.php. Czyli szukamy dalej, ja też...
A dla Ociu składam dzięki za zainteresowanie :-)

Edycja 17 listopada 2005:
No i wkońcu, po wielu zmaganiach z próbą wyciągnięcia wartości $jezyki i przekazania jej do drugiego skryptu, udało się!

Dla informacji próbowałem także przekazywać wartość zmiennej za pomocą akcji GET i co dziwne na pasku adresu były wszystkie dane,ale i tak nie były dostępne w skrypcie dodaj_baza.php.

Jak to bywa w takich przypadkach (co zresztą przewidywałem smile.gif ) problem był banalny. Wystarczyło przenieść pętle:
  1. <?php
  2.  
  3. for($i = 0 ; $jezyk[$i] != null; $i++)
  4. {
  5. $jezyki = implode(",", $jezyk);
  6.  
  7. }
  8.  
  9. ?>

ze skryptu dodaj.php na początek skryptu dodaj_baza.php ,a także usunąć 1 linijke ze skryptu dodaj.php, a mianowicie:
Kod
<input type="hidden" name="jezyki" value="<? echo $jezyki; ?>">


Jednak dalej nie rozumiem dalczego skrypt dodaj.php nie chciał przekazać (albo dodaj_baza.php nie chciał odebrać) ciągu znaków w formie "angielski rozszerzony, niemiecki podstawowy, niemiecki rozszerzony". Jedyne co mi przychodzi do głowy to to, że być może "value" nie przekazuje danych tego typu. No ale przecierż jak mamy np. textarea to mamy tam dane po przecinkach i jest OK. Więc jakby ktoś miał pomysł lub wiedzę to proszę się podzielić, bo jest to trochę interesujące.

Pozdrawiam
Arek
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.