Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: problem z własną funkcją i addslashes
Forum PHP.pl > Forum > Przedszkole
AIRSKY
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
rmn
co rozumiesz przez 'nie dziala'? u mnie chyba wszystko ok
AIRSKY
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]
borec
phpMyAdmin przed wyswietleniem danych przepuszcza je przez stripslashes() dlatego nie widac, ale na pewno sa
AIRSKY
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 ?
rmn
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. ?>
AIRSKY
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
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.