Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: PHP lomakkeiden käsittely sekä mysql

Sivun loppuun

sprawl [09.06.2009 18:12:58]

#

Eli on tällanen taulu myslissä:
'huolto'

ID | pvm        | kone   | paikka | sarjanumero | firmis | lukema | huoltotoimi |
1  | 2006-06-09 | malli1 | koti   | xxxxxxxxxx  | r5     | 123 t  | putsauksia  |

Tuosta on tarkoituksena hakea huoltotiedot taulukkoon ja sen oon nyt toteuttanu hirveellä purkalla.

Semmonen kysymys että onko mahdollista saada "reaaliaikainen" form-lomake josta vasemmalta puolelta saa valita koneen mallin joka löytyy myslin taulusta "kone" ja kun sitä klikkaa se näyttää oikeella puolella lomakkeessa paikat joissa konemalli on asennettuna(löytyy myslistä kohdasta "paikka).

Tämmöinen lomake on käytössä esim. huutonetin haku toiminnossa kun osastokohtaista hakua käyttää.

Tässä on nykyinen koodi miten olen sen hoitanut, eli aina joutuu painamaan nappulaa mallin jälkeen sekä paikan jälkeen ennenkuin saa itse taulukon tulostettua. Alla on myös painike "lisää huoltotieto" josta saan tiedot toiselle sivulle tietojen lisäämistä varten.

<br>Vain tämän mallin mukaan:<br>
<form action="haku.php" method="post">
<select name="konenro">
<?php

$yhteys = mysql_connect(************) or die(mysql_error());
mysql_select_db(*********,$yhteys) or die ("Tietokannan valitseminen epäonnistui");

//haetaan kaikki tavarat
$kysely = "SELECT * FROM huolto GROUP BY kone ORDER BY kone ASC";
//suoritetaan kysely
$haku = mysql_query($kysely, $yhteys) or die("Virhe kyselyssä!");

while($r=mysql_fetch_array($haku)) {

$kone = $r["kone"];
echo '<option value="'.$r['kone'].'">'.$r['kone'].'</option>';


 }

?>
</select>
<input type="submit" value="Ok">
</form>


<form action="haku.php" method="post">
<br>Paikka:<br>
<select name="tieto">

<?php
if(count($_POST) > 0) {
$yhteys = mysql_connect(************) or die(mysql_error());
mysql_select_db(*********,$yhteys) or die ("Tietokannan valitseminen epäonnistui");
$kn = $_POST['konenro'];

$kysely = "SELECT * FROM huolto WHERE kone='$kn' AND pvm>0000-00-00 GROUP BY paikka ORDER BY pvm DESC LIMIT 1";

//suoritetaan kysely
$haku = mysql_query($kysely, $yhteys) or die("Virhe kyselyssä!");

while($r=mysql_fetch_array($haku)) {

$kone = $r["kone"];
$paikka = $r["paikka"];
$sarjanumero = $r["sarjanumero"];



echo '<option value="'.$r['sarjanumero'].'">'.$r['kone'].' - '.$r['paikka'].'</option>';
}




 }

?>
</select>
<input type="submit" value="Näytä huollot">
</form>

<br><br>
<?php
if(count($_POST['tieto']) > 0) {
$yhteys = mysql_connect(************) or die(mysql_error());
mysql_select_db(*********,$yhteys) or die ("Tietokannan valitseminen epäonnistui");
$ftieto = $_POST['tieto'];
//haetaan kaikki tavarat
$kysely = "SELECT * FROM huolto WHERE sarjanumero='$ftieto' GROUP BY paikka ORDER BY pvm DESC LIMIT 1";
//suoritetaan kysely
$haku = mysql_query($kysely, $yhteys) or die("Virhe kyselyssä!");

while ($tulos = mysql_fetch_assoc($haku)) {
   echo 'Asennuspaikka: '.$tulos['paikka'].'';
   echo '<br>Kone: '.$tulos['kone'].'';
   echo '<br>Sarjanumero: '.$tulos['sarjanumero'].'';
   echo '<br>Firmis: '.$tulos['firmis'].'';

   }
}
?>
<br><br>
<?php
if(count($_POST['tieto']) > 0) {
$yhteys = mysql_connect(************) or die(mysql_error());
mysql_select_db(*********,$yhteys) or die ("Tietokannan valitseminen epäonnistui");

$htieto = $_POST['tieto'];


//haetaan kaikki tavarat
$kysely = "SELECT * FROM huolto WHERE sarjanumero='$htieto' ORDER BY pvm DESC";
//suoritetaan kysely
$haku = mysql_query($kysely, $yhteys) or die("Virhe kyselyssä!");

echo "<table border='1'>";
echo "<tr><td><b>Pvm(vvvv-kk-pp)</b></td><td><b>Huoltotoimi</b></td><td><b>Lukema</b></td></tr>";
//käydään tavarat läpi
for ($i = 0; $i < mysql_num_rows($haku); $i++) {
   //haetaan nimi, hinta ja määrä muuttujiin
   $pvm = mysql_result($haku, $i, "pvm");
   $huoltotoimi = mysql_result($haku, $i, "huoltotoimi");
   $lukema = mysql_result($haku, $i, "lukema");
   $kone = mysql_result($haku, $i, "kone");
   $paikka = mysql_result($haku, $i, "paikka");
   $sarjanumero = mysql_result($haku, $i, "sarjanumero");
   //tulostetaan taulukon rivi
   echo "<tr><td>$pvm</td><td>$huoltotoimi</td><td><b>$lukema</td></tr>";

}
echo "</table>";
echo '<form action="lisays.php" method="post">';
echo '<input name="kone1" value="'. $kone .'" type="hidden">';
echo '<input name="paikka1" value="'. $paikka .'" type="hidden">';
echo '<input name="sarjanumero1" value="'. $sarjanumero .'" type="hidden">';
echo '<input type="submit" value="Lisää huoltotieto">';
echo '</form>';



}
?>
<br>

Vinkkiä tai jonkinsortin esimerkkiä mitä voisi soveltaa?
Mikään ihmelapsi en ohjelmoinnissa ole kuten varmasti huomaatte :D


Edit:
Yhdessä haussa on "pvm>0000-00-00" koska taulukossa on 1 tyhjä rivi jotta saan "kone" sekä "paikka" valikoihin tyhjän ensimmäisen rivin.. todellista purkkaa siis..

Edit2: lisäsin esimerkkirivin myslin taulukkoon jotta selviää mitä käsitellään.
Edit3: Yksi sarake puuttui

Grez [09.06.2009 18:20:50]

#

Esimerkistäsi puuttuu sarake.

Sen, ettei tarvitse painaa aina "lähetä" lomakkeen lähettämiseksi saat helposti laittamalla selectiin onchange="submit()"

sprawl [09.06.2009 18:56:31]

#

<br>Vain tämän mallin mukaan:<br>
<form action="haku.php" method="post" onchange="submit()">
<select name="konenro">
<option>Valitse...</option>
<?php

$yhteys = mysql_connect(************) or die(mysql_error());
mysql_select_db(*********,$yhteys) or die ("Tietokannan valitseminen epäonnistui");

//haetaan kaikki tavarat
$kysely = "SELECT * FROM huolto GROUP BY kone ORDER BY kone ASC";
//suoritetaan kysely
$haku = mysql_query($kysely, $yhteys) or die("Virhe kyselyssä!");

while($r=mysql_fetch_array($haku)) {

$kone = $r["kone"];
echo '<option value="'.$r['kone'].'">'.$r['kone'].'</option>';


 }

?>
</select>

Noin, Lisäsin myös "valitse" option kohdan sen tyhjän sarakkeen luomiseksi.
Pitääkö tuohon ruveta jotain Get tietoja lisäämään että saisi sen valitun kohteen jäämään siihen kunnes toisin määrätään?

Nyt jos valitsee ensin tiedon yksi, seuraavasta lomakkeesta tiedon 2 niin sen jälkeen se kyllä näyttää oikein huoltotiedot mutta molemmissa valintabokseissa lukee tuo "valitse" minkä lisäsin.


Edit:
Vaihdoin formin tyyliksi niin että se on näin:

<select name="konenro" size="10">

nyt näkee allekain 10kpl, ensimmäisen palkin tieto näkyy aina jopa haun jälkeekin laatikossa joka riittää minulle, tokihan siistimmäksi sais jos näkyisin myös valittu paikka aina laatikossa.

Teuro [09.06.2009 19:23:19]

#

Minulle tuli tällainen koodirävellys aikaiseksi.

<?php
	echo "<form action=\"huolto.php\" method=\"post\">";
	echo "<select name=\"konenro\" onchange=\"submit()\">";

	$yhteys = mysql_connect("localhost", "root") or die(mysql_error());
	$kanta = mysql_select_db("kilpailu", $yhteys) or die ("Tietokannan valitseminen epäonnistui");

	$kysely = "SELECT kone FROM huolto GROUP BY kone ORDER BY kone ASC";

	$haku = mysql_query($kysely, $yhteys) or die("Virhe kyselyssä!");

	echo "<option value=\"\"></option>";

	while($r=mysql_fetch_array($haku)) {
		$kone = $r["kone"]; /* Miksi näin ? */
		echo "<option value=\"$kone\">$kone</option>";
	}

echo "</select>";
echo "</form>";

echo "<form action=\"huolto.php\" method=\"post\">";
echo "<select name=\"tieto\" onchange=\"submit()\">";

if(isset($_POST['konenro'])){
	$kn = $_POST['konenro'];
	/* Haetaan kentät, joita käytetään $kn lienee yksiselitteisesti tietyn koneen id? */
	$kysely = "SELECT kone, paikka, sarjanumero FROM huolto WHERE kone='$kn' ORDER BY pvm DESC";
	echo $kysely;
	//suoritetaan kysely
	$haku = mysql_query($kysely, $yhteys) or die("Virhe kyselyssä!");

	echo "<option value=\"\"></option>";

	while($r=mysql_fetch_array($haku)) {
		$kone = $r["kone"];
		$paikka = $r["paikka"];
		$sarjanumero = $r["sarjanumero"];

		echo "<option value=\"$sarjanumero\">$kone - $paikka</option>";
	}
}

echo "</select>";
echo "</form>";

if(isset($_POST['tieto'])){
	$ftieto = $_POST['tieto'];

	$kysely = "SELECT paikka, kone, sarjanumero, firmis FROM huolto WHERE sarjanumero='$ftieto' GROUP BY paikka ORDER BY pvm DESC LIMIT 1";

	$haku = mysql_query($kysely, $yhteys) or die("Virhe kyselyssä!");

		while ($tulos = mysql_fetch_assoc($haku)) {
			echo 'Asennuspaikka: '.$tulos['paikka'].'';
			echo '<br>Kone: '.$tulos['kone'].'';
			echo '<br>Sarjanumero: '.$tulos['sarjanumero'].'';
			echo '<br>Firmis: '.$tulos['firmis'].'';
		}
}
?>

Grez [09.06.2009 20:06:17]

#

Itse tekisin ehkä jotenkin tälleen (testattavissa)

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd" >
<html xmlns="http://www.w3.org/1999/xhtml" >
<head><title>Huoltohaku</title></head>
<body><h1>Huoltohaku</h1>
<form method="post" action=""><table>
<?php

	$MaxRivejä = 30;

	require_once("config.php");

	$db = mysql_connect($dbhost, $dbuser, $dbpasswd)
		or die("Tietokantaan ei saatu yhteyttä");

	mysql_select_db($dbname) or die("Tietokannan valitseminen epäonnistui");


	$Kentät = Array('ID' => 'ID',
					'pvm'=>'Päivä',
					'kone' => 'Konemalli',
					'paikka' => 'Sijaintipaikka',
					'sarjanumero' => 'Sarjanumero',
					'firmis' => 'Firmwareversio',
					'lukema' => 'Käyttöaika',
					'huoltotoimi' => 'Huoltotoimi');
	$Hakukentät = Array('kone'=>'','paikka'=>'','sarjanumero'=>'','firmis'=>'');

	//otsikot
	echo '<tr>';
	foreach ($Kentät as $Otsikko) echo '<th>'.htmlentities($Otsikko).'</th>';
	echo '</tr><tr>';

	//haut
	foreach ($Kentät as $Kenttä => $Otsikko) {
		echo '<td>';
		if (isset($Hakukentät[$Kenttä])) {
			echo "<select name=\"$Kenttä\" onchange=\"submit()\"><option value=\"\"></option>";
			$result = mysql_query("select distinct $Kenttä from huolto");
			while ($row = mysql_fetch_array($result)) {
				echo '<option value="' . htmlentities($row[0]) . '"';
				if ($row[0]==$_POST[$Kenttä]) echo ' selected="selected"';
				echo '>' . htmlentities($row[0]) . '</option>';
			}
			echo "</select>";
		}
		echo '</td>';
	}
	echo '</tr>';

	//datat
	$sql = 'SELECT * FROM huolto ';
	foreach ($Hakukentät as $Kenttä => $Otsikko)
		if (isset($_POST[$Kenttä]) && $_POST[$Kenttä]!='') $ehdot[] = "$Kenttä='" . mysql_real_escape_string($_POST[$Kenttä]) . "'";

	if (isset($ehdot)) $sql .= ' WHERE ' . implode(' AND ', $ehdot);

	$sql .= ' ORDER BY Id DESC LIMIT ' . ($MaxRivejä+1);

	$result = mysql_query($sql);

	$rivi = 0;
	while($row = mysql_fetch_assoc($result)) {
		if ($rivi==$MaxRivejä) {
			echo '<tr><td colspan="' . count($Kentät) . "\">Yli $MaxRivejä osumaa - tarkenna hakuehtoja</td></tr>";
			break;
		}
		echo '<tr>';
		foreach ($Kentät as $Kenttä => $Otsikko) echo '<td>' . htmlentities($row[$Kenttä]) . '</td>';
		echo '</tr>';
		$rivi++;
	}

?></table></form>
</body></html>

sprawl [09.06.2009 21:01:09]

#

Suur kiitos yllä olevista esimerkeistä, saan niitä soveltamalla taas lisää ideoita jatkoa ajatellen.

Yksi kysymys vielä heräsi.

Kun huoltotiedon poistamisen olen myös toteuttanut yhtä tasokkaasti kuin lisäämisenkin niin mikähän tapa olis järkevin käyttää jotta sais esim. tuohon huoltohistoria taulukon jälkeen "poista" sekä "muokkaa" painikkeet.

Tähän asti kun olen käyttäny ensin poistoa ja sitten uudelleen lisäämistä jos huoltotietoa täytyy muuttaa erinäisistä syistä.

Ei ainakaan pienellä funtsimisella tullut mitään järkevää systeemiä mieleen ettei tarttis tehdä 200rivin purkkaa yhden rivin muuttamiseen :)

Vinkkejä?

Teuro [09.06.2009 21:44:33]

#

Huoltotiedot kannattaa ehkä pitää omana taulunaan, jossa niihin viitataan koneen id-numerolla? Tällöin yksittäisen huoltotiedon saa esille valitsemalla oikean id numeron (huoltotoimenpiteille on siis oma taulu).

/* Konetaulu */
id INTEGER AUTO_INCREMENT
nimi VARCHAR 60
sarjanumero VARCHAR 30

/* Firmataulu */
id INTEGER AUTO_INCREMENT
nimi VARCHAR 60
laskutus DOUBLE /* hinnoittelu */

/* Huoltokohteet taulu */
id INTEGER AUTO_INCREMENT
kohde VARCHAR 60
aika double

/* Huoltotaulu */
id INTEGER AUTO_INCREMENT
kone_id INTEGER /* Konetaulu.id */
firmis_id /* Firmataulu.id */
pvm DATE
tuntimaara INTEGER
huoltotoimenpide_id /* Huoltokohteet.id */

Nyt esimerkiksi saadaan konekohtaiset huoltokustannukset selville seuraavasti:

<?php
$kysely = "
SELECT
  kone.nimi,
  SUM(aika * firma.laskutus) AS hinta
FROM
  kone,
  huolto,
  huoltokohteet,
  firma
WHERE
  kone.id = huolto.kone_id
AND
  huoltokohteet.id = huolto.huoltotoimenpide_id
AND
  huolto.firmis_id = firma.id
GROUP BY
  kone.id"
?>

Samalla tyylillä saadaan myös monia muita raportteja huolloista ajettua, muun muassa konekohtaiset huoltovälit jne.

Grez [09.06.2009 22:05:04]

#

No senhän voisi tehdä esim näin (Päivitin sivunkin)

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd" >
<?

$Kentät = Array('ID' => 'ID',
				'pvm'=>'Päivä',
				'kone' => 'Konemalli',
				'paikka' => 'Sijaintipaikka',
				'sarjanumero' => 'Sarjanumero',
				'firmis' => 'Firmwareversio',
				'lukema' => 'Käyttöaika',
				'huoltotoimi' => 'Huoltotoimi');
$Hakukentät = Array('kone'=>'','paikka'=>'','sarjanumero'=>'','firmis'=>'');
$MuokKentät = Array('pvm'=>10,'kone'=>100,'paikka'=>100,'sarjanumero'=>100,'firmis'=>100,'lukema'=>100,'huoltotoimi'=>100);

$Kommentti = '';

$MaxRivejä = 30;

require_once("config.php");

$db = mysql_connect($dbhost, $dbuser, $dbpasswd)
	or die("Tietokantaan ei saatu yhteyttä");

mysql_select_db($dbname) or die("Tietokannan valitseminen epäonnistui");



if (isset($_GET['ID'])) {
	$Id=(int)$_GET['ID'];

	if (isset($_POST['delete'])) {
		mysql_query("delete from huolto where ID=$Id");
		$Kommentti = 'Poistettu';
		unset($Id);
	} else {
		if (isset($_POST['save'])) {
			unset($Fields);
			unset($Values);
			if ($Id==0) { //Uusi
				foreach ($MuokKentät as $Kenttä => $pituus) {
					$Fields[] = $Kenttä;
					$Values[] = '\'' . mysql_real_escape_string($_POST[$Kenttä]) . '\'';
				}
				mysql_query('INSERT INTO huolto (' . implode(',',$Fields) . ') VALUES (' . implode(',',$Values) . ')');
				$Id = mysql_insert_id();
				$Kommentti = "Lisätty $Id";
			} else {	//olemassaoleva
				foreach ($MuokKentät as $Kenttä => $pituus) {
					$Values[] = "$Kenttä='" . mysql_real_escape_string($_POST[$Kenttä]) . '\'';
				}
				mysql_query('UPDATE huolto SET ' . implode(',',$Values) . " WHERE ID=$Id");
				$Kommentti = "Muutokset tallennettu";
			}
		}
		$result = mysql_query("select * from huolto where ID=$Id");
		if (!$row = mysql_fetch_assoc($result)) $Id=0;
	}
	$Caption = $Id?'Huollon muokkaus':'Huollon lisäys';
} else $Caption = 'Huoltohaku';

echo '<html xmlns="http://www.w3.org/1999/xhtml" >';
echo "<head><title>$Caption</title></head>";
echo "<body><h1>$Caption</h1>";
if ($Kommentti!='') echo "<h3>$Kommentti</h3>";

if (isset($Id)) {
	//Yksittäinen tapahtuma
	echo "<form method=\"post\" action=\"?ID=$Id\"><table>";
	foreach ($MuokKentät as $Kenttä => $pituus) {
		echo "<tr><td>" . htmlentities($Kentät[$Kenttä]) . ":</td><td><input type=\"text\" size=\"50\" name=\"$Kenttä\" value=\"";
		if ($Id!=0) echo htmlentities($row[$Kenttä]);
		echo "\" maxlength=\"$pituus\" /></td></tr>";
	}
?>
	</table>
	<input type="submit" name="save" value="Tallenna muutokset" />
	<input type="submit" name="delete" value="Poista huoltokeikka" /></form>

	<p><a href="?">Palaa listalle</a></p>
<?
} else {
	//Lista
	echo '<form method="post" action=""><table>';

	//otsikot
	echo '<tr>';
	foreach ($Kentät as $Otsikko) echo '<th>'.htmlentities($Otsikko).'</th>';
	echo '</tr><tr>';

	//haut
	foreach ($Kentät as $Kenttä => $Otsikko) {
		echo '<td>';
		if (isset($Hakukentät[$Kenttä])) {
			echo "<select name=\"$Kenttä\" onchange=\"submit()\"><option value=\"\"></option>";
			$result = mysql_query("select distinct $Kenttä from huolto");
			while ($row = mysql_fetch_array($result)) {
				echo '<option value="' . htmlentities($row[0]) . '"';
				if ($row[0]==$_POST[$Kenttä]) echo ' selected="selected"';
				echo '>' . htmlentities($row[0]) . '</option>';
			}
			echo "</select>";
		}
		echo '</td>';
	}
	echo '</tr>';

	//datat
	$sql = 'SELECT * FROM huolto ';
	foreach ($Hakukentät as $Kenttä => $Otsikko)
		if (isset($_POST[$Kenttä]) && $_POST[$Kenttä]!='') $ehdot[] = "$Kenttä='" . mysql_real_escape_string($_POST[$Kenttä]) . "'";

	if (isset($ehdot)) $sql .= ' WHERE ' . implode(' AND ', $ehdot);

	$sql .= ' ORDER BY Id DESC LIMIT ' . ($MaxRivejä+1);

	$result = mysql_query($sql);

	$rivi = 0;
	while($row = mysql_fetch_assoc($result)) {
		if ($rivi==$MaxRivejä) {
			echo '<tr><td colspan="' . count($Kentät) . "\">Yli $MaxRivejä osumaa - tarkenna hakuehtoja</td></tr>";
			break;
		}
		echo '<tr>';
		foreach ($Kentät as $Kenttä => $Otsikko) {
			echo '<td>' . htmlentities($row[$Kenttä]);
			if ($Kenttä=='ID') echo '<a href="?ID=' . $row[$Kenttä] . '">Muokkaa</a>';
			echo '</td>';
		}
		echo '</tr>';
		$rivi++;
	}

?></table></form><p><a href="?ID=0">Lisää uusi</a><?
	}
?>
<p>
    <a href="http://validator.w3.org/check?uri=referer"><img
        src="http://www.w3.org/Icons/valid-xhtml10-blue"
        alt="Valid XHTML 1.0 Transitional" height="31" width="88" /></a>
  </p>
</body></html>

sprawl [10.06.2009 18:51:43]

#

Grezin laittama esimerkki on erittäin hyvä, menee vaan aikaa enennkuin täysin ymmärrän mitä kaikkea siinä tehdään :)

ihan tuollaisenaankin kävisi minun tarkoituksiini kun saa muokattua niin ettei näytä ns. turhia tietoja, eli jos valitsee "konemalliksi" amiga500 niin ei näytä enään sijaintipaikassa ynnä muissa valikoissa enään kaikkien mallien tietoja koska valikkoja tulee olemaan melko runsaasti.(malleja noin parikymmentä, paikkoja lienee toistasataa, ja huoltotietoja 20-100 riviä per sarjanumero).


Edit:
Toisaalta tuossa on hyvä se puoli että tarvitsen myös suoraa sarjanumero hakua, koska joskus täytyy hakea koneen huoltotiedot pelkällä sarjanumerolla. Nyt käytössä on normaali mysql haku kohteesta jossa sarjanumero=sarjanumero.

Siinä tuo on ihan kätevä kun kaikki tiedot näkyy kaikissa valikoissa kokoajan. Mutta ei siinä jos pitää miettiä että missäs se tietty konemalli nyt olikaan asennettuna ja asennuspaikka valikosta löytyy se 250 paikkaa :).


Edit2:
Teuro, ideana on se että nykyään huoltohistoria koneista on noin 300:ssa .doc filussa ja nyt ulkoistetaan huoltotoimia mysliin. Kätevämpää kun wordilla kikkailu, +että jos esim. tietyllä sarjanumerolla täytyy löytää kone niin on helpompaa se hakea tietokannan kautta.

Teuro [10.06.2009 19:08:50]

#

Suosittelen kylä vahvasti erottelemaan nuo tiedot omiin tauluihinsa, koska muutoin tieokannan etu häviää olemattomiin. Kuvitellaampa, että jollekin konelle tuleekin epähuomiossa tallennettua väärä sarjanumero. Miten tuollaisen virheen voisi korjata? Helpompaa on, kun koneen tiedot ovat yhdessä taulussa ja huoltotiedot toisessa. Huoltokohteet on vähän jo siinä rajalla, että kannattaako niitä ottaa omaksi taulukseen.

sprawl [10.06.2009 19:26:38]

#

Juu no kyllä sarjanumerot tulee oikein laitettua melko suurella prosentilla, eteenkin jos muuttaisi haun käyttämään vielä "like"-toimintoa, jos nyt oikein muistan tuon mysli haun.

Tällä hetkellä sivu näyttää tältä ulkoasullisesti:
http://img31.imageshack.us/i/huolto.jpg/

Tuohon jos saa vielä koplattua muokkaa/poista namiskat riveille niin olisin tyytyväinen.

Koodi tuolle kuvalle:
http://pastebin.com/m3d7ee4ec

Grez [10.06.2009 19:27:29]

#

Teuro kirjoitti:

Suosittelen kylä vahvasti erottelemaan nuo tiedot omiin tauluihinsa, koska muutoin tieokannan etu häviää olemattomiin. Kuvitellaampa, että jollekin konelle tuleekin epähuomiossa tallennettua väärä sarjanumero. Miten tuollaisen virheen voisi korjata?

Mielestäni hyvä pointti, mutta huono esimerkki. Näkisin, että väärin syötetyn sarjanumeron voi korjata avaamalla ko. huoltotapahtuman ja päivittämällä sen oikeaksi. En myöskään oikein näe, miten tietokannan normalisointi auttaisi juuri nimenomaan tuohon caseen (että sarjanumero syötetään vahingossa väärin). Käytännössähän tuonne tulisi sitten "uusi kone", jossa olisi eri sarjanumero. Tietty jos ajattelit, että koneet syötetään valmiiksi ja huoltoja syöttävät eivät saa lisätä niitä, niin sitten tuo ongelma estyisi.

sprawl [10.06.2009 19:36:21]

#

lainaus:

Tietty jos ajattelit, että koneet syötetään valmiiksi ja huoltoja syöttävät eivät saa lisätä niitä, niin sitten tuo ongelma estyisi.

Sivuilla ei ole "käyttäjä määrityksiä" vaan samat henkilöt lisää täysin uusia, muokkaa vanhoja-> lisää uusia huoltotietoja.

Eli jos esim. kone1 on asennettuna paikkaan paikka1 voi sen sijainti muuttua paikka2:ksi jos kone myydään toiselle paikalle. tähän tarvitaan muokkaa toimintoa(tai jos on juurikin kirjoittanut jonkin tiedon väärin).


edit: sikäli en itsekään oikein suosi tuota monen taulun ohjeistusta koska nykyinen pohja on hyvä omaan käyttöön kun tästä opin soveltamaan opittua käytäntöön ja tekemään ne muokkaa/poista namiskat tuohon mikä edellä on mainittu :), tai saa siinä auttaakin en sitä kiellä.

Grez [10.06.2009 19:40:47]

#

sprawl kirjoitti:

ihan tuollaisenaankin kävisi minun tarkoituksiini kun saa muokattua niin ettei näytä ns. turhia tietoja, eli jos valitsee "konemalliksi" amiga500 niin ei näytä enään sijaintipaikassa ynnä muissa valikoissa enään kaikkien mallien tietoja

No tuohan nyt on todella helppo muuttaa. Eli laitoin nyt tuolla muutoksella testattavaksi (lähdekoodi)

Teuro [10.06.2009 19:54:47]

#

Grez kirjoitti:

Mielestäni hyvä pointti, mutta huono esimerkki. Näkisin, että väärin syötetyn sarjanumeron voi korjata avaamalla ko. huoltotapahtuman ja päivittämällä sen oikeaksi.

Olet oikeassa surkea esimerkki, mutta olen itse omin pikku kätösin tehnyt kyseisen virheen oman ohjelmointiurani alussa, jossa en osannut tietokannan käyttöä. Laitoin siis kaiken datan yhteen tauluun ja kirosin huonosti tomivaa tietokantaa.

Vikahan tietysti oli omassa ohjelmassani. Virhe oli melko helppo korjata, kun kirjoitti vain uudet taulut ajatuksen kanssa uusiksi.

sprawl [10.06.2009 21:36:12]

#

Näköjään taulun saa alkuperäiseen lähtötilanteeseen kun klikkaa ensimmäistä tyhjää riviä :) Joten ei siitä sen kummempaa tekemistä tartte tehdä kun toimii niinkin.

Saiskohan tuota vanhassa pohjassa olevaa kalenteri systeemiä mitenkään upotettua tuohon Muokkaus/Lisää osioihin?

Siihenhän tarttee tämän:

<script type="text/javascript" language="javascript" src="datetimepicker.js"></script>
  <script language="JavaScript">
	<!--
		if (document.images)
		{
		calimg= new Image(16,16);
		calimg.src="images/cal.gif";
		}
	//-->
</script>

Ja itse ulostus näin:

<input id="demo1" type="text" size="25" name="pvm"><a href="javascript:NewCal('demo1','yyyymmdd')"><img src="cal.gif" width="16" height="16" border="0" alt="valitse päivä"><----</a>

Jotenki ei oikeen raksuta miten tuohon lenkkiin saisi lisättyä tietylle riville jonkin muutoksen :(


Sivun alkuun

Vastaus

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

Tietoa sivustosta