Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [php] foreach
kt1
post 6.08.2007, 18:13:16
Post #1





Grupa: Zarejestrowani
Postów: 131
Pomógł: 3
Dołączył: 9.02.2006
Skąd: moree.webd.pl

Ostrzeżenie: (10%)
X----


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

Ten post edytował kt1 6.08.2007, 18:14:06


--------------------
Jeśli masz jakieś fajne tutki albo coś inne związane z php mysql AJAX to wejdź
tu WEJDZ TU I DODAJ !!! :)
Go to the top of the page
+Quote Post
Kethrax
post 6.08.2007, 18:16:04
Post #2





Grupa: Zarejestrowani
Postów: 80
Pomógł: 3
Dołączył: 9.12.2006
Skąd: Kraków

Ostrzeżenie: (10%)
X----


manual_foreach


--------------------
Historia wynalazków naukowych i technicznych uczy nas, że rasa ludzka uboga jest w niezależną myśl twórczą i wyobraźnię... człowiek musi niejako dosłownie potknąć się o rzecz samą, aby mu zakwitła Idea. [b]Albert Einstein[/b]
Go to the top of the page
+Quote Post
kt1
post 6.08.2007, 18:27:13
Post #3





Grupa: Zarejestrowani
Postów: 131
Pomógł: 3
Dołączył: 9.02.2006
Skąd: moree.webd.pl

Ostrzeżenie: (10%)
X----


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:)


--------------------
Jeśli masz jakieś fajne tutki albo coś inne związane z php mysql AJAX to wejdź
tu WEJDZ TU I DODAJ !!! :)
Go to the top of the page
+Quote Post
nospor
post 6.08.2007, 18:39:39
Post #4





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




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. ?>


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
webdice
post 6.08.2007, 18:43:05
Post #5


Developer


Grupa: Moderatorzy
Postów: 3 045
Pomógł: 290
Dołączył: 20.01.2007




Ewentualnie można tak:

  1. <?php
  2. foreach ((array) $_POST['nazwa'] as $a)
  3. {
  4. echo $a; 
  5. }
  6. ?>
Go to the top of the page
+Quote Post
Lee
post 6.08.2007, 23:11:38
Post #6





Grupa: Zarejestrowani
Postów: 319
Pomógł: 0
Dołączył: 11.04.2006
Skąd: Chojnów

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


i nie
  1. <form action="index.php">

tylko
  1. <fomt action="index.php" method="post">


--------------------
Nie pomagam w sprawach php na GG i PW od tego jest forum!
Go to the top of the page
+Quote Post
krzysiekk
post 6.08.2007, 23:12:05
Post #7





Grupa: Zarejestrowani
Postów: 155
Pomógł: 17
Dołączył: 13.03.2006
Skąd: Jaworze

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


mozna jesze tak zrobic
  1. <?php
  2. if (is_array($_POST['nazwa'])){
  3. foreach($_POST['nazwa'] as $a)  
  4.  {  echo $a;  }}
  5. ?>
Go to the top of the page
+Quote Post
kt1
post 7.08.2007, 09:21:25
Post #8





Grupa: Zarejestrowani
Postów: 131
Pomógł: 3
Dołączył: 9.02.2006
Skąd: moree.webd.pl

Ostrzeżenie: (10%)
X----


Nom, racja nadpisuje się , dzięki za pomoc.


--------------------
Jeśli masz jakieś fajne tutki albo coś inne związane z php mysql AJAX to wejdź
tu WEJDZ TU I DODAJ !!! :)
Go to the top of the page
+Quote Post
webdice
post 7.08.2007, 10:45:13
Post #9


Developer


Grupa: Moderatorzy
Postów: 3 045
Pomógł: 290
Dołączył: 20.01.2007




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).
Go to the top of the page
+Quote Post
Cezar708
post 7.08.2007, 11:03:36
Post #10





Grupa: Zarejestrowani
Postów: 1 116
Pomógł: 119
Dołączył: 10.05.2005
Skąd: Poznań

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


@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. ?>


Ten post edytował Cezar708 7.08.2007, 11:06:31
Go to the top of the page
+Quote Post
webdice
post 7.08.2007, 16:39:28
Post #11


Developer


Grupa: Moderatorzy
Postów: 3 045
Pomógł: 290
Dołączył: 20.01.2007




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.
Go to the top of the page
+Quote Post
Kicok
post 7.08.2007, 18:14:54
Post #12





Grupa: Zarejestrowani
Postów: 1 033
Pomógł: 125
Dołączył: 17.09.2005
Skąd: Żywiec

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


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>


--------------------
"Sumienie mam czyste, bo nieużywane."
Go to the top of the page
+Quote Post
webdice
post 7.08.2007, 22:41:06
Post #13


Developer


Grupa: Moderatorzy
Postów: 3 045
Pomógł: 290
Dołączył: 20.01.2007




  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[]".

Ten post edytował webdicepl 7.08.2007, 22:44:49
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: 12.07.2025 - 15:26