Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]update po ajaxie - problem z kodem., proszę o podpowiedź co robię źle
casperii
post
Post #1





Grupa: Zarejestrowani
Postów: 681
Pomógł: 28
Dołączył: 14.08.2014

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


Witam, panowie, próbuje poradzić sobie z problemem update poprzez AJAX.
Poniżej kod:

  1. require_once("db.php");
  2. $db = new mysqli($dbhost, $dbname, $dbpass, $dbuname);
  3. $db -> query("SET NAMES 'utf8'");
  4.  
  5. if(!$db) {
  6.  
  7. echo 'Nie można się połączyć z bazą danych.';
  8. }else{
  9. $ex = $db->query("SELECT * FROM `product` WHERE `id`=73");
  10.  
  11. if(mysql_num_rows($ex) == 1){
  12. $status = 'success';
  13. $message = 'super udało się';
  14. }else{
  15. $status = "error";
  16. $message = "Brak ID.";
  17. }
  18.  
  19. $data = array(
  20. 'status' => $status,
  21. 'message' => $message
  22. );
  23.  
  24. echo json_encode($data);
  25. }


I teraz tak jak wpiszę na sztywno numer ID to cały czas mi nie znajduje i wyświetla json komunikat BRAK ID. Co jest panowie?
Go to the top of the page
+Quote Post
Comandeer
post
Post #2





Grupa: Zarejestrowani
Postów: 1 268
Pomógł: 254
Dołączył: 11.06.2009
Skąd: Świętochłowice

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


Zapytanie robisz przez mysqli, a liczbę wyników chcesz pobrać przez mysql


--------------------
Go to the top of the page
+Quote Post
casperii
post
Post #3





Grupa: Zarejestrowani
Postów: 681
Pomógł: 28
Dołączył: 14.08.2014

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


Coś chyba robię źlę:

  1. $ex = $db->query("SELECT * FROM `product` WHERE `id`=".$id."");
  2. //if($ex->num_rows == 0){
  3. if(mysqli_num_rows($ex) == 0){
  4. $insert = $db->query("INSERT INTO `product` (
  5. `name`
  6. ) VALUES (
  7. '".$name."')") or die('zapytanie :'.$sql.' blad:'.mysql_error());
  8. if($insert){
  9. $status = "success";
  10. $message = "Dane zostały pomyślnie zapisane.";
  11. }else{
  12. $status = "error";
  13. $message = "Ooops, Mamy problem!";
  14. }
  15.  
  16. }else{
  17. $status = "error";
  18. $message = "Już istnieje.";
  19. }



Teraz mi dodaje wszystko do bazy... nawet jak ID istnieje w bazie. co robię źle ?

Ma ktoś jakieś pomysły co robię źle ?

Ten post edytował casperii 12.07.2015, 01:51:47
Go to the top of the page
+Quote Post
nospor
post
Post #4





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Skoro do wykonania zapytania uzywasz obiektowego mysqli, to i w calej reszcie masz uzywac obiektowego... nie mieszaj....

$ex->num_rows

Poza tym sprawdzales czy $id jest poprawne? Czy zapytanie sie wykonalo poprawnie? Bo z kody wynika ze nie.... A juz nie raz ci podsylalem ten link
Temat: Jak poprawnie zada pytanie


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
casperii
post
Post #5





Grupa: Zarejestrowani
Postów: 681
Pomógł: 28
Dołączył: 14.08.2014

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


@nospor , gdybyś nie zauważył w moim powyższym kodzie robiłem i:

  1. if($ex->num_rows == 0){


jak i:

  1. if(mysqli_num_rows($ex) == 0){


Oba z mizernym skutkiem. ID istnieje i jest dobrze odebrane.

  1. $message = "Już istnieje $id. ";
Go to the top of the page
+Quote Post
nospor
post
Post #6





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




$message = "Już istnieje $id. ";
ten komunikat nie pojawia sie ani razu, tak przynajmniej twierdzisz, wiec nie wiem jakic cudem sprawdziles to ID...

w podanym przeze mnie linku masz wszystko opisane. Chcesz pomocy, to sie do niego zastosuj. Nie, to dalej walcz z durnym i banalnym problemem.


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
casperii
post
Post #7





Grupa: Zarejestrowani
Postów: 681
Pomógł: 28
Dołączył: 14.08.2014

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


@nospor dalej nie rozumiemy sięsmile.gif Opiszę Ci może to szczegółowo. Mam 2 formy wysyłane jsonem. Pierwszy dodaje do bazy, który aktualizuje.

Poniżej kod:

  1. <?php
  2. require_once("db.php");
  3. $db = new mysqli($dbhost, $dbname, $dbpass, $dbuname);
  4. $db -> query("SET NAMES 'utf8'");
  5.  
  6. if(!$db) {
  7.  
  8. echo 'Nie można się połączyć z bazą danych.';
  9. }
  10. else{
  11. $form1 = $db->real_escape_string($_POST['form1']);
  12. $form2 = $db->real_escape_string($_POST['form2']);
  13.  
  14.  
  15. if(!empty($from1)){
  16. $name_product = $db->real_escape_string($_POST['name_product']);
  17.  
  18. if(empty($product)){
  19. $status = "error";
  20. $message = "Nie wpisano nazwy produktu.";
  21. }else{
  22. $ex = $db->query("SELECT * FROM `product` WHERE `product`=".$name_product."");
  23. if($ex->num_rows == 0){
  24. $insertSignup = $db->query("INSERT INTO `product` (
  25. `name_firm`
  26. ) VALUES (
  27. '".$name_product."')") or die('zapytanie :'.$sql.' blad:'.mysql_error());
  28. if($insert){
  29. $status = "success";
  30. $message = zapisano.";
  31. }else{
  32. $status = "error";
  33. $message = "Ooops, Mamy problem!";
  34. }
  35.  
  36. }else{
  37. $status = "error";
  38. $message = "Już istnieje taki produkt.";
  39. }
  40. }
  41. }
  42.  
  43. elseif(!empty($form2)){
  44. $id = $db->real_escape_string($_POST['id']);
  45. $name_product = $db->real_escape_string($_POST['name_product']);
  46.  
  47. if(empty($product)){
  48. $status = "error";
  49. $message = "Nie wpisano nazwy produktu.";
  50. }else{
  51. $ex = $db->query("SELECT * FROM `product` WHERE `id`=".$id."");
  52. if($ex->num_rows == 1){
  53. $insert = $db->query("UPDATE `product` SET `product`='".$name_product."' WHERE `id`=".$id." LIMIT 1") or die('zapytanie :'.$sql.' blad:'.mysql_error());
  54. if($insert){
  55. $status = "success";
  56. $message = "zapisano.";
  57. }else{
  58. $status = "error";
  59. $message = "Ooops, Mamy problem!";
  60. }
  61.  
  62. }else{
  63. $status = "error";
  64. $message = "Brak ID chociaż go pokazuje $id.";
  65. }
  66. }
  67.  
  68. }
  69. $data = array(
  70. 'status' => $status,
  71. 'message' => $message
  72. );
  73.  
  74. echo json_encode($data);
  75. exit;
  76. }
  77. ?>


Dodać doda, ale nie aktualizuje, pluje się , że nie znany ID chociaż w message wyświetli prawidłowo jego ID.
Go to the top of the page
+Quote Post
nospor
post
Post #8





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Njapierw pokazujesz kod do dodawania, a potem z tekstem ze sie nie rozumiemy i wyjezdzasz z kodem do update....

Niewazne. Podany przeze mnie link jest przydatny niezaleznie czy robisz update czy insert. Po raz kolejny nad wyraz grzecznie Cię proszę, byś się do niego zastosował.


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
casperii
post
Post #9





Grupa: Zarejestrowani
Postów: 681
Pomógł: 28
Dołączył: 14.08.2014

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


@nospor, z cały szacunkiem do Twojej osoby, ale nie widzę powiązania mojego problemu z tym co jest w linku: Jak poprawnie zadać pytanie

Po pierwsze nie zmienię już tematu - jeżeli do tego nawiązujesz.
Po drugie podane wskazówki tyczą się do mysql , nie mysqli.

Jeżeli coś źle zrozumiałem to przepraszam.
Go to the top of the page
+Quote Post
nospor
post
Post #10





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Cytat
Po drugie podane wskazówki tyczą się do mysql , nie mysqli.

facepalmxd.gif
Bo to są ogolne wskazowki... jesli uzywasz czegos innego niz mysql to masz to przerobic na to co uzywasz. Odrobina myslenia jest tu naprawdę milę widziana... To po pierwsze.
Po drugie: zrobienie var_dump() jest niezalezne od mysql czy mysqli.


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
casperii
post
Post #11





Grupa: Zarejestrowani
Postów: 681
Pomógł: 28
Dołączył: 14.08.2014

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


@nospor ciężki Ty masz charakter. Nie rozumiem, twojego toku myślenia, czy nie umiesz mi pomóc w znalezieniu problemu, czy masz taki kaprys by mi w tym nie pomóc.
Nie wymagam od nikogo gotowca. Bo 99% jest zrobione. Oczekuje , że ktoś mnie na kieruję w tym mysqli (przeskoczyłem wczoraj z mysql) i podpowie co może być.

Dlaczego do bazy dodaje kolejne rekordy mimo, że taki produkt istnieje i dlaczego nie aktualizuje produktu mimo, że widzi ID.

W mysql powinno to wyglądać tak i działa na 100%:
  1. $ex = mysql_query("SELECT * FROM `product` WHERE `product`=".$name_product."");
  2. if(mysql_num_rows($ex) == 0){
  3. $insert = mysql_query("INSERT INTO `product` (`product`) VALUES ('".$name_product."')") or die('zapytanie :'.$sql.' blad:'.mysql_error());
  4. }else{
  5. //nie powiodło się
  6. }


tak w mysqli coś chrzani i dodaje duplikaty do bazy, tak jakby nie brał warunku if pod uwagę. Natomiast w update nie działa aktualizacja, wywala że nie znany ID:

  1. $ex = $db->query("SELECT * FROM `product` WHERE `product`=".$name_product."");
  2. if($ex->num_rows == 0){
  3. $insert = $db->query("INSERT INTO `product` (`product`) VALUES ('".$name_product."')") or die('zapytanie :'.$sql.' blad:'.mysql_error());
  4. }else{
  5. //nie powiodło się
  6. }


Ten post edytował casperii 12.07.2015, 16:57:04
Go to the top of the page
+Quote Post
nospor
post
Post #12





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Cytat
, czy nie umiesz mi pomóc w znalezieniu problemu, czy masz taki kaprys by mi w tym nie pomóc.
Ale to nie moja wina, ze nie chcesz sie zastosowac do podanych wskazowek. Nie zwalajaj wiec prosze tego na moj charakter tylko na swoje lenistwo.
Po to powstał temat do ktorego cie odeslalem, by poraz tysieczny nie powtarzac kazdemu z osobna "a teraz zrob to, a teraz zrob tamto". Wszystko to zostało zebrane w jednym temacie, Ale zawsze znajdzie sie taki ktos jak ty, ktory czeka az specjalnie dla niego poraz tysiac pierwszy ludzie powtorzą to specjalnie dla niego.

Cytat
W mysql powinno to wyglądać tak i działa na 100%:
Po kodzie co teraz wstawiles widac jak na dloni, ze to nie dziala, wiec nie pisz ze dziala na 100%. A blad bys zobaczyl jakbys łaskawie dostosował kod do wskazowek w podanym temacie.

ps: swoją drogą co post to podajesz co roz to inne kody.


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
com
post
Post #13





Grupa: Zarejestrowani
Postów: 3 034
Pomógł: 366
Dołączył: 24.05.2012

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


hint :
Wykonaj sobie to np w phpmyadmin i spr czy się wykona, bo na moje oko nie wink.gif
"SELECT * FROM `product` WHERE `product`=".$name_product.""

Poza tym var_dump o którym wspomina nospor itd wink.gif
Go to the top of the page
+Quote Post
nospor
post
Post #14





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




@com ale ty mu nie hintuj. On to wszystko pokolei ( i inne ciekawe rzeczy) ma napisane w temacie, do ktorego go odeslalem. No nie przyzwyczajajcie go, ze jak poplacze troche zamiast zrobic co ma zrobic, to dostanie odpowiedż...


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
com
post
Post #15





Grupa: Zarejestrowani
Postów: 3 034
Pomógł: 366
Dołączył: 24.05.2012

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


nospor wiem ale nie liczyłbym że raczy tam jednak zajrzeć, proponowałbym zmienić może trochę tytuł tematu bo część jak widzi że ma linka do tematu jak poprawnie zadać pytanie to tam chyba wgl nie zagląda, przynajmniej ja się już z tym spotkałem tu smile.gif
Go to the top of the page
+Quote Post
nospor
post
Post #16





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Sadzac po jego paru postach, jak to pomarudzil, ze pare rzeczy z tego tematu jest nie do wykonania, sądze, ze jednak tam zajrzał wink.gif Tu nie jest problemem nazwa tematu, tu problemem jest totalne lenistwo i podejscie w stylu "mi sie należy".


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
casperii
post
Post #17





Grupa: Zarejestrowani
Postów: 681
Pomógł: 28
Dołączył: 14.08.2014

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


Problem rozwiązany głupi i na pierwszy rzut oka nie zauważalny błąd:

  1. $ex = $db->query("SELECT * FROM `product` WHERE `product`=".$name_product."");


poprawnie:

  1. $ex = $db->query("SELECT * FROM `product` WHERE `product`='".$name_product."'");


pewnie łapał biały znak i przy dodawaniu widział już inny wyraz i dlatego dodawał, a przy aktualizowaniu nie widział wyrazu z białym znakiem (spacją).

Oczekiwałem raczej podpowiedzi,warunek jest dobry, zobacz w zapytanie lub coś w ten deseń.
Go to the top of the page
+Quote Post
com
post
Post #18





Grupa: Zarejestrowani
Postów: 3 034
Pomógł: 366
Dołączył: 24.05.2012

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


owszem ja wiem, że większość liczy na to że dostaną na tacy całe rozwiązanie, bo poco maja się męczyć jak można naskrobać temat na forum, ale jak sam napisał czy ma zmienić temat, dodałbym po prosty "jak poprawnie zadać pytanie oraz przygotować środowisko" wink.gif
Go to the top of the page
+Quote Post
nospor
post
Post #19





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Jaki bialy znak.... toz w tym konkretnym zapytaniu problemem był brak apostrofów... Teksty w zapytaniu bierze sie w apostrofy a bez nich baza rzucała ci bledem ale go nie widziales, bo nie raczyles go wyswietlic pomimo ze prosilem cie o to wielokrotnie.

@com done smile.gif


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
com
post
Post #20





Grupa: Zarejestrowani
Postów: 3 034
Pomógł: 366
Dołączył: 24.05.2012

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


o dzięki smile.gif casperii zajrzyj sobie do jakiegoś kursu mysql, bo troszkę brak Ci podstaw smile.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 Aktualny czas: 21.08.2025 - 17:40