NOVINKA - Online rekvalifikační kurz Java programátor. Oblíbená a studenty ověřená rekvalifikace - nyní i online.
IT rekvalifikace s podporou uplatnění. Seniorní programátoři vydělávají až 160 000 Kč/měsíc a rekvalifikace je prvním krokem. Zjisti, jak na to!

Diskuze: Problém s filtrováním obsahu databáze

V předchozím kvízu, Online test znalostí PHP, jsme si ověřili nabyté zkušenosti z kurzu.

Aktivity
Avatar
shakki
Člen
Avatar
shakki:29.12.2013 15:01

Zdravím, dělám jednoduchý databázový filtr pro sbírku hokejových karet, který funguje na principu vyhledávání společného textu. Na netu jsem našel množství filtrů, ale vzhledem k tomu, že s ním teprv začínám, zkusil jsem něco jednodušího. Krok po kroku jsem nastavil vlastnosti filtru v souboru, uložil a chtěl vyzkoušet. Zadal jsem tedy hledaný výraz, ale tabulka, kterou jsem součástí filtru nechal vypsat se nevyfiltrovala. Připojuji kod.

<form name="search_form" method="POST" action="hleda­ni.php">
Hledej: <input type="text" name="search_box" value=" "/>
<input type="submit" name="search" value="Hledat"/>
</form>

<?php
$link = mysql_connect("mys­ql.wz.cz", "---", "---")
or die("Nelze se připojit: " . mysql_error());
mysql_select_db("sha­kaar") or die("Nelze vybrat databázi");
$query = "SELECT * FROM HokejKarty";
$result = mysql_query($query) or die("Dotaz nelze provést: " . mysql_error());

if(isset($_POS­T['search'])) {
$search_term = mysql_real_es­cape_string($_POS­T['search_box']);
$query .= "WHERE Vyrobce = '{$search_box}'";
$query .= "OR Zeme = '{$search_box}'";
}
?>
<table width="70%" cellpadding="5" cellspacing="5">
<tr>
<td><b>id</b</td>
<td><b>Znacka</b></td>
<td><b>Cislo</b></td>
<td><b>Zeme</b></td>
<td><b>Rok</b></td>
<td><b>Nazev</b></td>
</tr>
<?php
while ($row= mysql_fetch_a­rray($result)) { ?>
<tr>
<td><?php echo $row ['id']; ?></td>
<td><?php echo $row ['Vyrobce']; ?></td>
<td><?php echo $row ['Cislo']; ?></td>
<td><?php echo $row ['Zeme']; ?></td>
<td><?php echo $row ['Rok']; ?></td>
<td><?php echo $row ['Nazev']; ?></td>

<?php } ?>

</table>

Editováno 29.12.2013 16:34
 
Odpovědět
29.12.2013 15:01
Avatar
Kit
Tvůrce
Avatar
Odpovídá na shakki
Kit:29.12.2013 15:08

Skript v PHP musí být na začátku souboru "hledani.php". Pro vyhledávání se zásadně používá metoda "GET".

Nahoru Odpovědět
29.12.2013 15:08
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
shakki
Člen
Avatar
shakki:29.12.2013 15:36

dík za radu, chtěl jsem se ještě zeptat, který z těch scriptů. Ten s výpisem tabulce asi ne, takže předpokládám že máš na mysli připojující skript s podmínkou. Změnil jsem to tedy podle toho a nestalo se zase nic.

 
Nahoru Odpovědět
29.12.2013 15:36
Avatar
David Hartinger
Vlastník
Avatar
Odpovídá na shakki
David Hartinger:29.12.2013 15:38

V query používáš nějakou proměnnou search_box, ale máš tam jen search_term. Kdybys používal prepared statements s PDO, tak bys tu chybu asi neudělal.

Nahoru Odpovědět
29.12.2013 15:38
New kid back on the block with a R.I.P
Avatar
FastNode
Tvůrce
Avatar
Odpovídá na shakki
FastNode:29.12.2013 16:26

Příště až budeš někde publikovat kód alespoň vyhvězdičkuj nebo úplně smaž přístupové údaje do databáze, speciálně v případě kdy je administrace databáze veřejně přístupná. Takhle se ti kdokoliv může hrabat v databázi! ;)

 
Nahoru Odpovědět
29.12.2013 16:26
Avatar
Odpovídá na shakki
Michal Žůrek - misaz:29.12.2013 16:29

prosímtě změň si heslo k db.

 
Nahoru Odpovědět
29.12.2013 16:29
Avatar
Vojta Pšenák
Tvůrce
Avatar
Vojta Pšenák:29.12.2013 16:33

Mimochodem, měl bys ošetřit hesla, jsou volně přístupná v databázi. Taky by nemělo být možné zaregistrovat se s prázdným jménem/heslem/e­mailem. Nevím jestli se ti v tom někdo hrabal, ale máš v databázi hroznej bordel

 
Nahoru Odpovědět
29.12.2013 16:33
Avatar
David Hartinger
Vlastník
Avatar
Odpovídá na Michal Žůrek - misaz
David Hartinger:29.12.2013 16:35

Toho jsem si ani nevšiml, už jsem mu to z toho příspěvku vymazal, stejně to ale určitě vidělo plno lidí. Alespoň si to bude pamatovat a neudělá podobnou hloupost až opravdu půjde o důležitý projekt.

Nahoru Odpovědět
29.12.2013 16:35
New kid back on the block with a R.I.P
Avatar
Kit
Tvůrce
Avatar
Odpovídá na David Hartinger
Kit:29.12.2013 16:37

V důležitých projektech se přihlašovací údaje do skriptů nedávají.

Nahoru Odpovědět
29.12.2013 16:37
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
shakki
Člen
Avatar
shakki:29.12.2013 16:51

Díky za upozornění, zjistil jsem to hned jak ten kod odeslal a bohužel jsem to tady už nemohl vymazat. Heslo jsem změnil, udělal jsem pěknou hovadinu :/.

 
Nahoru Odpovědět
29.12.2013 16:51
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.

Zobrazeno 10 zpráv z 10.