Tarkoitus olisi luoda ihan perus varaston-/myynninhallinta-db yrityksen käyttöön. Haun pitäisi olla mahdollista tuotteen, myyjän, toimipisteen ja myyntipäivän mukaan, yksittäin tai sekaisin. Aikani pähkäilin järkevää toteutustapaa ja sain toimivan ratkaisun aikaan näin:
if ($_POST['tuote'] != "") { $tuote = "tuote = '".$_POST['tuote']."'"; } else { $tuote = "tuote LIKE '%'"; } if ($_POST['myyja'] != "") { $myyja = "myyja = '".$_POST['myyja']."'"; } else { $myyja = "myyja LIKE '%'"; } if ($_POST['tmip'] != "") { $toimipiste = "toimipiste = '".$_POST['tmip']."'"; } else { $toimipiste = "toimipiste LIKE '%'"; } if ($_POST['pvm'] != "") { $pvm = "myyntipvm = '".$_POST['pvm']."'"; } else { $pvm = "myyntipvm LIKE '%'"; } $haku = mysql_query("SELECT id, tuote, myyja, toimipiste, myyntipvm FROM myynnit WHERE $myyja AND $toimipiste AND $pvm AND $tuote ORDER BY id desc");
Järkevämpiä toteutustapoja otetaan vastaan. Typerää käydä jokainen läpi erikseen. Kokeilin saada tuon foreach:lla lyhyemmäksi mutta en keksinyt miten viittaan tietokannan kenttään jos html-formin syöttökenttä ei ole samanniminen.
Tee taulukko jossa on sekä $_POSTin solun nimi ja sille tietokannan solun nimi.
Lisäksi ettei kukaan pääse sorkkimaan tietokantaa hakulomakkeen avulla, niin siivoat (ajat oman funktion, jossa erilaisia toimenpiteitä) $_POSTit ennenkuin lisäät ne kyselyyn.
POST-taulukon arvot kannattaa tosiaan siivota. Helpoiten se käy siten, että teet oman funktion ja ajat koko POST-taulukon sen läpi array_map-funktion avulla.
$_POST = array_map("funktion_nimi", $_POST);
oolrait. suuri kiitos avusta!
Mieluummin sijoittaa array_mapin palauttaman taulukon johonkin muun nimiseen muuttujaan kuin $_POST. Eipähän tule yllätyksiä myöhemmin kun valmiiksi määritellyssä taulukossa on tosiaankin alkuperäiset arvot.
<?php $searchData = array_map(create_function('$str', 'return $str . ($_POST[$str] ? " = \'" . $_POST[$str] . "\'" : " LIKE \'%\'");'), array_keys($_POST)); ?>
Kenttien nimien kannassa ja formissa tulee olla samoja tuota käyttäessä.
jepjep, nyt pelittää hyvin ja pienemmällä vaivalla. kiitoksia!
Aihe on jo aika vanha, joten et voi enää vastata siihen.