Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] foreach
Forum PHP.pl > Forum > Przedszkole
kt1
heja ,
mam taki problem
  1. <form action=index.php >
  2. <select name="nazwa[]" size="1" tabindex="1">
  3. <option>Windows xp, Vista</option>
  4. <option>MS Windows 98/Me/NT/2000/XP/Vista</option>
  5. <option>95,98,me, 2000</option>
  6. <option>Vista</option>
  7. </select>
  8. <input type=submit value=aga>
  9. </form>
  10.  <?
  11.  $nazwa="33";
  12.  foreach($nazwa as $a)
  13. {
  14.  echo "$a"; 
  15. } 
  16.  
  17. ?>

jeśli nic nie wybiorę to będzie błąd taki
  1. <?php
  2. Warning: Invalid argument supplied for foreach() in  ....index.php on line 14
  3. ?>

próbowałem dodać ELSE ale nie działa pomoże ktoś questionmark.gif
Kethrax
manual_foreach
kt1
Zrobiłem już sam smile.gif
  1. <?
  2. formularz();
  3.  
  4.  
  5.  $nazwa[1]="Wybier";
  6.  foreach($nazwa as $a)
  7. {
  8.  echo "$a"; 
  9. } 
  10.  
  11. ?>


i działa:)
nospor
Przeciez teraz nadpisujesz wartosc o indexie 1. Gdy nic nie wybierzesz to ok, ale gdy wybierzesz wszystkie to nadpiszesz..

  1. <?php
  2. if (!empty($_POST['nazwa']))
  3. foreach($_POST['nazwa'] as $a)
  4. {
  5.  echo $a; 
  6. }
  7. ?>
webdice
Ewentualnie można tak:

  1. <?php
  2. foreach ((array) $_POST['nazwa'] as $a)
  3. {
  4. echo $a; 
  5. }
  6. ?>
Lee
i nie
  1. <form action="index.php">

tylko
  1. <fomt action="index.php" method="post">
krzysiekk
mozna jesze tak zrobic
  1. <?php
  2. if (is_array($_POST['nazwa'])){
  3. foreach($_POST['nazwa'] as $a)  
  4.  {  echo $a;  }}
  5. ?>
kt1
Nom, racja nadpisuje się , dzięki za pomoc.
webdice
Cytat(krzysiekk @ 7.08.2007, 00:12:05 ) *
mozna jesze tak zrobic
  1. <?php
  2. if (is_array($_POST['nazwa'])){
  3. foreach($_POST['nazwa'] as $a)  
  4.  {  echo $a;  }}
  5. ?>


Tak nie będzie działać ponieważ zmienna $_POST['nazwa'] nie jest tablicą tylko stringiem i zawsze będzie zwracane FALSE. Możesz ewentualnie w tym wypadku sprawdzić czy zmienna istnieje (isset) lub czy nie jest pusta (!empty).
Cezar708
@webdicepl co Ty gadasz:
Cytat(kt1 @ 6.08.2007, 17:13:16 ) *
<select name="nazwa[]" size="1" tabindex="1">

nazwa jest tablicą (nie stringiem) ewentualnie nie będzie ustawionej jej wartości a sprawdzeniu powinno podlegać ewentualnie czy jest jakaś wewnątrz tablicy ustawiona! lub czy tablica jest ustawiona! czyli is_array(), count(), lub faktycznie isset(), empty. Dobrze byłoby dopisać nawet do kodu value="":

  1. <select name="nazwa[]" size="1" tabindex="1" value="">


wtedy powinien przekazywać zmienną, w najgorzym wypadku byłaby pusta i to sprawdzane byłoby w pętli już czyli

  1. <?php
  2. foreach ( $_POST['nazwa'] as $nazwa ) {
  3. if ( strlen( trim($nazwa) ) ) {
  4. // statement
  5. }
  6. }
  7. ?>
webdice
Cytat(Cezar708 @ 7.08.2007, 12:03:36 ) *
@webdicepl co Ty gadasz: (...)


$_POST jest jak najbardziej tablicą, ale $_POST['nazwa'] nie jest traktowane jako tablica i zawsze zwróci FALSE.
Kicok
Cytat
$_POST jest jak najbardziej tablicą, ale $_POST['nazwa'] nie jest traktowane jako tablica i zawsze zwróci FALSE.


  1. <?php
  2.  
  3. if( isset( $_POST['nazwa'] ) )
  4. {
  5. if( is_array( $_POST['nazwa'] ) ) {
  6. echo '<h4>$_POST['nazwa'] to tablica, a nie string:</h4>';
  7. }
  8.  
  9. echo '<pre>' . print_r( $_POST['nazwa'], true ) . '</pre>';
  10. }
  11.  
  12. ?>
  13. <br />
  14. <hr />
  15. <form action="" method="post">
  16. <input type="text" name="nazwa[]" value="1" /><br />
  17. <input type="text" name="nazwa[]" value="2" /><br />
  18. <input type="text" name="nazwa[]" value="3" /><br /><br />
  19.  
  20. <input type="submit" value="Testuj" />
  21. </form>
webdice
  1. <?php
  2.  
  3. if( isset( $_POST['nazwa'] ) )
  4. {
  5. if( is_array( $_POST['nazwa'] ) ) {
  6. echo '<h4>$_POST['nazwa'] to tablica, a nie string:</h4>';
  7. }
  8. else
  9. {
  10. echo '<h4>$_POST['nazwa'] w tym wypadku jest stringiem, a nie tablica!:</h4>';
  11. }
  12.  
  13. if (is_string ( $_POST['nazwa'] ))
  14. {
  15. echo '<h4>a to jakby komus bylo malo</h4>';
  16. }
  17.  
  18. echo '<pre>' . print_r( $_POST['nazwa'], true ) . '</pre>';
  19. }
  20.  
  21. ?>
  22. <br />
  23. <hr />
  24. <form action="" method="post">
  25. <input type="text" name="nazwa" value="1" /><br />
  26.  
  27. <input type="submit" value="Testuj" />
  28. </form>


Chodziło mi o mniej więcej taki przykład, nie zauważyłem że autor, miał name="nazwa[]".
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.