require_once('class.translation.php');
$cookie_name = 'lang2';
$country2 = 'country2';
if (isset($_COOKIE[$cookie_name]) AND ! empty($_COOKIE[$cookie_name])) {
$translate = new Translator($_COOKIE[$cookie_name]); // tady by se jeste melo overovat, zda je jazyk v poli povolenych
} else {
$translate = new Translator('en');
}
Opět se s tím setkávám a už z toho šílím to mysqli měli už v PHP
dávno zakázat. Rozhodně to není tvoje chyba. Furt na internetu je víc jak
50% ukázek kódu s mysqli... Použij prosím PDO. je modernější,
bezpečnější a lépe se s ním pracuje. Pokud to ještě není nějak velký
projekt a můžeš do toho sahat, udělej to. Přesně jak říkal
Jakub Žák máš tam ukázkový SQL injection.
Tady máš i diskusi na toto téma http://www.itnetwork.cz/…4455f52e6208
Jo, to mě nějak nenapadlo zmínit není to mysqli, ale dokonce mysql, který se dá považovat za
mrtvý (v PHP 5.5 deprecated, v PHP 7 smazáno).
Pro začátky a naučení se s PDO doporučuji wrapper (obal) tady z jednoho
z návodů, který ti umožní PDO používat neobjektově a hodně podobně,
jako teď používáš ovladač mysql.
Jde o to, že tím znemožníš použití klávsnice. Pokud ta možnost
nebude začínat pomlčkou, tak můžeš začít na klávesnici psát
začáteční písmena volby a nemusíš rolovat myší nebo šipkami.
No jo, ta podmínka je nějaká zvláštní - pokud je prázdná země NEBO
je nastavený žánr, tak vypiš dle Cookie. Zkus tohle:
if (empty($country) AND !empty($_COOKIE["country2"])) {
$sql = "SELECT * FROM `stations` WHERE `country` = '" . mysql_real_escape_string($_COOKIE["country2"]) . "'";
}
teď to říká toto, zkoušel jsem ty dosazovací ify předělat
Warning: mysql_fetch_assoc() expects parameter 1 to be resource, boolean given
in /home/u138846067/public_html/search.php on line 366
Warning: mysql_fetch_assoc() expects parameter 1 to be resource, boolean
given in /home/u138846067/public_html/search.php on line 371
tak jo, byla tam špatně sql, nenapsal jsem tam název tabulky.
Pro změnu se mi vypisují rádia ze všech zemí. žánr funguje, ten to
vyfiltruje, ale země ne. http://radiodb.tk/search.php
$where = "";
if ($genre && $genre != "vse") {
$where .= "WHERE `genre` = '" . mysql_real_escape_string($genre) . "'";
}
if ($country && $country != "vse") {
$where .= (!empty($where) ? " AND " : " WHERE ");
$where .= "`country` = " . intval($country);
}
$sql = "SELECT * FROM `stations` $where";
if (empty($country) AND !empty($_COOKIE["country2"])) {
$sql = "SELECT * FROM `stations` WHERE `country` = '" . mysql_real_escape_string($_COOKIE["country2"]) . "'";
}
To je blbost. Pokud máš to echo přímo před mysql_query($sql) a nic
nevypisuje, znamená to, že žádný dotaz do databáze neexistuje. Takže
jedině, že bys to někde "mazal".
Pokud to dobře chápu, tak z formuláře ti přijde jako string a v atabázi
máš jazyk jako číslo, takže budeš potřebovat nějakou převodní tabulku
(nebo ve formuláři mít ta čísla).
a když se oboje hodí jako mysql_real_escape_string, tak to říká
chybu:
You have an error in your SQL syntax; check the manual that corresponds to
your MariaDB server version for the right syntax to use near 'Republic' at line
1
Warning: mysql_fetch_assoc() expects parameter 1 to be resource, boolean given
in /home/u138846067/public_html/search.php on line 365
nemusí to být takto, stačí mi tam normální text, protože pochybuju,
že to bude extra velkej web. Ale právě nevím jak tram zachovat ten text,
jestli to pojede přes POST...
Tohle je spatně navrhnutá databáze. Jak sám vidíš, ty státy se
opakují a tím ti vznikají tzv. Redundantní data. Proto je lepší udělat
tabulku country se sloupci id a name a v té tabulce stanic mít country_id.
stejný postup i u toho žánru (tam by bylo dokonce nejlepší udělat
mezitabulku ke budeš spojovat žánry se stanicí. protože stanice může
hrát víc žánrů). Ušetřís tím data a databáze bude profesionálnější
a čistější
Doména != hosting ale
pravda že .tk zní šíleně. Jak ses k tomu dostal? doporučuji https://hosting.wedos.com/
se spojením http://kuponwedos.cz/ se dostaneš na moc pěkný ceny za
normální .cz doménu
wedos má zdarma .eu doménu jako dárek
No dostal jsem se k tomu od kamaráda, který dřív dělal djeye a chtěl
nějakej web a na internetu našel zdarma tuhle .tk doménu.
Doména != hosting (Vím) teď jedu na hostingeru 2GB zdarma, ale ty
podmínky, máš chuť je přetáhnout. Jsem si musel otevřít pusu, aby mi to
dali bez drahý sms aktivace.
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.