Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Diskuze: Vyhledávání dat ve skladu

Aktivity
Avatar
Lordos
Člen
Avatar
Lordos:1.1.2014 16:52

Ahoj
Potřeboval bych pomoct s vyhledáváním z mysql. Mám skladový systém udělaný na localu v php. Mám sklad kde potřebuju vyhledat třeba podle kategorie nějakej produkt ale potřebuju aby to tam napsalo celý řádek kde vyhledané slovo bylo nalezeno. Ale našel jsem spoustu návodů kde vyhledává jenom v jednom sloupci ale já potřebuju vyhledání v celé tabulce kde to najde to slovo a do výsledku vyhledání to napíše celý řádek který to v databázi najde. Takže když zadám třeba kód zboží tak to najde řádek kde je ten kód zboží. Pokud zadám kategorii najde to řádek ve kterém je to slovo té kategorie. Jedíné co vím je že se to děla přes SELECT ale už nevím co dál. Umím spojení s databází výpis úpravu jednoduchý select který je v kódu pod tímto článkem a to je asi vše. Nevím jak to mám udělat ale byl bych rád kdyby mi to někdo napsal nebo aspoň poradil jak na to. Moc díky všem za všechno.

Kód skladu kde je form nahoře k hledání a dole výpis toho skladu.

<table class="table table-hover table-striped" border="1">
<form action="" method="POST">
<p align="left">Hledat:<input type="text" size="20" name="search" placeholder="Hledat">
<input type="submit" name="searchs" value="Vyhledat"></p>
</form
             <p align="left"><a style="margin-top: 5px;" href="index.php" class="btn btn-danger">Zpět na hlavní stránku</a></p>

            <thead>
              <tr><th width="80px">Kód zboží</th><th width="200px">Název zboží</th><th width="30px">Trvanlivost</th><th width="30px">Skladem</th><th width="30px">Nákupní cena</th><th width="30px">Prodejni cena</th><th width="30px">#</th><th width="150px">Vyrobce</th><th width="150px">Dodavatel</th><th width="150px">Kategorie</th><th width="150px">P.Kategorie</th><th width="150px">P.Kategorie</th><th width="150px">P.Kategorie</th><th width="100px">EAN</th><th width="150px">Faktura</th></tr>
            </thead>
            <tbody>
              <?php
                $vypisNovinky = mysql_query("SELECT * FROM sklad ORDER BY id DESC");
                while($newFetch = mysql_fetch_array($vypisNovinky)) {
                $newId = $newFetch['id'];
                  $newkod = $newFetch['kodzbozi'];
                  $newnazev = $newFetch['nazevzbozi'];
                  $newtrvan = $newFetch['trvanlivost'];
                  $newskladem = $newFetch['skladem'];
                  $newnakupni = $newFetch['nakupnicena'];
                  $newprodejni = $newFetch['prodejnicena'];
                  $newvyrobce = $newFetch['vyrobce'];
                  $newdodavatel = $newFetch['dodavatel'];
                  $newkategorie = $newFetch['kategorie'];
                  $newpkategorie = $newFetch['podkategorie'];
                  $newpkategorie2 = $newFetch['podkategorie2'];
                  $newpkategorie3 = $newFetch['podkategorie3'];
                  $newean = $newFetch['ean'];
                  $newumisteni = $newFetch['umisteni'];
                  $newfaktura = $newFetch['faktura'];

                  if(strlen($newNazov) < 20 || strlen($newNazov) == 20) {
                    $newNazov1 = $newNazov;
                  } else {
                    $newNazov1 = "".substr($newNazov, 0, 20)."...";
                  }

                  echo "<tr><td>".$newkod."</td><td>".$newnazev."</td><td>".$newtrvan."</td><td>".$newskladem."</td><td>".$newnakupni."</td><td>".$newprodejni."</td><td><a href='?s=editNew&subs=edit&id=".$newId."'><i class='icon-edit'></i></a><a href='?s=editNew&subs=remove22&id=".$newId."'><i class='icon-remove'></i></a></td><td>".$newvyrobce."</td><td>".$newdodavatel."</td><td>".$newkategorie."</td><td>".$newpkategorie."</td><td>".$newpkategorie2."</td><td>".$newpkategorie3."</td><td>".$newean."</td><td>".$newfaktura."</td></tr>";
                }
              ?>
            </tbody>
          </table>
 
Odpovědět
1.1.2014 16:52
Avatar
Kit
Tvůrce
Avatar
Odpovídá na Lordos
Kit:1.1.2014 16:58

Nejdřív si ujasni rozdíl mezi metodami GET a POST. Tady patří GET.

V SELECTu ti chybí podmínka za WHERE.

Nahoru Odpovědět
1.1.2014 16:58
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
MrPabloz
Člen
Avatar
MrPabloz:1.1.2014 17:02
SELECT * FROM nazev_tabulky WHERE atribut = "nějaká_hodnota" ORDER BY id DESC

Podle tohoto vzoru to uděláš snad už raz dva :)

Nahoru Odpovědět
1.1.2014 17:02
Harmonie těla a duše, to je to, oč se snažím! :)
Avatar
Lordos
Člen
Avatar
Odpovídá na Kit
Lordos:1.1.2014 17:14

Ano to mi je jedno jestli tam patří GET nebo POST a pokud tam něco chybí tak mi to je taky jedno protože to funguje a to jsem rád. Já mám spíše problém s vyhledáváním v databázi. To je téma tohoto příspěvku a zrovna tvůj kometář mi moc nepomohl.

 
Nahoru Odpovědět
1.1.2014 17:14
Avatar
Lordos
Člen
Avatar
Odpovídá na MrPabloz
Lordos:1.1.2014 17:21

Asi jo ale "nějaká_hodnota" je teda to co napíšou do toho inputu na vyhledání ??

 
Nahoru Odpovědět
1.1.2014 17:21
Avatar
MrPabloz
Člen
Avatar
Odpovídá na Lordos
MrPabloz:1.1.2014 19:15

Ano, tímpádem to bude vypadat akorát takto nějak :)

SELECT * FROM sklad WHERE atribut = "$_POST[search]" ORDER BY id DESC
Nahoru Odpovědět
1.1.2014 19:15
Harmonie těla a duše, to je to, oč se snažím! :)
Avatar
Petr Nymsa
Tvůrce
Avatar
Odpovídá na MrPabloz
Petr Nymsa:1.1.2014 19:16

A záhy někdo smaže celou databázi, máš tam SQL injekci

Nahoru Odpovědět
1.1.2014 19:16
Pokrok nezastavíš, neusni a jdi s ním vpřed
Avatar
Kit
Tvůrce
Avatar
Odpovídá na MrPabloz
Kit:1.1.2014 19:22
$search = $pdo->prepare("SELECT * FROM sklad WHERE atribut = ? ORDER BY id DESC");
$search->execute(array($_GET['search']));
Editováno 1.1.2014 19:22
Nahoru Odpovědět
1.1.2014 19:22
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Lordos
Člen
Avatar
Odpovídá na Petr Nymsa
Lordos:1.1.2014 19:46

A to jde když je to na localu?? Nevím nevyznám se v tom ale je to v mém pc tak to přece nemůže nikdo smazat. Vím hackeři dokážou cokoliv ale asi s tim něco udělám.

 
Nahoru Odpovědět
1.1.2014 19:46
Avatar
Lordos
Člen
Avatar
Odpovídá na MrPabloz
Lordos:1.1.2014 19:47

Díky :-)

 
Nahoru Odpovědět
1.1.2014 19:47
Avatar
Petr Nymsa
Tvůrce
Avatar
Odpovídá na Lordos
Petr Nymsa:1.1.2014 19:48

A proč se to nenaučit psát rovnou tak jak je to správně ? I když se na tom učíš (a tím právě spíš) je lepší to psát tak aby to bylo bezpečné

Nahoru Odpovědět
1.1.2014 19:48
Pokrok nezastavíš, neusni a jdi s ním vpřed
Avatar
Lordos
Člen
Avatar
Odpovídá na Kit
Lordos:1.1.2014 19:48

Děkuji toto už mi docela pomohlo. :-)

 
Nahoru Odpovědět
1.1.2014 19:48
Avatar
Lordos
Člen
Avatar
Odpovídá na Petr Nymsa
Lordos:1.1.2014 19:54

Ano asi jo je to moje první velká práce v PHP a ve SQL injekci se moc zatím nevyznám. Ale už jsem si našel pár dobrých článků v angličině takže to zkusím zabezpečit. :-) A díky za upozornění :-)

 
Nahoru Odpovědět
1.1.2014 19:54
Avatar
Kit
Tvůrce
Avatar
Odpovídá na Lordos
Kit:1.1.2014 20:00

Na localu tě pak naštve, když si chceš přidat herce "Peter O'Toole" a skript ti spadne. SQL injection je nutné ošetřit vždy.

Nahoru Odpovědět
1.1.2014 20:00
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
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 14 zpráv z 14.