Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]Function implode, dziala tylko z @
-Helfer-
post
Post #1





Goście







Wysyłam coś takiego w formularzu:
  1. <input type="checkbox" name="r[]" value="wtf" />1<br />
  2. <input type="checkbox" name="r[]" value="wtf2" />2<br />
  3. <input type="checkbox" name="r[]" value="wtf3" />3<br />


A za pomocą kodu poniżej odbieram i validuje, po czym UPDATUJE w SQL:
  1. function CzyscArray($data){
  2. @$zmienna = implode(", ",$data);
  3. $zmienna = htmlspecialchars(trim($zmienna));
  4. $zmienna = mysql_real_escape_string($zmienna);
  5. $zmienna = substr($zmienna,0,250);
  6. return $zmienna;
  7. }
  8.  
  9. $insert = CzyscArray($_POST['r']);


Do tej pory działało to dobrze na localhoscie. Wrzuciłem na mój zewnętrzny serwer i nie działa... Więc wywaliłem "małpę" i wyskoczył taki błąd:
  1. Warning: implode(): Invalid arguments passed in C:\xampp...


Próbowałem na kilka sposobów zmieniać moją funkcję CzyscArray, nawet bawiłem się z dodawaniem wewnątrz funkcji pętli foreach, ale nic nie przyniosło skutku. Mógłby mi ktoś pomóc skonstruować poprawnie funkcję łączenia i filtrowania z tablicy?
Go to the top of the page
+Quote Post
fate
post
Post #2





Grupa: Zarejestrowani
Postów: 824
Pomógł: 106
Dołączył: 14.03.2012
Skąd: Warszawa

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


wygluszyles imyslles ze dziala
  1. $insert = CzyscArray($_POST);
Go to the top of the page
+Quote Post
-helfer-
post
Post #3





Goście







Hmm, a jeśli przesyłam kilka tablic o różnej nazwie POSTEM za jednym zamachem, to jak je odbiorę i posegreguję? ;>
Twój sposób pomijając powyższy drobiazg również nie działa i też wywala ten sam błąd.

Any idea?
Go to the top of the page
+Quote Post
-....-
post
Post #4





Goście







wyprintuj sobie $data i zobaczysz co zwraca... taki problem?
Go to the top of the page
+Quote Post
Posio
post
Post #5





Grupa: Zarejestrowani
Postów: 417
Pomógł: 44
Dołączył: 23.06.2011

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


Tak jak Gość wyżej, sprawdź sobie co zwraca twoje $_POST['r'] to będziesz wiedział dlaczego implode tego nie łapie (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
-Helfer-
post
Post #6





Goście







  1. <input type="checkbox" name="r[]" value="wtf" />1<br />
  2. <input type="checkbox" name="r[]" value="wtf2" />2<br />
  3. <input type="checkbox" name="r[]" value="wtf3" />3<br />
  4.  
  5. function CzyscArray($data){
  6. $zmienna = implode(", ",$data);
  7. return $zmienna;
  8. }
  9.  
  10. print_r($_POST['r']);
  11. #Array ( [0] => wtf [1] => wtf2 [2] => wtf3 )
  12.  
  13. print_r(CzyscArray($_POST['r']));
  14. #wtf, wtf2, wtf3
  15.  
  16. Warning: implode(): Invalid arguments passed in C:\xampp\htdocs\test\wtf.php on line 6


Tak to wygląda. Na localhoście wywala ten błąd i jak widać działa, ale na zewnętrznym serwerze nie działa...
Nie wiem jak to rozgryźć.
Go to the top of the page
+Quote Post
-HELFER-
post
Post #7





Goście







Dobra!
Doszedłem do tego, że błąd tkwi w wysyłaniu kilku tablic(checkbox'ów) o różnej nazwie naraz i gdy jedna tablica jest pusta(nie zaznaczona) to zwraca wynik 0 i dlatego wywala błąd z implode();
Ale dalej nie mogę się z nim uporać, pomyślałem, że skoro błąd tkwi w przesyłaniu zerowej wartości do funkcji to będę najpierw liczył czy dana wartość >0 za pomocą funkcji strlen(); ale to nie pomaga i wywala błąd przez który znowu jestem w tzw. czarnej dupie!
  1. function CzyscArray($data){
  2. if(strlen($data)>1){
  3. $zmienna = implode(", ",$data);
  4. }
  5. return $zmienna;
  6. }
  7. Warning: strlen() expects parameter 1 to be string, array given in C:\xampp\htdocs\test\wtf.php on line 2


Czy istnieje funkcja liczenia znaków tablicy? albo jak poprawnie zaprojektować tą funkcję aby śmigała? ...kurde pomóżcie (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
fate
post
Post #8





Grupa: Zarejestrowani
Postów: 824
Pomógł: 106
Dołączył: 14.03.2012
Skąd: Warszawa

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


sprawdzaj if !empty
Go to the top of the page
+Quote Post
valkirek
post
Post #9





Grupa: Zarejestrowani
Postów: 117
Pomógł: 6
Dołączył: 24.07.2013

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


count()
Go to the top of the page
+Quote Post
fiszol
post
Post #10





Grupa: Zarejestrowani
Postów: 452
Pomógł: 16
Dołączył: 25.05.2004
Skąd: Gorzów Wlkp.

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


Cytat(valkirek @ 12.09.2013, 17:59:55 ) *

Policzy ilość elementów, nie ilość znaków w tablicy.

  1. function array_size($a){
  2. $size = 0;
  3. while(list($k, $v) = @each($a)) {
  4. $size += is_array($v) ? array_size($v) : strlen($v);
  5. }
  6. return $size;
  7. }
Go to the top of the page
+Quote Post
-Gość-
post
Post #11





Goście







Dzięki wielkie Panowie!
Najwydajniejsze będzie !empty, szkoda, że nie mogę dać pkt. pomógł.
Problem rozwiązany. (IMG:style_emoticons/default/smile.gif)
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: 27.08.2025 - 16:21