Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP][AJAX] Problem ze zwróceniem wartości
Forum PHP.pl > Forum > Przedszkole
Giekuss
Witam,

Przerabiam pewien system newsletter na własne potrzeby i spotkałem się z problemem, a miaonowicie:

1. Chcę, aby dynamicznie było można zmieniać wartość rekordu w bazie danych tzn.
- klikam sobie w liście przycisk "T" i automatycznie zmienia mi jego wartość na "N", gdy będzie "N" to zmieni na "T"
- w skrypcie jaki przerabiam była właśnie taka możliwość (wykorzystałem ją do statusów: Nie aktywny - F, Aktywny - A, Rezygnacja - R)

- wszystko działa podczas subskrybcji dodawana jest wartość do bazy danych (wartość domyślna - T), jednak gdy przerabiam skrypt to nie chce mnie wypuścić do zmieniania tej wartości

Pozwolę sobie dodać kawałki kodu za to odpowiedzialne i to co sam napisałem, a nie działa sad.gif

  1. if($todo=='change_status'){
  2.  
  3. if($status=='F'){$status='A';}
  4. else if($status=='A'){$status='R';}
  5. else if($status=='R'){$status='F';}
  6.  
  7. $sql=$dbo->prepare("update nl_email set status='$status' where email_id=$email_id");
  8.  
  9. if($sql->execute()){
  10. $todo_return='status_updated';
  11. $db_status='success';
  12. $message='Status Updated';
  13. }
  14. else{
  15. $message=$sql->errorInfo();}
  16. }
  17.  
  18. else if($todo=='change_status1'){
  19.  
  20. if($status1=='T'){$status1='N'}
  21. else{$status1='T'}
  22.  
  23. $sql1=$dbo->prepare("update nl_email set status1='$status1' where email_id=$email_id");
  24.  
  25. if($sql1->execute()){
  26. $todo_return='status_updated1';
  27. $db_status='success';
  28. $message='Status Updated';
  29. }
  30. else{
  31. $message=$sql1->errorInfo();}
  32.  
  33. }


Powyższy kod nie działa - dla zmiany statusów (F/A/R), ale jeśli usunę else if to wtedy zmiana statusów będzie działała. - próbowałem na różne sposoby to rozwikłać i nie dawało rady - jak próbowałem wypluć alertem w .js wartość zmiennej $status1 - było napisane "undefined" -> próbowałem zaś ją na sztywno osadzić w powyższym kodzie, nadal wywalało komunikat "undefined"

  1. if(myObject.data.todo_return =='status_updated')
  2. {document.getElementById("msg").style.background='#ffff00';
  3. var status=myObject.data.status;
  4. document.getElementById("msg").innerHTML=myObject.data.message;
  5. var str="<a href=# onClick=ajaxFunction(" + email_id +",'change_status','" + status + "')>" + status + "</a>";
  6.  
  7. document.getElementById(email_id).innerHTML=str;
  8. }
  9. else{document.getElementById("msg").style.display='none';}


  1. if(myObject.data.todo_return =='status_updated1')
  2. {document.getElementById("msg").style.background='#ffff00';
  3. var status1=myObject.data.status1;
  4. document.getElementById("msg").innerHTML=myObject.data.message;
  5. var str="<a href=# onClick=ajaxFunction(" + email_id +",'change_status1','" + status1 + "')>" + status1 + "</a>";
  6.  
  7. document.getElementById(email_id).innerHTML=str;
  8. }
  9. else{document.getElementById("msg").style.display='none';}


Macie jakiś pomysł?
CuteOne
  1. $key = 'A';
  2.  
  3. $corellations = array(
  4. 'F' => 'A',
  5. 'A' => 'R',
  6. 'R' => 'A'
  7. );
  8.  
  9. if (!array_key_exists($key, $corellations )) {
  10. throw new Exception('');
  11. }
  12.  
  13. $status = $corellations[$key];
  14.  
  15. $sql=$dbo->prepare("update nl_email set status='$status' where email_id=$email_id");
  16.  
  17. (...)
Giekuss
Tylko, że sama zmiana F->A, A->R, R->F działa, gdy dodaję status_updated1 to mi przestają działać te 2 skrypty do zmiany sad.gif
Randallmaster
Próbowałeś bez użycia ajaxa zapisać? ewentualnie wyświetlić zwrotkę w ajaxie?
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.