Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [JavaScript][PHP] php w skrypcie js
Forum PHP.pl > Forum > Przedszkole
Terrorizer
Chciałbym aby funkcja javascript odpalała mi skrypt php, podczas gdy warunek if jest prawdziwy.
Sprawdzałem różne metody z internetu, natomiast nie bardzo chcą one działać, albo zwyczajnie ich nie rozumiem
Mógłbym poprosić o podpowiedź?
  1. <script type="text/javascript">
  2. function clicked(photoid){
  3.  
  4. var divcolor = document.getElementById(photoid.toString()).style.backgroundColor;
  5. var red = <?php mysql_query('UPDATE photos SET color = "red" where id = "'.$photoid.'" ');?>;
  6. var white = <?php mysql_query('UPDATE photos SET color = "white" where id = "'.$photoid.'" ');?>;
  7.  
  8. if (divcolor == "white"){
  9. document.getElementById(photoid.toString()).style.backgroundColor = 'red';
  10. document.write (red);
  11. }
  12. else document.getElementById(photoid.toString()).style.backgroundColor = 'white';
  13. document.write (white);
  14. }
  15. </script>
markuz
Poczytaj o AJAX np. tutaj:
http://kursjs.pl/kurs/jquery/jquery_ajax.html
Terrorizer
ahh ten ajax biggrin.gif
No czytam o nim, ale coś cały ten javascript do mnie nie przemawia.
Usiłuję robić coś na logikę, ale wychodzi jak widać tongue.gif
Czy ja nie mogę zwyczajnie sprawić aby js wyświetlił ten skrypt php jako zwykły tekst, co zwyczajnie go uruchomi?
markuz
JavaScript = coś dynamicznego
PHP = coś "statycznego"

W twoim przypadku kliknąć w zdjęcie możesz kilka razy i obsłuży to JavaScript bo jest dynamiczny.
Natomiast PHP (już pomijając błędy w składni w twoim kodzie) wykona się tylko 1 raz podczas wykonania zapytania na serwer.

Jeżeli chcesz wykonywać PHP kilka razy "dynamicznie" wtedy musisz użyć AJAX który dynamicznie od strony JavaScript wykonuje "statyczny" kod PHP poprzez zapytanie.

Przeczytaj zdanie po zdaniu kurs który Ci wysłałem wyżej. Najlepiej od początku. Nie ma sensu zagłębiać się w AJAX jak nie rozumie się podstaw JavaScript smile.gif
Terrorizer
A czy w takiej formie jest ok??
Wciąż to nie działa, nie wiem dlaczego :/

  1. function clicked(photoid){
  2.  
  3. var divcolor = document.getElementById(photoid.toString()).style.backgroundColor;
  4.  
  5. if (divcolor == "white"){
  6. document.getElementById(photoid.toString()).style.backgroundColor = 'red';
  7. var xmlhttp=new window.XMLHttpRequest();
  8. xmlhttp.open("GET", "redcolor.php?photoid=" + photoid, true);
  9. xmlhttp.send();
  10. }
  11. else document.getElementById(photoid.toString()).style.backgroundColor = 'white';
  12. var xmlhttp=new window.XMLHttpRequest();
  13. xmlhttp.open("GET", "whitecolor.php?photoid=" + photoid, true);
  14. xmlhttp.send();
  15. }

plik redcolor.php:
  1. <?php
  2. ini_set('display_errors','1');
  3. mysql_query('UPDATE photos SET color = "red" where id = "'.$photoid.'" ');
  4. ?>
markuz
Przepisz to na jQuery - jest znacznie łatwiej.
Terrorizer
Znacznie łatwiej jeśli zna się jquery biggrin.gif
No nic, to chyba kolejna nocka zarwana będzie tongue.gif
Turson
Boże, przecież ajax w jquery to 5 linijek. Masz wszystko w tamtym linku
Terrorizer
Nie macie pojęcia ile zajmuje napisanie 5 linijek działającego kodu osobie która nie ma ścisłego umysłu i uczy się wszystkiego bazując na swojej durnej logice biggrin.gif
Tak czy inaczej dzięki za wskazówki, wiem już nad czym pracować i będę z tym walczył.

P.S. Wygląda na to ,że zmienna istnieje photoid istnieje wewnątrz funkcji, jednak nie chce się wysłać do pliku php
Turson
http://turson.pl/blog/skrypt-ocen-oparty-na-ajaxie-jquery/
Może to ci pomoże wyjaśnić jak przesłać dane z js do php i coś zrobić z tym.
Terrorizer
Wygląda to tak, jakby ajax miał problemy. Raz wpis w bazie się updatuje, a raz nie. Dziwna sprawa
lukasz_os
Odpal firebuga, lub inne narzędzie dla developerów i zobacz co ci zwraca konsola... Wtedy bedziesz wiedział co jest nie tak
Terrorizer
Całość błędu wynikała z braku nawiasu przy else. Ot co, cały problem nad którym siedziałem ponad 7 godzin haha.gif
Dzięki za pomoc wszystkim tongue.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.