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:

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;
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'");
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..

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0