Diskuze: Vyhledávání dat ve skladu

PHP PHP Vyhledávání dat ve skladu American English version English version

Avatar
Lordos
Člen
Avatar
Lordos:

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
Redaktor
Avatar
Odpovídá na Lordos
Kit:

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:
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:

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  -5 1.1.2014 17:14
Avatar
Lordos
Člen
Avatar
Odpovídá na MrPabloz
Lordos:

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:

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
Redaktor
Avatar
Odpovídá na MrPabloz
Petr Nymsa:

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

Nahoru Odpovědět  +1 1.1.2014 19:16
Pokrok nezastavíš, neusni a jdi s ním vpřed
Avatar
Kit
Redaktor
Avatar
Odpovídá na MrPabloz
Kit:
$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.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:

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
Petr Nymsa
Redaktor
Avatar
Odpovídá na Lordos
Petr Nymsa:

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.1.2014 19:48
Pokrok nezastavíš, neusni a jdi s ním vpřed
Avatar
Lordos
Člen
Avatar
Odpovídá na Kit
Lordos:

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:

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
Redaktor
Avatar
Odpovídá na Lordos
Kit:

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.