Tietojen poistaminen

Olen tallentanut lomakkeesta tiedoston palvelimelle ja tekstin tietokantaan. Nyt haluan poistaa tämän kyseisen tekstin ja stiä vastaavan tiedoston. Tiedosto kyllä poistuu, mutta teksti ei poistu tietokannasta. Nyt on >>

if ($_REQUEST[del]) {
$teksti_lomake = $_POST['teksti_lomake'];
$teksti2;

$sql_lauseke = "delete from XXX WHERE teksti='$teksti_lomake'";

if (!$kysely2 = mysql_query($sql_lauseke,$yhteys))
{
$teksti2 = "Epäonnistui";
}
else
{
$teksti2 = "Onnistui";
}

unlink($_REQUEST[del]);
}

Tietokannassa siis nimellä teksti.
9386
Äänestä

Muut lukivat myös

Vastaukset 9

Vanhimmat

"...mutta teksti ei poistu tietokannasta."

Tuleeko virhe ja minkälainen ?

Miksi $teksti2 on määritelty alussa ?

Onko yhteys muodostettu, missään sitä ei alusteta, miksi ?

Koitas laittaa $sql_lauseke - muuttujan jälkeen
echo $sql_lauseke;, mitä tulostuu ?

Äänestä
  • Ei tule minkäänlaista virhettä. Tai koska antamani koodi on osa pitempää koodia, niin tulee ilmoitus että tiedoston poisto onnistui. Tiedosto on poistunut, mutta teksti tietokannasta ei. On yhteys muodostettu, tuo on tosiaan vaan osa koodia. Periaatteessa en tarvitsisi ilmoitusta, onnistuuko tekstin poisto kannasta. Eli tuo $teksti2 ja ilmoitus ei lopullisessa tule jäämään, kunhan molemmat poistuisi.

    Ei tulosta mitään echo $sql_lauseke; -lausekkeella. Tai edelleen tulostuu poisto onnistui.

    Äänestä

  • Auli_ kirjoitti:

    Ei tule minkäänlaista virhettä. Tai koska antamani koodi on osa pitempää koodia, niin tulee ilmoitus että tiedoston poisto onnistui. Tiedosto on poistunut, mutta teksti tietokannasta ei. On yhteys muodostettu, tuo on tosiaan vaan osa koodia. Periaatteessa en tarvitsisi ilmoitusta, onnistuuko tekstin poisto kannasta. Eli tuo $teksti2 ja ilmoitus ei lopullisessa tule jäämään, kunhan molemmat poistuisi.

    Ei tulosta mitään echo $sql_lauseke; -lausekkeella. Tai edelleen tulostuu poisto onnistui.

    tuo vertailu näin:

    $kysely2 = mysql_query($sql_lauseke,$yhteys);

    if ($kysely2)
    {
       $teksti2 = "Onnistui";
    }
    else
    {
       $teksti2 = "Epäonnistui";
    }

    Äänestä

  • Ruussi kirjoitti:

    tuo vertailu näin:

    $kysely2 = mysql_query($sql_lauseke,$yhteys);

    if ($kysely2)
    {
       $teksti2 = "Onnistui";
    }
    else
    {
       $teksti2 = "Epäonnistui";
    }

    Tuossa Ruussi koko koodi, jos löydät jotain häikkää. Tai varmasti löydät mut nimenomaan tärkeintä olis et sais ton poiston onnistumaan myös tietokannasta.

    Äänestä

  • MiMa kirjoitti:

    Tuossa Ruussi koko koodi, jos löydät jotain häikkää. Tai varmasti löydät mut nimenomaan tärkeintä olis et sais ton poiston onnistumaan myös tietokannasta.

    "$sql_lauseke = "delete from referenssit_internet WHERE teksti='$teksti_lomake'";"

    Ei hyvä, käytä ennemmin id tunnusta jolla poistat.

    "[poista]"

    Tuossa se ongelma on urlencode($file) tuo koodaa $file sisällön ja koodatussahan muodossa tietokannassa tekstiä ei ole joten mitään ei voida poistaa. Käytä http://fi2.php.net/manual/fi/function.urldecode.php joka tekee saman muotoses kuin tietokannas on.

    Äänestä

  • NEt55 kirjoitti:

    "$sql_lauseke = "delete from referenssit_internet WHERE teksti='$teksti_lomake'";"

    Ei hyvä, käytä ennemmin id tunnusta jolla poistat.

    "[poista]"

    Tuossa se ongelma on urlencode($file) tuo koodaa $file sisällön ja koodatussahan muodossa tietokannassa tekstiä ei ole joten mitään ei voida poistaa. Käytä http://fi2.php.net/manual/fi/function.urldecode.php joka tekee saman muotoses kuin tietokannas on.

    Eli id näinkö >

    $sql_lauseke = "delete from referenssit_internet WHERE id='$id'";

    Mutta osaako se id:n perusteella hakea kun lomakkeesta syötetään teksti ja tiedosto. Tiedosto siis tallennetaan palvelimelle ja teksti tietokantaan. Osaako sitten tiedostoa poistettaessa poistaa myös oikean tekstin?

    Urldecode siis vain urlencode:n tilalle? Perhana ku on jumittanut nyt tähän koko projekti ja deadline pukkaa päälle.

    Äänestä

  • Auli_ kirjoitti:

    Eli id näinkö >

    $sql_lauseke = "delete from referenssit_internet WHERE id='$id'";

    Mutta osaako se id:n perusteella hakea kun lomakkeesta syötetään teksti ja tiedosto. Tiedosto siis tallennetaan palvelimelle ja teksti tietokantaan. Osaako sitten tiedostoa poistettaessa poistaa myös oikean tekstin?

    Urldecode siis vain urlencode:n tilalle? Perhana ku on jumittanut nyt tähän koko projekti ja deadline pukkaa päälle.

    "$sql_lauseke = "delete from referenssit_internet WHERE id='$id'";"

    Kyl, tuo id tulee sit $_GET['id'] ja laitat sen varmuuden vuoks http://fi.php.net/manual/fi/function.mysql-real-escape-string.php kaut. Tämä sen takia ettei pysty tekee haitallista juttua tietokantaan.


    "Mutta osaako se id:n perusteella hakea kun lomakkeesta syötetään teksti ja tiedosto."

    Ei. Joudut syöttää myös id tunnisteen tai mielummin pelkästään sen.


    "Osaako sitten tiedostoa poistettaessa poistaa myös oikean tekstin?"

    Kyl kyl. Siis tulostat admin sivun josta saa tietoja poistaa?

    sul on kannassa

    ID | TEKSTI | JNE...
    1 | teksti | jne...
    2 | 222222 | jne...

    Tulostat linkiksi poista.php?id=1 tai miten nyt haluatkin.

    Sitten teet kyselyn
    DELETE FROM referenssit_internet WHERE id = 1

    Tämän jälkeen tietokannas on vain 2 | 222222 | jne...


    "Urldecode siis vain urlencode:n tilalle? "

    Ei. Kun tulostat selaimelle linkin niin käytät urlencode (koodaat siis erikoismerkit selaimen ymmärtämään muotoon). Kun taas käyttäjä klikkaa sitä niin laitat sen urldecode kautta ja lisäät sen kyselyysi (siis poistat tuon koodauksen). Tätähän et tartte jos teet tuol id jutul joka on parempa keino.

    Älä välitä kun kirjoitin isol tuohon SQL lauseeseen, yleisen ohjeen mukaan tietokannan omat komennot kirjoitetaan isol jolloin ne on helppo erottaa.


    ja tiesithän että linkkin
    poista.php?id=1 tieto otetaan aina $_GET['id']

    $_POST['id'] ainoostaan vain silloin jos tieto tulee lomakkeelta joka käyttää post metodia. Jos lomakkeen sisällä linkki niin se on $_GET koska se ei ole lomake vaan linkki. Jos käytät $_GET['id'] tilal $_POST['id'] niin se onkin tyhjä ei sisällä tarvittavaa tietoa. Sul on tuol koodis sekasin nämä.

    Äänestä

  • NEt55 kirjoitti:

    "$sql_lauseke = "delete from referenssit_internet WHERE id='$id'";"

    Kyl, tuo id tulee sit $_GET['id'] ja laitat sen varmuuden vuoks http://fi.php.net/manual/fi/function.mysql-real-escape-string.php kaut. Tämä sen takia ettei pysty tekee haitallista juttua tietokantaan.


    "Mutta osaako se id:n perusteella hakea kun lomakkeesta syötetään teksti ja tiedosto."

    Ei. Joudut syöttää myös id tunnisteen tai mielummin pelkästään sen.


    "Osaako sitten tiedostoa poistettaessa poistaa myös oikean tekstin?"

    Kyl kyl. Siis tulostat admin sivun josta saa tietoja poistaa?

    sul on kannassa

    ID | TEKSTI | JNE...
    1 | teksti | jne...
    2 | 222222 | jne...

    Tulostat linkiksi poista.php?id=1 tai miten nyt haluatkin.

    Sitten teet kyselyn
    DELETE FROM referenssit_internet WHERE id = 1

    Tämän jälkeen tietokannas on vain 2 | 222222 | jne...


    "Urldecode siis vain urlencode:n tilalle? "

    Ei. Kun tulostat selaimelle linkin niin käytät urlencode (koodaat siis erikoismerkit selaimen ymmärtämään muotoon). Kun taas käyttäjä klikkaa sitä niin laitat sen urldecode kautta ja lisäät sen kyselyysi (siis poistat tuon koodauksen). Tätähän et tartte jos teet tuol id jutul joka on parempa keino.

    Älä välitä kun kirjoitin isol tuohon SQL lauseeseen, yleisen ohjeen mukaan tietokannan omat komennot kirjoitetaan isol jolloin ne on helppo erottaa.


    ja tiesithän että linkkin
    poista.php?id=1 tieto otetaan aina $_GET['id']

    $_POST['id'] ainoostaan vain silloin jos tieto tulee lomakkeelta joka käyttää post metodia. Jos lomakkeen sisällä linkki niin se on $_GET koska se ei ole lomake vaan linkki. Jos käytät $_GET['id'] tilal $_POST['id'] niin se onkin tyhjä ei sisällä tarvittavaa tietoa. Sul on tuol koodis sekasin nämä.

    Nyt on ensin:

    $kysely = mysql_query("SELECT * FROM referenssit_internet",$yhteys);
    for($i = 0; $i < mysql_num_rows($kysely); $i ){
    $id = mysql_result($kysely,$i,0);
    }

    $filelist .= "[poista]";

    Ja poisto:

    $poisto = $_GET['id'];
    mysql_query("delete from referenssit_internet WHERE id='$poisto'",$yhteys);
    unlink($_REQUEST[del]);

    Hakee id:n linkkiksi, mutta ei osaa nyt poistaa tiedostoa eikä tekstiä. Jotain häikkää?

    Äänestä

  • Auli_ kirjoitti:

    Nyt on ensin:

    $kysely = mysql_query("SELECT * FROM referenssit_internet",$yhteys);
    for($i = 0; $i < mysql_num_rows($kysely); $i ){
    $id = mysql_result($kysely,$i,0);
    }

    $filelist .= "[poista]";

    Ja poisto:

    $poisto = $_GET['id'];
    mysql_query("delete from referenssit_internet WHERE id='$poisto'",$yhteys);
    unlink($_REQUEST[del]);

    Hakee id:n linkkiksi, mutta ei osaa nyt poistaa tiedostoa eikä tekstiä. Jotain häikkää?

    "for($i = 0; $i < mysql_num_rows($kysely); $i ){
    $id = mysql_result($kysely,$i,0);
    }"

    Tutustuppas http://fi.php.net/manual/fi/function.mysql-fetch-assoc.php tuota keinoa kannattaa ennemmin käyttää linkkien tulostamiseen selvemp. Ja tähteä EI kyselyssä käytetä muutakuin testivaihees, se hakee kaik sarakkeet vaik tarttetkin vain yhtä.


    "$poisto = $_GET['id'];
    mysql_query("delete from referenssit_internet WHERE id='$poisto'",$yhteys);"

    Kyl tuon pitäisi poistaa. Muuta tuo SELECT kyselyksi ja katso mitä palauttaa.

    "unlink($_REQUEST[del]);"
    Ei toimi koska $_REQUEST[del] on tyhjä.


    Teeppäs tämmönen linkki
    poista_internet.php?id=$id&tiedosto=$tiedosto

    Sit käytät $id tietokannast poistamiseen ja $tiedosto tiedoston poistamiseen.


    Koodisi on kyl ihmeellistä. for-loopissa käyt kaik läpi mitä tietokannasta saat, mutta tulostatkin vain vikan rivin, kun $filelist loopin ulkopuolel.

    Äänestä

Kommentoi aloitusta


Auli_ kirjoitti:

Olen tallentanut lomakkeesta tiedoston palvelimelle ja tekstin tietokantaan. Nyt haluan poistaa tämän kyseisen tekstin ja stiä vastaavan tiedoston. Tiedosto kyllä poistuu, mutta teksti ei poistu tietokannasta. Nyt on >>

if ($_REQUEST[del]) {
$teksti_lomake = $_POST['teksti_lomake'];
$teksti2;

$sql_lauseke = "delete from XXX WHERE teksti='$teksti_lomake'";

if (!$kysely2 = mysql_query($sql_lauseke,$yhteys))
{
$teksti2 = "Epäonnistui";
}
else
{
$teksti2 = "Onnistui";
}

unlink($_REQUEST[del]);
}

Tietokannassa siis nimellä teksti.

Anonyymi
5000

Ilmoita asiaton sisältö

  • Sisältää materiaalia, joka on loukkaavaa, herjaavaa, rasistista, uhkailevaa tai ahdistelevaa.

  • Materiaali sisältää nimiä, yhteystietoja tai muita henkilökohtaisia tietoja. Julkisuuden henkilöistä, julkisissa viroissa toimivista ihmisistä sekä yritysten vastuuhenkilöistä saa keskustella työhön liittyen. Myös yksityiselämään liittyvistä asioista voi keskustella siltä osin, kuin niistä on julkisesti kerrottu.

  • Sisältää lapsille haitallista tai heiltä kiellettyä materiaalia. Seksuaalinen sisältö on sallittua aiheeseen tarkoitetuilla palstoilla, joiden ikäraja on 18 vuotta.

  • Lainvastaista sisältöä voi olla mm. yksityiselämää loukkaavan tiedon levitys, kiihottaminen kansanryhmää vastaan, laiton uhkaaminen, alaikäisiin liittyvä seksuaalinen sisältö/grooming, petokset, identiteettivarkaudet, kunnianloukkaukset ja tekijänoikeusrikkomukset.

  • Sisältö ei liity palstan tai keskusteluketjun aiheeseen.

  • Viesti ei ole suomea tai ruotsia (pl. International Forums), se sisältää mainontaa, se sisältää tekijänoikeuksin suojattua materiaalia, se on massapostitus tai jokin muu syy.

Jaa keskustelu