Autor Zpráva
tomas2245
Profil
Zdravím, ako by sa dalo spraviť toto, že keď mám input:

<input type="text"> a doňho napíšem napr. číslo 1 tak do databáze by sa zapísalo miesto tej 1 = 100?
2 = 200
3 = 300
4 = 400
...

tu mám kód na pridávanie do databáze:

1function pridaj($pds_pc, $pds_pocet, &$pripoj2){
2 
3    $pds_pc = mysqli_real_escape_string($pripoj,$pds_pc);
4    $pds_test = mysqli_query($pripoj2,"SELECT * FROM statistika WHERE pc='$pds_pc'");
5    if(mysqli_num_rows($pds_test)<1){mysqli_query($pripoj,"INSERT INTO statistika (pc,pocet) VALUES ('$pds_pc','0')");}
6    $pds_c = mysqli_query($pripoj2,"UPDATE statistika SET pocet = pocet+$pds_pocet WHERE pc = '$pds_pc'");
7    return $pds_c;
8 
9}
function pridaj($pds_pc$pds_pocet, &$pripoj2){
 
    $pds_pc mysqli_real_escape_string($pripoj,$pds_pc);
    $pds_test mysqli_query($pripoj2,"SELECT * FROM statistika WHERE pc='$pds_pc'");
    if(mysqli_num_rows($pds_test)<1){mysqli_query($pripoj,"INSERT INTO statistika (pc,pocet) VALUES ('$pds_pc','0')");}
    $pds_c mysqli_query($pripoj2,"UPDATE statistika SET pocet = pocet+$pds_pocet WHERE pc '$pds_pc'");
    return $pds_c;
 
}
Joker
Profil
Před uložením do databáze vynásobíte hodnotu 100.
tomas2245
Profil
Joker:
ďakujem za odpoveď, vedeli by ste mi ešte povedať, že ako to do toho môjho kódu zakombinovať?
Rfilip
Profil
Stačí drobná úprava. Za 3 řádek vlož:
$pds_pocet =(int)$pds_pocet * 100;
$pds_pocet =(int)$pds_pocet 100;
Jen malý bezpečnostní postřeh: i čísla se musí při vkládání do databáze ošetřovat a to přetypováním na int (což je to (int) v kodu výše), které převádí řetězec na číslo,nebo na 0 pokud řetězec není číslo.

Tvůj kod je náchylný na útok SQL Injection přes proměnnou $pds_pocet. Doporučuji zkontrolovat všechny vkládání do databáze, jestli všechny parametry máš ošetřené, řetězce funkcí mysqli_real_escape_string a čísla přetypováním na číslo.
tomas2245
Profil
Rfilip:

vďaka, funguje to :) ešte otázočka, takže aby ten kód nebol náchylný na SQL Injection mal by som upraviť 6 riadok na toto? :
  $pds_c = mysqli_query($pripoj2,"UPDATE statistika SET pocet = pocet+(int)$pds_pocet WHERE pc = '$pds_pc'");
  $pds_c mysqli_query($pripoj2,"UPDATE statistika SET pocet = pocet+(int)$pds_pocet WHERE pc '$pds_pc'");
Rfilip
Profil
v týhle metodě to už ošetřený máš tím přetypováním v násobení.
v ostatních metodách si dávej $pds_pocet =(int)$pds_pocet; o řádek nad/pod tím mysqli_real_escape_string ať máš ošetření proměnných hezky přehledně na jednom místě
tomas2245
Profil
Rfilip:
jasne, už chápem :) ešte raz diky..
Toto vlákno je staré, již dlouho do něj nikdo nepřispíval.

Informace a odkazy zde uváděné už nemusejí být aktuální. Nechcete-li řešit zde uvedenou konkrétní otázku, založte si vlastní vlákno, nepište do tohoto. Vložíte-li sem nyní příspěvek, upoutáte pozornost mnoha lidí a někteří z nich si jen kvůli vám přečtou i všechny předcházející příspěvky. Předpokládáte-li, že váš text skutečně bude hodnotný, stiskněte následující tlačítko:


Běda vám, jestli to bude blábol.

0