Minulla on tiedosto, jossa haetaan tietokannasta ja laitetaan "Poista"-nappi perään, jotta siitä olisi mahdollista saman tien poistaa tieto. Mutta en saa sitä toimimaan.
Tiedosto jossa haetaan on muotoa:
<?php require "funktiot.php"; $yhteys = AvaaTietokanta(); if (!$kysely = mysql_query("select Henkilon_nimi from Henkilo order by Henkilon_nimi",$yhteys)) { print "<LI>Haku epäonnistui!"; } else { while ($linkki = mysql_fetch_row($kysely)) { print "<LI>"; print " "; print $linkki[0] . "</A>"; print "<INPUT TYPE = submit NAME = \"toiminto\" VALUE =Poista>"; } } ?>
Ja post actionissa on tiedosto.php, ja on muotoa:
<?php require "funktiot.php"; $yhteys = AvaaTietokanta(); if ($toiminto == "Poista") { $sql_lauseke = "delete from Henkilo where Henkilon_nimi = Henkilon_nimi"; if (!$kysely = mysql_query($sql_lauseke,$yhteys)) { $sivunotsikko = "Poisto epäonnistui! "; $teksti = "Virhe: " . mysql_error(); } else { $sivunotsikko = "Henkilon tiedot poistettu tietokannasta."; $teksti = "Poisto onnistui."; } } ?>
Tiedän että virhe on SQL:n delete lauseessa ja juuri tuossa "where Henkilon_nimi = Henkilon_nimi", mikä tuohon toiseen Henkilon_nimi kohtaan pitää laittaa jotta se osaisi poistaa juuri oikean. Jos siihen laitta 'Joku henkilo', eli jonkun tietokannassa olevan henkilon niin toimii, mutta ei muuten.
Kiitos
Yrität suorittaa lausetta "delete from Henkilo where Henkilon_nimi = Henkilon_nimi"; , pitäisi olla = "delete from Henkilo where Henkilon_nimi = " + Henkilon_nimi ;
+ :llä merkkasin vakio-osan ja muuttujan yhdistelyn, en nääs tunne oikein php:tä ...Ymmärtänet kuitenkin ajatuksen
Lisäksi se nimi pitäisi laittaa vielä hipsuihin tai lainausmerkkeihin. Eli kokonaisuus pitäisi olla
$sql_lauseke = "delete from Henkilo where Henkilon_nimi = '" . Henkilon_nimi . "'";
No totta mooses, hipsut unohtuivat. Hmm, entäpäs jos sen muuttujan arvo onkin näin Henkilon_nimi='"Pekka Lipponen"' ?
BTW, miksi nuo pisteet : '" . Henkilon_nimi . "'" ? Menee nyt kyllä vähän alkuperäisen aiheen ohi,mutta asia kiinnostaa.
mike patto kirjoitti:
miksi nuo pisteet : '" . Henkilon_nimi . "'" ?
No siksi, kun piste nyt sattuu olemaan merkkijonojen yhdistysoperaattori PHP:ssä.
Ok, tämä selvä. Kuten sanoin en ole mikään php-guru, enempi DBA ...
DBA:n pitäisi tietää miksi hipsut ja mitä tapahtuu kun arvo onkin vaikka "Ville Virtanen".
DBA tietää kyllä hipsut ja niiden merkityksen, ajattelinkin lähinnä herättää alkuperäisen kysyjän miettimään asiaa. SQL:llä on, kuten varmasti hyvin tiedät, mahdollista tehdä kaikenlaista mielenkiintoista. Mieleikuvitus on monesti suurin rajoite.
Tehtäviini DBA:na ei muuten juurikaan kuulu ohjelmointi vaan tietokantojen asennukset, toimivuuden seuranta, ohjelmistojen tekijöiden opastus jne.
Aihe on jo aika vanha, joten et voi enää vastata siihen.