Olen tehnyt tämmöisen sivun joka tulostaa SQL-kannasta tietoa ja sitten tietoja sais muokattua. Ongelmana on vaan se ettei tämä koodi toimi. Poistamista olen yrittänyt mutta ei tee mitään.
<?php if($kohde=="tuote") { echo "<font color=red><b>Tuotteen $tuotteet varastopaikat</b></font>"; echo "<table border=1>"; echo "<tr><td>Varastopaikka</td><td>Uusi paikka</td><td></td><td>Poista</td></tr>"; for ($i = 0; $i < mysql_num_rows($haku); $i++) { $color = ($color == '#C0C0C0') ? '#ffffff' : '#C0C0C0'; $paikka = mysql_result($haku, $i, "varastopaikka"); echo "<tr bgcolor=$color> <td align=center>$paikka</td> <td align=center><input type=\"text\" name=\"uusipaikka\" size=10></td> <td align=center><input name=\"siirto\" type=\"submit\" id=\"siirto\" value=\"Siirrä\"></td> <td align=center><input type=\"checkbox\" name=\"poisto[]\" value=\"$paikka\"></td> </tr>"; } echo "</table><br>"; echo "<input name=\"poista\" type=\"submit\" id=\"poista\" value=\"Poista valitut paikat\">"; print "<input name=\"tuote\" type=\"hidden\" value=\"$tuotteet\">"; } if(isset($_POST['poista'])) { $poisto = $_POST['poisto']; foreach($poisto as $poistaminen) { mysql_query("DELETE FROM varastopaikat WHERE varastopaikka='$poistaminen'"); echo "Tuote $tuote poistettu varastopaikalta $poistaminen"; } } ?>
sulla ei oo formia ollenkaan?
string-muotoinen varastopaikka?
varastopaikka='$poistaminen' ?!
Eikös sql:ssä numereettiset solut ilmoiteta ilman hipsuja ja lainausmerkkejä?
jarspa kirjoitti:
$poisto = $_POST['poisto']; foreach($poisto as $poistaminen)
Ö? Foreach haluaa taulukon, toi ei ole taulukko vaan merkkijono. Siinä ongelma.
sooda kirjoitti:
Ö? Foreach haluaa taulukon, toi ei ole taulukko vaan merkkijono. Siinä ongelma.
... <td align=center><input type=\"checkbox\" name=\"poisto[]\" value=\"$paikka\"></td> ...
Eikös se juuri olekin taulukko. :) huom:
name="poisto[]"
Lebe80 kirjoitti:
string-muotoinen varastopaikka?
varastopaikka='$poistaminen' ?!
Eikös sql:ssä numereettiset solut ilmoiteta ilman hipsuja ja lainausmerkkejä?
paikka on VARCHAR koska varastopaikka on esim. muotoa A01A, en vaan ymmärrä mikä hel... mättää. Formit on kunnossa ja sun muuta en vaan halunnut esitellä koko koodia olisi tullut aika pitkä... :)
No miten olisi debuggaaminen? SQL-lauseen tulostaminen ja/tai mahdollisten tietokannan virheiden tulostaminen?
Ai juu, en näköjään lukenut koodia tarpeeks tarkkaan. Mutta tommoinen arvojen tarkistusdebugaus on tosiaan kätevää, kannattaa tulostella (php:ssä mielestäni paras debugtyyli) ajv:n mainitsemien lisäksi nuo mysql_resultit ja kaikki muukin mistä ei voi olla varma, varmuuden vuoksi.
Joo selvis ongelma... Toi "mysql_error()" on sit hyvä juttu :)
sooda kirjoitti:
Ai juu, en näköjään lukenut koodia tarpeeks tarkkaan. Mutta tommoinen arvojen tarkistusdebugaus on tosiaan kätevää, kannattaa tulostella (php:ssä mielestäni paras debugtyyli) ajv:n mainitsemien lisäksi nuo mysql_resultit ja kaikki muukin mistä ei voi olla varma, varmuuden vuoksi.
Toinen hyvä tapa debugata on tehdä se trigger_error()-funktiolla, ja julkaisun jälkeen vain poistaa virheiden raportointi pois käytöstä.
Aihe on jo aika vanha, joten et voi enää vastata siihen.