Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: Rivien muutosten tallennus

jarspa [14.01.2007 09:53:01]

#

Eli tarkoitus on tulostaa hakukentässä määritetyt rivit. Tulostamisen jälkeen valitut rivit voi joko poistaa tai muuttaa rivin tietoja. Poistaminen onnistuu mutta jos haluan tehdä muutoksia kenttiin "maara" tai "paikka" niin se ei onnistu.
Tiedän ettei se voi onnistua kun pitäs saada sen textboxin tiedot joita halutaan muokata.

Miten saan sen toimimaan niinku pitäs?

 <?php
if(isset($_POST['haku']))
{
$haku=mysql_query("SELECT tuotenro,saldo,paikka FROM kci WHERE tuotenro = \"$hakunro\"") or die(mysql_error());
//$rivi=mysql_fetch_row($haku);

echo "<table border=1>";
					echo "<tr><td>Tuotenumero</td><td>Määrä</td><td>Paikka</td><td>Poista</td></tr>";

						for ($i = 0; $i < mysql_num_rows($haku); $i++)
						{
							$tuotenro = mysql_result($haku, $i, "tuotenro");
						 	$maara = mysql_result($haku, $i, "saldo");
							$paikka = mysql_result($haku, $i, "paikka");

							echo "<tr>
									<td align=center>$tuotenro</td>
									<td align=center><input type=\"text\" name=\"maara\" value=\"$maara\" size=10></td>
									<td align=center><input type=\"text\" name=\"paikka[]\" value=\"$paikka\" size=10></td>
									<td align=center><input name=\"poista_tuote[]\" type=\"checkbox\" id=\"poista_tuote\" value=\"$paikka\"></td>
									</tr>";
						}
					echo "</table><br>";
					echo "<input name=\"poista\" type=\"submit\" id=\"poista\" value=\"Poista valitut paikat\">";
					echo "<input name=\"tallenna\" type=\"submit\" id=\"tallenna\" value=\"Tallenna muutokset\">";

					print "<input name=\"tuote\" type=\"hidden\" value=\"$tuotenro\">";
}

if(isset($_POST['poista']))
						{

							$poisto = $_POST['poista_tuote'];

							foreach($poisto as $poistaminen)
							{
							mysql_query("DELETE FROM kci WHERE paikka='$poistaminen'") or die (mysql_error());
							echo "<font color=red>Tuote </font><b>$tuote</b><font color=red>poistettu varastopaikalta </font><b>$poistaminen</b><br>";
							}

						}

if(isset($_POST['tallenna']))
						{

							$varpaikka = $_POST['poista_tuote'];

							foreach($varpaikka as $muutos)
							{
							mysql_query("UPDATE kci SET paikka = '$paikka' WHERE paikka = '$varpaikka'") or die (mysql_error());

							}
						echo "<font color=red>Tuotteen </font><b>$tuote</b><font color=red>uusi määrä ja paikka tallennettu</font><br>";
						}


?>

Antti Laaksonen [14.01.2007 21:22:28]

#

Nykyisellään skripti ei voi mitenkään tietää, mitä tekstikenttiä on muutettu ja mitkä ovat säilyttäneet alkuperäisen arvonsa. Toinen ongelma on kenttä paikka: mitä tapahtuu, jos monelle riville annetaan sama paikka?

Minä ehkä lisäisin lomakkeeseen pari piilokenttää: toinen ilmoittaa riviä vastaavan paikan ja toinen ilmoittaa tietojen vanhan arvon. Kun lomakkeen tiedot saadaan taulukoissa, ne voidaan käydä läpi yksi kerrallaan ja tehdä tarvittavat muutokset tietokantaan. Vanhaan arvoon vertaamalla tiedetään, pitääkö sitä riviä muuttaa. Tämä ei kuitenkaan ratkaise kahden saman paikan ongelmaa.

jarspa [14.01.2007 21:34:16]

#

Onkohan jotain muuta toteutustapaa tälle toiminnolle? Vinkkejä...

Vastaus

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

Tietoa sivustosta