Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [SQL]Zapytanie nie działa
kujol
post
Post #1





Grupa: Zarejestrowani
Postów: 324
Pomógł: 27
Dołączył: 21.07.2013

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


Witam, przy próbie dodania rekordu do tabeli mysql wypełnia wszystkie pola zerem.

  1. mysql_query("INSERT INTO `kursy_walut`(`id`, `euro_kupno`, `euro_sprzedarz`, `usd_kupno`, `usd_sprzedarz`, `chf_kupno`, `chf_sprzedarz`, `gbp_kupno`, `gbp_sprzedarz`)
  2. VALUES ('', '".zamien($euroKupno[0])."', '".zamien($euroSprzdarz[0])."', '".zamien($usdKupno[0])."', '".zamien($usdSprzdarz[0])."', '".zamien($chfKupno[0])."', '".zamien($chfSprzdarz[0])."', '".zamien($gbpKupno[0])."', '".zamien($gbpSprzdarz[0])."')");


Gdy zrobię tak:

  1. mysql_query("INSERT INTO `kursy_walut`(`id`, `euro_kupno`, `euro_sprzedarz`, `usd_kupno`, `usd_sprzedarz`, `chf_kupno`, `chf_sprzedarz`, `gbp_kupno`, `gbp_sprzedarz`)
  2. VALUES ('', '".zamien('3,7362')."', '".zamien('3,7362')."', '".zamien('3,7362')."', '".zamien('3,7362')."', '".zamien('3,7362')."', '".zamien('3,7362')."', '".zamien('3,7362')."', '".zamien('3,7362')."')");


To już działa normalnie, wszystkie tablice zwracają prawidłowe wyniki. Jak temu zaradzić?

Ten post edytował kujol 21.03.2014, 14:22:28


--------------------
;)
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 16)
YourFrog
post
Post #2





Grupa: Zarejestrowani
Postów: 124
Pomógł: 22
Dołączył: 10.01.2014

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


Jeżeli możesz to pokaż ciało funkcji zamien. Po za tym ja biedny całe życie w php myślałem żel liczby z przecinkami pisze się za pomocą kropki ;o
Go to the top of the page
+Quote Post
nospor
post
Post #3





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




Tyle postow i jeszcz z czyms takim leciec.....

Skoro zwraca ci zero, znaczy ze tutaj:
$euroSprzdarz[0]
sa zle dane.
Sprawdz


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

"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
kujol
post
Post #4





Grupa: Zarejestrowani
Postów: 324
Pomógł: 27
Dołączył: 21.07.2013

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


Dane są dobre, echo pokazuje np. 5,0535 (z przecinkiem), a funkcja zamien() zamienia ten przecinek na kropkę
  1. echo $chfKupno[0] //5,0535
  2.  
  3. echo zamien($chfKupno[0]) //5.0535


--------------------
;)
Go to the top of the page
+Quote Post
nospor
post
Post #5





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




pewnie są jakies spacje w tej liczbie.
sprawdz przy pomocy var_dump() a bedziesz wiedzial dokladnie.


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

"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
markuz
post
Post #6





Grupa: Zarejestrowani
Postów: 1 240
Pomógł: 278
Dołączył: 11.03.2008

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


Może:
  1. mysql_query("INSERT INTO ... VALUES ('', ".(float)zamien($chfKupno[0])." , ... )");


Ten post edytował markuz 21.03.2014, 14:38:11


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





Grupa: Zarejestrowani
Postów: 324
Pomógł: 27
Dołączył: 21.07.2013

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


Spacji nie ma, var_dump zwraca:

string(45) "4.1810"
Pole w bazie jest na float. Markuz niestety nadal to nie pomaga.
Dodam, że ta tablica jest z preg_match()

Ten post edytował kujol 21.03.2014, 14:42:23


--------------------
;)
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




facepalmxd.gif
Masz wyraznie napisane ze masz 45 znakow a widac tylko 4.1810. uwasz ze to jest 45 znakow?? Reszta jest niewidoczna. Uzyj trim()


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

"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
kujol
post
Post #9





Grupa: Zarejestrowani
Postów: 324
Pomógł: 27
Dołączył: 21.07.2013

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


Dodaję ten trim() i nic nie usuwa.

  1. var_dump(zamien($euroKupno[0])); //string(45) "4.1810"
  2. $tek = trim(zamien($euroKupno[0]));
  3. var_dump($tek); //string(45) "4.1810"


--------------------
;)
Go to the top of the page
+Quote Post
markuz
post
Post #10





Grupa: Zarejestrowani
Postów: 1 240
Pomógł: 278
Dołączył: 11.03.2008

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


  1. var_dump((float)trim(zamien($euroKupno[0])));

A teraz co zwróci?

Ten post edytował markuz 21.03.2014, 14:58:02


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





Grupa: Zarejestrowani
Postów: 186
Pomógł: 18
Dołączył: 2.09.2010

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


TRIM po stronie bazy danych w zapytaniu SQL.
Go to the top of the page
+Quote Post
kujol
post
Post #12





Grupa: Zarejestrowani
Postów: 324
Pomógł: 27
Dołączył: 21.07.2013

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


Cytat(markuz @ 21.03.2014, 14:57:39 ) *
  1. var_dump((float)trim(zamien($euroKupno[0])));

A teraz co zwróci?


  1. var_dump(zamien($euroKupno[0])); //string(45) "4.1810"
  2. $tek = (float)trim(zamien($euroKupno[0]));
  3. var_dump($tek); float(0)


W zapytaniu sql nic to nie zmienia.

Ten post edytował kujol 21.03.2014, 15:02:56


--------------------
;)
Go to the top of the page
+Quote Post
nospor
post
Post #13





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




To jakies dziwne masz te biales znaki....

to w funkcji zamien() dopisz kod, ktory zamieniasz wszystko co nie jest cyfrą i przecinkiem na "nic" 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
kujol
post
Post #14





Grupa: Zarejestrowani
Postów: 324
Pomógł: 27
Dołączył: 21.07.2013

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


Coś takiego?

  1. function zamien($kurs){
  2. $kurs = str_replace(',', '.', $kurs);
  3. $kurs = str_replace(' ', '', $kurs);
  4. $kurs = trim($kurs);
  5. return $kurs;
  6. }


Ten post edytował kujol 21.03.2014, 15:06:01


--------------------
;)
Go to the top of the page
+Quote Post
nospor
post
Post #15





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




Nie, wyraznie napisalem "wszystko co nie jest...."
Musisz uzyc preg_replace


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

"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
markuz
post
Post #16





Grupa: Zarejestrowani
Postów: 1 240
Pomógł: 278
Dołączył: 11.03.2008

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


Pewnie pobierasz kursy z innej strony - zrób jeszcze raz var_dump() i wejdź w źródło strony i dopiero wtedy skopiuj zawartość zmiennej - wtedy zobaczysz jakie znaki są niechciane i być może znajdziesz prosty sposób na rozwiązanie tego problemu smile.gif


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





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




Hehe, pewnie jest tam   wink.gif

Ale wowczas w var_dump bylaby widoczna duuuuuza przerwa, a nie jest.


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

"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

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: 19.08.2025 - 11:32