Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP] "[] operator not supported", Problem z przesyłaniem tablicy za pomocą $_POST
Kulfon
post
Post #1





Grupa: Zarejestrowani
Postów: 45
Pomógł: 2
Dołączył: 24.12.2010

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


Cześć.
mam taki fragment kodu:

  1. $j = 0;
  2. if(isset($_POST['tytul']) && $_POST['tytul'] != '')
  3. {
  4. foreach($_POST['tytul'] as $value){
  5. $tytul[] = $value;
  6. }
  7. foreach($_POST['typ_id'] as $key => $value){
  8. $typ_id[] = $value;
  9. }
  10. $j = count($typ_id) - 1;
  11. while($j >= 0){
  12. $query_kat = 'UPDATE '.$rodzaj2typ.' SET typ = \''.$tytul[$j].'\' where id = '.$typ_id[$j].'; ';
  13. $query = mysql_query($query_kat);
  14. if(!$query){die("Nie można wykonać zapytania do bazy danych");}
  15. else
  16. {
  17. $komunikat = 'Pomyślnie zapisano zmiany';
  18. }
  19. $j--;
  20. }
  21. }
  22. else
  23. {
  24. $_POST['typ_id'] = '';
  25. }
  26.  
  27. foreach ($category['products'] as $product){
  28. echo '<div class="pozycja"><span class="tytul"><input type="text" name="tytul[]" value="'.$product['name'].'" /></span>
  29. <span class="cena"><input type="text" name="cena[]" value="'.$product['cena'].'" /> <p>zł</p></span>
  30. <input type="hidden" name="typ_id[]" value="'.$product['id'].'" /></div>';
  31. }


xDebug wyrzuca błąd przy wysyłaniu formularza: Fatal error: [] operator not supported for strings in C:\wamp\www\funkcja1.php on line 4.

Czy możecie mi wyjaśnić co robię źle? Troszkę wcześniej w tym samym pliku pobieram sobie dane z innej tabeli (też tekst) wypisuję w formularzu tak samo jak tutaj i mogę to przesłać dokładnie w ten sam sposób jak tutaj - różnica jest tylko w nazwach $_POST. Tamto działa, a przy tym fragmencie wywala mi taki błąd i nie mam pojęcia jak to obejść.

Skrypt ma za zadanie w jednym formularzu przesłać dość dużą ilość danych i chciałem do tego celu użyć tablic w $_POST
Moim zamiarem było utworzenie takiej tablicy przy przesyłaniu formularza, a następnie po kolei zaktualizowanie wszystkich pól w bazie w zależności od tego ile ich będzie.
Pętle foreach() "przerabiają" mi wszystko to co mam w kolejnych POST'ach na tablice, z których łatwiej jest mi powyciągać wartości (nie wiem czy da się to zrobić inaczej, tak sobie wykombinowałem, gdyż w miejsce nazwy w POST nie można wstawić zmiennej ($_POST[$zmienna]) albo po prostu nie wiem jak to zrobić).
A następnie w zależności od tego ile mam elementów w tych tablicach tyle razy wysyłam zapytanie do bazy danych zmieniając przy tym indeksy w odpowiednich tablicach (IMG:style_emoticons/default/smile.gif)

Proszę o pomoc.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 5)
lukasz_p
post
Post #2





Grupa: Zarejestrowani
Postów: 8
Pomógł: 1
Dołączył: 15.01.2012

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


Hej!

Sprawdź co przeszło dalej. Umieść na samej górze skryptu:

  1. <pre>
  2. <?php var_dump($_POST); ?>
  3. </pre>
  4. <?php exit(); ?>


Może tutaj znajdziesz jakąś wskazówkę.

Ten post edytował lukasz_p 17.01.2012, 00:22:39
Go to the top of the page
+Quote Post
Kulfon
post
Post #3





Grupa: Zarejestrowani
Postów: 45
Pomógł: 2
Dołączył: 24.12.2010

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


Sprawdzone.
Cała struktura wyświetla się tak jak powinna.
Nigdzie żadnego błędu

tak to się prezentuje:
  1. 'nazwa_kat' =>
  2. 0 => string 'Kategoria' (length=9)
  3. 1 => string 'Następna kategoria' (length=18)
  4. 'id_kat' =>
  5. 0 => string '1' (length=1)
  6. 1 => string '4' (length=1)
  7. 'tytul' =>
  8. 0 => string 'tytuł' (length=5)
  9. 1 => string 'tytuł 2' (length=7)
  10. 2 => string 'tytuł 4' (length=7)
  11. 3 => string 'tytuł 5' (length=7)
  12.  
  13. 'cena' =>
  14. 0 => string '12.12' (length=5)
  15. 1 => string '10.53' (length=5)
  16. 2 => string '10.53' (length=5)
  17. 3 => string '10.53' (length=5)
  18.  
  19. 'typ_id' =>
  20. 0 => string '1' (length=1)
  21. 1 => string '2' (length=1)
  22. 2 => string '3' (length=1)
  23. 3 => string '19' (length=2)
  24.  


Ten post edytował Kulfon 17.01.2012, 00:29:19
Go to the top of the page
+Quote Post
lukasz_p
post
Post #4





Grupa: Zarejestrowani
Postów: 8
Pomógł: 1
Dołączył: 15.01.2012

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


A spróbuj wcześniej zainicjować $tytul jako array. Przed forech wstaw $tytul = array();
Go to the top of the page
+Quote Post
melkorm
post
Post #5





Grupa: Zarejestrowani
Postów: 1 366
Pomógł: 261
Dołączył: 23.09.2008
Skąd: Bydgoszcz

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


Pokaż ten pierwszy fragment kodu.
Cytat
Troszkę wcześniej w tym samym pliku pobieram sobie dane z innej tabeli (też tekst) wypisuję w formularzu tak samo jak tutaj i mogę to przesłać dokładnie w ten sam sposób jak tutaj - różnica jest tylko w nazwach $_POST. Tamto działa, a przy tym fragmencie wywala mi taki błąd i nie mam pojęcia jak to obejść.
Go to the top of the page
+Quote Post
Kulfon
post
Post #6





Grupa: Zarejestrowani
Postów: 45
Pomógł: 2
Dołączył: 24.12.2010

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


Dziękuję. Działa (IMG:style_emoticons/default/smile.gif)
wstawiłem
$tytul = array();
przed:

  1. foreach($_POST['tytul'] as $value){
  2. $tytul[] = $value;
  3. }

Naprawione wygląda to tak:
  1. $tytul = array();
  2. foreach($_POST['tytul'] as $value){
  3. $tytul[] = $value;
  4. }


Dla ciekawskich - wcześniejszy fragment kodu miał zadeklarowaną odpowiednią zmienną jako array();
  1. $nazwa_kat = array(); // tutaj na górze w miejscu gdzie sobie wszystkie zmienne deklarowałem
  2. $i = 0;
  3. $j = 0;
  4.  
  5. if(isset($_POST['nazwa_kat']) && $_POST['nazwa_kat'] != '')
  6. {
  7. foreach($_POST['nazwa_kat'] as $key => $value){
  8. $nazwa_kat[] = $value;
  9. }
  10. foreach($_POST['id_kat'] as $key => $value){
  11. $id_kat[] = $value;
  12. }
  13. $i = count($id_kat) - 1;
  14. while($i >= 0){
  15. $query_kat = 'UPDATE '.$rodzaj2kat.' SET kategoria = \''.$nazwa_kat[$i].'\' where id = '.$id_kat[$i].'; ';
  16. //echo($query_kat);
  17. $query = mysql_query($query_kat);
  18. if(!$query){die("Nie można wykonać zapytania do bazy danych");}
  19. else
  20. {
  21. $komunikat = 'Pomyślnie zapisano zmiany';
  22. }
  23. $i--;
  24. }
  25. }


Wybaczcie zamieszanie - zmęczenie i bajzel w kodzie swoje robią.
Jeszcze raz dziękuję za pomoc (IMG:style_emoticons/default/smile.gif)

Ten post edytował Kulfon 17.01.2012, 00:39:28
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 22.08.2025 - 20:55