Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP] Zły argument w foreach()
sadistic_son
post 23.08.2009, 10:03:09
Post #1





Grupa: Zarejestrowani
Postów: 1 495
Pomógł: 245
Dołączył: 1.07.2009
Skąd: Bydgoszcz

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


Wyświetla mi następujący błąd:
Cytat
Warning: Invalid argument supplied for foreach() in xxxxxxxxx on line 105
.

Bierze się on z pętli foreach, która rzekomo nie rozpoznaje argumentu.
Ten plik ma realizować usuwanie kilku userów zaznaczonych w formularzu polem opcji wyboru.

Formularz do zaznaczania userów:
  1. echo'<form action=index.php?page=admin_panel method=post >';
  2.  
  3. //tutaj klila pol checkbox z roznymi warosciami dla $row[0] - czyli id usera w bazie
  4. echo"<input type=checkbox name=check[] value=$row[0] />
  5. <input type=submit name=delete_user value=usun />
  6. </form>';
Nastepnie jesli kliknieto w usun to pojawia sie formularz z pytaniem czy na pewno usunac uzytkownika lub kilku, zaznaczonych polem checkbox:
  1. echo '<form action="index.php?page=admin_panel" method="post" >
  2. <input type="submit" name="delete_yes" value="TAK" /> <input type="submit" name="no" value="NIE" /><input type="hidden" name="delete" value="'.$_POST['check'].'" /></form>';

I nastepnie skrypt ktory 'odbiera' dane z formularza z pytaniem czy usunac:
  1. if(isset($_POST['delete_yes']) && isset($_POST['delete'])){
  2.  
  3. $users_to_delete=$_POST['delete'];
  4.  
  5. foreach($users_to_delete as $row){
  6. $pass=rand(1,999999);
  7. $query="UPDATE t_users SET name = 'konto usunięte' , password = '$pass' , email = 'konto usunięte' , active = 0 , admin = 0 WHERE id_user = $row";
  8. mysql_query($query);
  9. }
  10. }

Wlasciwie to to nie ma usuwac uzytkownikow ale nadpisywac ich nazwy jako 'konto usuniete'.
I wlasnie po kliknieciu w TAK, kiedy ma zadzialac petla usuwajaca/nadpisujaca userow wyswietla sie ten blad.


--------------------
Uśpieni przez system, wychowani przez media,
Karmieni zmysłami, próżnymi żądzami...

-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
Jesteś zbyt leniwy, żeby się zarejestrować? Ja jestem zbyt leniwy aby Ci pomóc!
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
Go to the top of the page
+Quote Post
phpion
post 23.08.2009, 10:08:53
Post #2





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




$users_to_delete nie jest tablicą. Najprostszy sposób żeby sprawdzić co siedzi w zmiennej:
  1. var_dump($users_to_delete);

Zakładam, że ten kod:
  1. echo '<form action="index.php?page=admin_panel" method="post" >
  2. <input type="submit" name="delete_yes" value="TAK" /> <input type="submit" name="no" value="NIE" /><input type="hidden" name="delete" value="'.$_POST['check'].'" /></form>';

powinien wyglądać mniej-więcej tak:
  1. echo '<form action="index.php?page=admin_panel" method="post" >
  2. <input type="submit" name="delete_yes" value="TAK" /> <input type="submit" name="no" value="NIE" /><input type="hidden" name="delete[]" value="'.$_POST['check'].'" /></form>';

czyli zmienić name="delete" na name="delete[]". Te hiddeny powinny być generowane w jakiejś pętli.

Ten post edytował phpion 23.08.2009, 10:09:27
Go to the top of the page
+Quote Post
sadistic_son
post 23.08.2009, 10:20:08
Post #3





Grupa: Zarejestrowani
Postów: 1 495
Pomógł: 245
Dołączył: 1.07.2009
Skąd: Bydgoszcz

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


Cytat(phpion @ 23.08.2009, 11:08:53 ) *
czyli zmienić name="delete" na name="delete[]".
Przeoczylem to, po zmianie na delete[] juz nie wywala bledu ale tez nic sie nie dzieje. Nawet po potraktowaniu $_POST['delete'] print_r nic nie wyswietla po za 'Array'.

Cytat(phpion @ 23.08.2009, 11:08:53 ) *
Te hiddeny powinny być generowane w jakiejś pętli.
Racja! Zrobiłem to tak:
  1. foreach($_POST['check'] as $row){
  2. echo'<input type="hidden" name="delete[]" value="'.$row.'" />';
  3. }
I działa guitar.gif Dzięki!

Ten post edytował sadistic_son 23.08.2009, 10:27:40


--------------------
Uśpieni przez system, wychowani przez media,
Karmieni zmysłami, próżnymi żądzami...

-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
Jesteś zbyt leniwy, żeby się zarejestrować? Ja jestem zbyt leniwy aby Ci pomóc!
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
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: 14.07.2025 - 01:05