Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> problem z własną funkcją i addslashes
AIRSKY
post 14.07.2004, 18:25:42
Post #1





Grupa: Zarejestrowani
Postów: 13
Pomógł: 0
Dołączył: 31.01.2004

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


napisałem funkcje która ma wszystkie wartosci z tablicy przezucic przez addslashes..
a dokładniej chodzi o tablice $_POST która potem chce wstawic do bazy danych ..
  1. <?
  2. function do_bazy($dane) 
  3. { 
  4.     foreach($dane as $klucz=>$wartosc) 
  5.     { 
  6.         $dane[$klucz]=addslashes(trim($wartosc)); 
  7.     } 
  8.     return $dane; 
  9. }?>

i nie wiem dlaczego ta funkcja nie działa..
jakby ktos miał pomysł jak to przerobic albo napisac inną funkcje która miała by to samo zrobić to był bym bardzo wdzieczny, bo jak mój formularz ma np 20 pól to kazdą zmienną przepuszczac osobno troche by mi zajeło i nie miało by wiekszego sensu

pisałem juz o tym na forum WebHelp, ale niestety nikt mi nie potrafił pomóc

Ten post edytował AIRSKY 14.07.2004, 18:26:24
Go to the top of the page
+Quote Post
rmn
post 14.07.2004, 23:51:43
Post #2





Grupa: Zarejestrowani
Postów: 91
Pomógł: 0
Dołączył: 19.02.2004
Skąd: Piaseczno

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


co rozumiesz przez 'nie dziala'? u mnie chyba wszystko ok
Go to the top of the page
+Quote Post
AIRSKY
post 15.07.2004, 09:19:33
Post #3





Grupa: Zarejestrowani
Postów: 13
Pomógł: 0
Dołączył: 31.01.2004

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


gdy wrzuce do niej tablice z formularza a potem te dane chce wrzucic do bazy to w bazie nie ma slashy .. [przegladam baze przez phpMyAdmin]
Go to the top of the page
+Quote Post
borec
post 15.07.2004, 09:25:14
Post #4





Grupa: Zarejestrowani
Postów: 260
Pomógł: 0
Dołączył: 18.07.2003
Skąd: Tarnów

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


phpMyAdmin przed wyswietleniem danych przepuszcza je przez stripslashes() dlatego nie widac, ale na pewno sa


--------------------
Gentoo Linux 64bit / PHP 5.2 / MySQL 5.1
-> Administracja serwerami Linux i FreeBSD
Go to the top of the page
+Quote Post
AIRSKY
post 15.07.2004, 12:07:55
Post #5





Grupa: Zarejestrowani
Postów: 13
Pomógł: 0
Dołączył: 31.01.2004

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


no ale jak np przezuce jedna zmienną z formularza przez addslashes() i potem przegladam baze przez phpmyadmin to wtedy slashe w niej są exclamation.gif

czy jakies zamieszanie moze tutaj robic magic quotes .. bo są ustawione na ON ?

EDIT
---------------------------

wyłączyłem magic quotes i teraz przynajmniej widac czy działa
i własnie zaobserwowałem coś naprawde dziwnego a mianowicie
jak napisze
  1. <?php
  2. function do_bazy($_POST){
  3. tutaj tresc funkcji} 
  4. ?>
i potem odwołam sie do niej poprzez
  1. <?php
  2. do_bazy($_POST)
  3. ?>
to dziła tzn w tablicy są slashe ..
ale jak napisze
  1. <?php
  2. function do_bazy($dane){
  3. tutaj tresc funkcji} 
  4. ?>

to wtedy juz slashy nie ma ..

i tutaj jest moje pytanie... czy to ma znaczenie jak w definicji funkcji nazwe tablice która ma być pobierana ?

Ten post edytował AIRSKY 16.07.2004, 00:17:37
Go to the top of the page
+Quote Post
rmn
post 16.07.2004, 12:05:46
Post #6





Grupa: Zarejestrowani
Postów: 91
Pomógł: 0
Dołączył: 19.02.2004
Skąd: Piaseczno

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


hmm a sprobuj z instrukcja return
  1. <?php
  2.  
  3. $dane = mojafunkcja($dane);
  4.  
  5.  
  6. ?>


$_POST to nie jest najlepsza nazwa na argument funkcji poniewaz jest to nazwa tablicy superglobalnej i byc moze nie mozna uzywac jej tak jak Ty. Zmien tez nazwe parametru funkcji bo w tym konretnym przypadku moze to cos zmienic.

Ale ogolnie rzecz biorac pamietaj ze jesli przekazujesz jakies dane do funkcji do funkcja pracuje na lokalnej kopii tych danych a nie na zmiennych która przekazales do funkcji

sprawdz to:
  1. <?php
  2.  
  3. function Dodaj10($liczba)
  4. {
  5. $liczba = $liczba + 10;
  6. echo 'Wartosc kopii lokalnej przed zwroceniem: '.$liczba.'n';
  7. return $liczba
  8. }
  9.  
  10. $mojaLiczba = 16.'n';
  11. Dodaj10($mojaLiczba); // wyrzuci Wartosc kopii lokalnej przed zwroceniem: 26
  12.  
  13. echo $mojaLiczba; // wyrzuci 16 a nie 26!
  14.  
  15. $mojaLiczba = Dodaj10($moajLiczba); //Wartosc kopii lokalnej przed zwroceniem: 26
  16. echo $mojaLiczba;// teraz faktycznie zmieni wartosc $mojaLiczba na 26
  17. ?>


Ten post edytował rmn 16.07.2004, 12:19:53
Go to the top of the page
+Quote Post
AIRSKY
post 16.07.2004, 15:36:59
Post #7





Grupa: Zarejestrowani
Postów: 13
Pomógł: 0
Dołączył: 31.01.2004

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


Cytat(rmn @ 2004-07-16 13:05:46)
hmm a sprobuj z instrukcja return
  1. <?php
  2.  
  3. $dane = mojafunkcja($dane);
  4.  
  5.  
  6. ?>

Wielkie dzięki, teraz działa, rozwiązałeś w prosty sposób kilka dni moich rozterek biggrin.gif
to mam kolejne pytanie..
jak przeżuce tablice $_POST przez tą funkcje i potem wyswietle jakies pole to slashe są [ no bo o to chodzi ] i wrzucam to potem do bazy, przegladam baze przez phpMyAdmin i tam slashy nie ma

Cytat(borec)
phpMyAdmin przed wyswietleniem danych przepuszcza je przez stripslashes() dlatego nie widac, ale na pewno sa

no to dobra to jest odp na moje pytanie ...
no ale jezeli wyswietlam te dane z bazy na stronie to slashy tez nie ma, a wg tego toku myslenia powinny być, wyglada to tak jakby gdzies po drodze zniknęły.
Wiem że te moje pytania są moze dziwne i wogóle, ale ucze sie php nie długą i jak coś mnie zaciekawi to chce to wyjaśnic do końca biggrin.gif
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: 21.06.2025 - 09:51