Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: Hakulomake useilla ehdoilla

El-Ejecutor [20.09.2006 11:55:47]

#

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.

Lebe80 [20.09.2006 13:33:54]

#

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.

siirappi [20.09.2006 13:40:36]

#

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);

El-Ejecutor [20.09.2006 14:32:19]

#

oolrait. suuri kiitos avusta!

tsuriga [20.09.2006 14:36:20]

#

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ä.

El-Ejecutor [21.09.2006 09:15:49]

#

jepjep, nyt pelittää hyvin ja pienemmällä vaivalla. kiitoksia!

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta