Kezdőoldal » Számítástechnika » Weblapkészítés » Miért csinálja ezt a mysql?

Miért csinálja ezt a mysql?

Figyelt kérdés

Az a helyzet, hogy van egy ilyenem:

<script>

$(document).ready(function() {

$("#price").on('keyup', function() {

var n = parseInt($(this).val().replace(/\D/g,''),10);

$(this).val(n.toLocaleString());

var res = n.replace(/ /g,"_");

console.log(res);

});

});

</script>


Ezzel azt csinálom, hogy csoportosítom a számokat egy bemeneten.

Van mellette egy ilyenem:


if (!empty($_POST["price"])) {

$price = $_POST["price"];

$indicator += 1;

$price = str_replace(" ", "", $price);

$price = intval($price);

}


Ezzel meg azt csinálom, hogy amikor beteszem ezeket a számokat adatbázisba, akkor újra int és ne string formátumúak legyenek.

Ennek ellenére, hogyha beírom, hogy:


18 000 000


Akkor ennyi kerül be belőle az sql táblába, hogy: 18


A php erre :


$price = "18 000 000";

$price = str_replace(" ", "", $price);

echo $price;

if (!filter_var($price, FILTER_VALIDATE_INT) === false) {

echo("Variable is an integer");

}


Azt írja, hogy "Variable is an integer".


Akkor mér? Valami ötlet?


Köszi a választ!


Magyarul tehát az első space után leszedi a többi számjegyet, és úgy kerül be az adatbázisba, amikor az adatbázisba elvileg már a string replace-lt, és intvalolt cucc kerül be.

Akkor mér?


2016. dec. 15. 19:41
 1/9 anonim ***** válasza:
Hát ez így eléggé átláthatatlan, hogy működés közben nem látjuk. De milyen az adatbázis szerkezete? A mezőnek nincs 2 karakter határ beállítva?
2016. dec. 15. 20:04
Hasznos számodra ez a válasz?
 2/9 A kérdező kommentje:
Nincsen karakterhatár beállítva a mezőnek. Csak akkor szedi le a többi részt, hogyha a jquery kód megy, és működik a csoportosítás. Egyébként nem.
2016. dec. 15. 20:07
 3/9 anonim ***** válasza:
Az sql insert nem látszik, pedig az is fontos lenne.
2016. dec. 15. 20:13
Hasznos számodra ez a válasz?
 4/9 A kérdező kommentje:

$update_ad = "UPDATE advertise SET username = '".$_SESSION["username"]."', ad_title = '".$title."',

ad_price = '".$price."', ad_text = '".$adtext."', cathegory = '".$cathegory."', phone = '".$phone."', city = '".$city."',

subcathegory = '".$subcathegory."', active = '".$_POST["active"]."' where id = '".$id_update."' and ad_title = '".$adtitle_update."'";

$conn->query($update_ad);

2016. dec. 15. 20:14
 5/9 anonim ***** válasza:

A js-ben a toLocaleString() nem a 32-es szóközt rakja a szövegbe, hanem a 160-as kódút, ezért nem veszi ki a str_replace, így az intval csak az elejét alakítja számmá. Vagyis az sql is már csak ezt a csonka számot kapja meg.

Megoldás:

$price = str_replace( chr(160), "", $price );

2016. dec. 15. 20:26
Hasznos számodra ez a válasz?
 6/9 A kérdező kommentje:
Nem jó így sem.
2016. dec. 15. 20:34
 7/9 anonim ***** válasza:

Ja, hogy utf-8, akkor így:

$price = str_replace("\xc2\xa0", "", $price);

2016. dec. 15. 20:50
Hasznos számodra ez a válasz?
 8/9 A kérdező kommentje:
Igazán köszönöm úgy tűnik, hogy ez működik! Megy a zöld pacsi, ahogy mondani szokás.
2016. dec. 15. 20:55
 9/9 anonim válasza:

Szia! A mysql inject ellen védd le a lekérdezéseidet :))

használj funkciókat a bevitt adatok szigorítására.

2017. jan. 4. 21:49
Hasznos számodra ez a válasz?

Kapcsolódó kérdések:




Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!