Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [JavaScript]Przekazywanie zmiennych
Forum PHP.pl > Forum > Przedszkole
MateuszS
Witam, w wielkim uproszczeniu:

mam w pehapie pętelkę

  1. while($a = mysql_fetch_assoc($b)) {
  2. echo $a['id'];
  3. echo '<a href="#" id="link" onClick="jakasfunkcja()">Usun</a>';
  4. }


I chcę zrobić coś takiego że gdy klikne na Usun, wyswietlilo mi komunikat, w ktorym bylby ID tego wpisu, np czy na pewno chcesz usunac wpis o id x ?
Chodzi o to ze nie wiem, jak przypisac zmienna w petli php, probowalem zwyczajnie przypisac zmienna js do php ale przypisalo tylko ostatnie ID,


Drugie problem, to z classami i ich pobieraniem przez JS. Pisalem o tym w poprzednim temacie ale z racji ze dalem juz tam "pomogl" nikt tam nie zaglada ;]
(dodam ze probowalem wiele skryptow)

Pozdrawiam
erix
Cytat
Drugie problem, to z classami i ich pobieraniem przez JS. Pisalem o tym w poprzednim temacie ale z racji ze dalem juz tam "pomogl" nikt tam nie zaglada ;]

Wartość className.

Cytat
I chcę zrobić coś takiego że gdy klikne na Usun, wyswietlilo mi komunikat, w ktorym bylby ID tego wpisu, np czy na pewno chcesz usunac wpis o id x ?
Chodzi o to ze nie wiem, jak przypisac zmienna w petli php, probowalem zwyczajnie przypisac zmienna js do php ale przypisalo tylko ostatnie ID,

To może dopisz po prostu do hrefa...?

Tak btw, na Twoim miejscu zacząłbym już korzystać z jakichś frameworków JS.
Solimo
  1. echo '<a href="#" id="link" onClick="jakasfunkcja('.$a['id'].')">Usun</a>';


Tak nie działa?
MateuszS
Cytat(Solimo @ 22.08.2009, 22:45:37 ) *
[PHP] pobierz, plaintext
  1. echo '<a href="#" id="link" onClick="jakasfunkcja('.$a['id'].')">Usun</a>';
[PHP] pobierz, plaintext

Tak nie działa?



probowalem tak tez, dalem function jakasfunkcja(id) {
//tresc funkcji
}
nie dzialalo

Erix, uczylem sie Jquery ale to wcale nie jest latwiejsze niz samo JS dla mnie sad.gif

any ideas?
phpion
Tak powinno zadziałać:
  1. while($a = mysql_fetch_assoc($b)) {
  2. echo $a['id'];
  3. echo '<a href="#" id="link" onClick="return confirm(\'Czy na pewno chcesz usunąć '.$a['id'].'?\');">Usun</a>';
  4. }

A odnośnie jQuery to może i trudniej na początku ruszyć ale wierz mi - warto. Poza tym do swoich umiejętności będziesz mógł dopisać znajomość jQuery czyli biblioteki, która jest obecnie bardzo popularna (o ile nie najpopularniejsza dla JS).
MateuszS
Cytat(phpion @ 22.08.2009, 22:57:42 ) *
Tak powinno zadziałać:
[PHP] pobierz, plaintext
  1. while($a = mysql_fetch_assoc($b)) {
  2. echo $a['id'];
  3. echo '<a href="#" id="link" onClick="return confirm(\'Czy na pewno chcesz usunąć '.$a['id'].'?\');">Usun</a>';
  4. }
[PHP] pobierz, plaintext
A odnośnie jQuery to może i trudniej na początku ruszyć ale wierz mi - warto. Poza tym do swoich umiejętności będziesz mógł dopisać znajomość jQuery czyli biblioteki, która jest obecnie bardzo popularna (o ile nie najpopularniejsza dla JS).


przerobilem dla swoich potrzeb

  1. <a href="#" id="link" onClick="return confirm(\'Czy na pewno chcesz usunąć <? echo $assoc['ID']; ?> ?\')">Usun</a>

ale nie dziala ;]

Pobawie sie ponownie jQuery bo od ostatniego przeczytanego tuta troche minelo moze tym razem cos zrozumiem poza show('slow') ;D

Prosze o kolejne sugestie, pozdrawiam
thek
A nie prościej zrobić tak?
  1. echo '<a href="/usun.php?id='.$a['id'].'" onClick="return confirm(\'Czy na pewno chcesz usunąć ten rekord?\nZmiany będą nieodwracalne.\')">Usuń</a>'

Omijasz przekazywanie zmiennych. W razie gdy ktoś potwierdzi, wykona się akcja usun dla rekordu o id odpowiednim. Jeśli nie potwierdzi to nie stanie się nic. Bo co Ci da JS w takim wypadku skoro zapewne modyfikujesz zmienne w bazie na serwerze, a JS działa tylko na kliencie? Musiałbyś i tak wywołać jakoś usuwanie z bazy.

Ale jeśli zmienna będąca kontenerem dla rekordu ma prawidłową nazwę to powinno zadziałać bezproblemowo:
  1. echo '<a href="/usun.php?id='.$a['id'].'" onClick="return confirm(\'Czy na pewno chcesz usunąć rekord '.$a['id'].'?\nZmiany będą nieodwracalne.\')">Usuń</a>'
MateuszS
Ok dzieki Thek, a cos z tymi classami da sie zrobic? Szukalem pod ClassName, ale efekty mizerne, skrypt mi nie dziala wtedy,
thek
Nie wiem o jaki temat chodzi, więc nie mam jak sprawdzić założeń i tego co potrzebujesz. Zgaduję, że chcesz wyszukiwać elementy po nazwie klasy, bo JS ma wyszukiwanie tylko po Id oraz Tag. Musiałbyś napisać wtedy własną funkcję to robiącą, bo w chwili obecnej nie ma takiej funkcji wbudowanej w JS. Polegało by to na przejrzeniu każdego elementu w strukturze DOM dokumentu i wyszukaniu w zmiennej ClassName odpowiedniego ciągu znaków. Tylko pamiętaj, że tam może być więcej niż nazwa jednej klasy, więc porównanie ścisłe ( element['ClassName'] = 'nazwa_klasy') odpada i musisz wyszukać stringa w stringu. Ale to tylko moje zgadywanie bo nie wiem o jaki temat chodzi smile.gif
MateuszS
dokladnie o ten temat. Widzialem setki podobnych funkcji jednak zadna nie zadzialala, tak jak ma dzialac. Nie rozumiem czemu JS nie ma czegos w stylu getelementbyclass przeciez to jest tak samo wazne jak byID a nawet bardziej przydatne.
thek
Teoretycznie istnieje funkcja getElementsByClassName ale działa ona chyba w Firefoxie tylko i jedynie od wersji 3. Jeśli jednak poszukasz w google takiej właśnie nazwy funkcji to powinno Ci sypnąć, podobnie jak mi, gotowymi rozwiązaniami dla JS stworzonymi przez innych. Kwestia tylko jeszcze sprawdzenia, która działa tak jak sobie życzysz.
MateuszS
Jak juz napisalem, widzialem wiele takich funkcji niestety zadna z nich nie zadzialala a na pewno dobrze je aplikowalem do swojej strony... moze ktos z was ma juz jakas wyprobowana dzialajaca
erix
Cytat
ale działa ona chyba w Firefoxie tylko i jedynie od wersji 3

Wszystkie nowoczesne obsługują - Fx 3, Opera 9.6, 10, Chrome, chyba IE7 też.

Cytat
Jak juz napisalem, widzialem wiele takich funkcji niestety zadna z nich nie zadzialala a na pewno dobrze je aplikowalem do swojej strony...

Pokaż przykładowe wywołanie.
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.