Autor Zpráva
gardener
Profil
Zdravím chtěl bych si uložit data do databáze s převedením vkládaných znaků na malé (pro jednodušší vyhledávání)
ale narazil jsem na problém s převodem pomocí strtolower, vím že se operátory spojují tečkou ale jak to udělat, když je v MySQL příkazu po vklad čárka?
Napadlo mne to vložit do pole, to pak převést na malé a poté to vložit do DB ale nevím, zda by to bylo možné,
nebo jaké by bylo "nejelegantnější" řešení?

Děkuji za rady

Zde jé kod toho vkladu:
<?php
include("db_connect.php"); 
//Starting app with verify connect to database

$interpret = $_POST['interpret'];
$album = $_POST['album'];
$styl = $_POST['styl'];
$rok_vydani = $_POST['rok'];
$puvod = $_POST['puvod'];
$zaloha = $_POST['zaloha'];
$kde_naleznu = $_POST['umisteni'];

$zmenseni = strtolower($interpret.$album.$styl); //Tady jsem myslel, ze bych prevedl na male znaky (nefunkcní)

$sql = "INSERT INTO seznam VALUES('$id','$interpret','$album','$styl','$rok_vydani','$puvod','$za loha','$kde_naleznu')";

$vysledek_vlozeni = mysql_query($sql);
if (!$vysledek_vlozeni)
die('Nepodarilo se vlozit novy radek.');
?> 
Str4wberry
Profil
$sql = "INSERT INTO seznam VALUES('".strtolower($id)."', …)";

Nejelegantnější by bylo asi to pole — pro sestavení dotazu použít tohle. A implode u „VALUES“ obalit funkcí strtolower.
gardener
Profil
Takže by to bylo tak, že bych prvně nadefinoval sloupce a pak vkládané hodnoty?Tj. nějak takto?

<?php
$set = array();
$set["interpret"] = "'$_POST[interpret]'";
$set["album"] = "'$_POST[album]'";
$set["styl"] = "'$_POST[styl]'";
$set["rok"] = "'$_POST[rok]'";
$set["puvod"] = "'$_POST[puvod]'";
$set["zaloha"] = "'$_POST[zaloha]'";
$set["umisteni"] = "'$_POST[umisteni]'";

$sql =mysql_query("INSERT INTO seznam (" . implode(", ", array_keys($set)) . ") VALUES (" .strtolower. implode(", ", $set) . ")");
?>
Str4wberry
Profil
Skoro ano. Jen musíte to implode obalit funkcí strtolower. Tedy:
$sql =mysql_query("INSERT INTO seznam (" . implode(", ", array_keys($set)) . ") VALUES (" .strtolower(implode(", ", $set)) . ")");
gardener
Profil
Ach so:)Díky moc za radu, jdu to vyzkoušet...a ještě mě tak napadá, kdybych chtěl ten insert form vkládat proti zadání nějakým nežádoucích znaků (ne že by to zde u seznamu hrozilo ale tím že to bude se nic nezkazí) tj.pomocí HTMLspecialchars, tak to by se také použilo při vkládání společně s strtolower?
Str4wberry
Profil
Funkci htmlspecialchars můžete použít klidně až při výpisu (někdy je to dokonce nezbytné/lepší). Pokud ji chcete aplikovat již při INSERTU, stačí jí zase obalit ošetřovaný řetězec. Možná se také podívejte na něco o funkcích. A funkce, které chcete používat, si můžete vyhledat v PHP manuálu — a z příkladu se snažit pochopit, jak fungují.

Použití htmlspecialchars na $_POST['rok'] bude vypadat takto:
$set["rok"] = "'".htmlspecialchars($_POST['rok'])."'";
gardener
Profil
Ješte jsem si všimnul jedné věci,pokud použiji mysql_query před vložením do DB skript neprojde, pokud ho ovšem odstraním a přesunu ověření jako další příkaz celé to funguje..
Ještě by mě zajímalo, jeslti je chyba, pokud si nechávám inkrementovat id záznamu ale při vkládání ho do db nevkládám..dříve jsem to dělal tak, že jsem ho vždy vkládal, ale teď když se vkládá automaticky?
gardener
Profil
O.K děkuji ještě jednou za rady..

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

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