Toisen lomakkeen päivitys aliohjelmasta

Vielä yksi ongelma. Edelleen sivuilla on kehysrakenne. Vasemmanpuoleisessa kehyksessä on asiakkaan muokkaus menossa, oikealla kirjautumislomake joka näyttää joko kirjautuneen asiakkaan tiedot tai kirjautumislomakkeen.

Kun vasemmanpuoleisessa kehyksessä tehty asiakkaan poisto on suoritettu, pitäisi kutsua oikealla olevaa kirjautumislomaketta päivittymään. Tällöin se näkee, että session on loppunut ja täytyy näyttää kirjautumislomake.

Miten siis aiheutetaan kehysrakenteessa toisen lomakkeen päivitys aliohjelmasta käsin?
8341
Äänestä

Muut lukivat myös

Vastaukset 8

Vanhimmat

En ihan ymmärtänyt minkälaista haluat, mutta kelpaiskos taas se target?

siis vasemmalla linkki jne... poista_käyttäjä.php joka poistaa käyttäjän ja header functiolla hakee xxx.php sivun näkyviin oikeaan frameen.

Tai vaihtoehtoisesti vasemmalla linkki xxx.php?t=poista jolloin xxx.php poistaa käyttäjän ja näyttää kirjaantumis lomakkeen. Tolla ? jälkeen tulevalla on helppo sanoa mitä pitää tehdä ja näyttää, tarkistat vain ehtolauseella (esim if) mitä halutaan $_GET['x'] ja sit laitat scriptin toimimaan sen mukaan.


Tässä on nopeesti naputeltu testaamaton esimerkki


if ($_GET['t'] == 'poista') {

   if (poista_käyttäjä()) { // poistaminen onnistu
      header("Location: /index.php");
   }


   else echo 'poistaminen epäonnistu';

}

tässä sit muuta löpinää

ton laitat siihen xxx.php ja kutsut tota xxx.php?t=poista


Tai jos haluat tehdä poista_käyttäjä.php niin silloin vaikkapa tähän tapaan.

if (poista_käyttäjä() && $_GET['t'] == 'poista') { // poistaminen onnistu
      header("Location: /index.php");
   }


   else echo 'poistaminen epäonnistu';





Molemmissa poista_käyttäjä()-functio palauttaa true jos onnistu, false jos epäonnistu poistaminen.

Äänestä
  • Yritin soveltaa neuvojasi työhöni, mutta huonoin tuloksin. Tuossa on se paikka, jossa minulla on ongelma:

    //poistetaan asiakastiedot
    $sql = "delete from ".DBTABLE." where a_id = ".$_SESSION['a_id'];
    if(mysql_query($sql, $link))
    {
    print "Asiakastietojen poisto onnistui";
    session_unset(); // Poistetaan istunnon tiedot
    session_destroy(); // Tuhotaan istunto
    header("location: kirjautuminen.php");
    }

    Tämä on siis vasemmassa kehyksessä oleva asiakasmuokkaus.php. Laitoin tuon ehdottamasi header- käskyn paikkaan, jossa kirjautuminen.php lomake kehyksen oikealla puolella tulisi päivittää. Näin koodattuna kirjautuminen.php -lomake päivittyy kuitenkin vasempaan kehykseen, tietysti koska target määritystä ei ole. Sitä ei voi asiakasmuokkaus.php -lomakkeeseen laittaa, koska muuten kaikki lomakkeella tehtävät jutut ja ilmoitukset esiintyvät oikeanpuoleisessa kehyksessä.

    Osaatko sanoa mitä minun täytyy tehdä, että tuo header -komento tapahtuu juuri oikeaan kehyksenpuoliskoon. Toinen vaihtoehto on, että koko kehysrakenne päivittyisi.

    Äänestä

  • Juunu kirjoitti:

    Yritin soveltaa neuvojasi työhöni, mutta huonoin tuloksin. Tuossa on se paikka, jossa minulla on ongelma:

    //poistetaan asiakastiedot
    $sql = "delete from ".DBTABLE." where a_id = ".$_SESSION['a_id'];
    if(mysql_query($sql, $link))
    {
    print "Asiakastietojen poisto onnistui";
    session_unset(); // Poistetaan istunnon tiedot
    session_destroy(); // Tuhotaan istunto
    header("location: kirjautuminen.php");
    }

    Tämä on siis vasemmassa kehyksessä oleva asiakasmuokkaus.php. Laitoin tuon ehdottamasi header- käskyn paikkaan, jossa kirjautuminen.php lomake kehyksen oikealla puolella tulisi päivittää. Näin koodattuna kirjautuminen.php -lomake päivittyy kuitenkin vasempaan kehykseen, tietysti koska target määritystä ei ole. Sitä ei voi asiakasmuokkaus.php -lomakkeeseen laittaa, koska muuten kaikki lomakkeella tehtävät jutut ja ilmoitukset esiintyvät oikeanpuoleisessa kehyksessä.

    Osaatko sanoa mitä minun täytyy tehdä, että tuo header -komento tapahtuu juuri oikeaan kehyksenpuoliskoon. Toinen vaihtoehto on, että koko kehysrakenne päivittyisi.

    window.open ottaa parametriksi ikkunan nimen. Jos sen niminen ikkuna on jo, niin se avaa sisällön sinne. Tällöin voisi käyttää tarkettia ja toisen framen muokkaukseen window.open

    Äänestä

  • Juunu kirjoitti:

    Yritin soveltaa neuvojasi työhöni, mutta huonoin tuloksin. Tuossa on se paikka, jossa minulla on ongelma:

    //poistetaan asiakastiedot
    $sql = "delete from ".DBTABLE." where a_id = ".$_SESSION['a_id'];
    if(mysql_query($sql, $link))
    {
    print "Asiakastietojen poisto onnistui";
    session_unset(); // Poistetaan istunnon tiedot
    session_destroy(); // Tuhotaan istunto
    header("location: kirjautuminen.php");
    }

    Tämä on siis vasemmassa kehyksessä oleva asiakasmuokkaus.php. Laitoin tuon ehdottamasi header- käskyn paikkaan, jossa kirjautuminen.php lomake kehyksen oikealla puolella tulisi päivittää. Näin koodattuna kirjautuminen.php -lomake päivittyy kuitenkin vasempaan kehykseen, tietysti koska target määritystä ei ole. Sitä ei voi asiakasmuokkaus.php -lomakkeeseen laittaa, koska muuten kaikki lomakkeella tehtävät jutut ja ilmoitukset esiintyvät oikeanpuoleisessa kehyksessä.

    Osaatko sanoa mitä minun täytyy tehdä, että tuo header -komento tapahtuu juuri oikeaan kehyksenpuoliskoon. Toinen vaihtoehto on, että koko kehysrakenne päivittyisi.

    Onko ton poistojutun pakko olla lomakkeessa, eikös pelkkä linkki kelpaisi jolloin se onnistuisi helposti?

    Tai sit teet poistonapille oman formin jossa on target määre, tai sitten javascriptillä teet target määreen mikäli poistojuttu valitaan, tosin tämä ratkaisu ei toimi niillä keillä on javasript poispäältä.


    Tai sitten yksvaihtoehto olis, että päivität poistonjälkeen ton vasemman framen ja lisäätkin koodiin meta-refresh ja siihen target määreen, että päivittää heti koko kehyksen (en varma tukeeko meta, myös target määrettä, ellei niin javasrcriptillä onnistuu)

    Tai sitten ehkä parhain keino jos haluat yhdellä lomakkeella hoitaa kaiken, poiston jälkeen tulostat vasempaan frameen painikkeen/linkin jossa käsketään käyttäjän kirjaantumaan ulos, klikkaaminen päivittää sit koko framen.

    Tai jos et käyttäisikään frameja ollenkaan, silloinhan ongelmaa ei olisi.


    Header-functiolla ei voi mitenkään määrätä mihkä sivu aukeaa, se aukeaa joko siihen ikkunaan(frameen) tai sitten siihen mihkä on targetilla määritelty.

    Äänestä

  • ------- kirjoitti:

    Onko ton poistojutun pakko olla lomakkeessa, eikös pelkkä linkki kelpaisi jolloin se onnistuisi helposti?

    Tai sit teet poistonapille oman formin jossa on target määre, tai sitten javascriptillä teet target määreen mikäli poistojuttu valitaan, tosin tämä ratkaisu ei toimi niillä keillä on javasript poispäältä.


    Tai sitten yksvaihtoehto olis, että päivität poistonjälkeen ton vasemman framen ja lisäätkin koodiin meta-refresh ja siihen target määreen, että päivittää heti koko kehyksen (en varma tukeeko meta, myös target määrettä, ellei niin javasrcriptillä onnistuu)

    Tai sitten ehkä parhain keino jos haluat yhdellä lomakkeella hoitaa kaiken, poiston jälkeen tulostat vasempaan frameen painikkeen/linkin jossa käsketään käyttäjän kirjaantumaan ulos, klikkaaminen päivittää sit koko framen.

    Tai jos et käyttäisikään frameja ollenkaan, silloinhan ongelmaa ei olisi.


    Header-functiolla ei voi mitenkään määrätä mihkä sivu aukeaa, se aukeaa joko siihen ikkunaan(frameen) tai sitten siihen mihkä on targetilla määritelty.

    ..taas kerran vastauksista. Päädyin lopulta laittamaan sen asiakaspoistonamikan samalle lomakkeelle jonka päivitys tuotti ongelmia. Myönnän, kehysrakenne ei ole oikein kätevä tässä hommassa.

    Äänestä

hiukan kyllä jaksaa ihmetyttää tuo frame-rakenne. onko sen käytölle jotain perustelua.

kun tekee sivuston ilman frame-virityksiä, ei tarvitse taistella targettien tahi javascriptien kanssa...

ihan vain vinkkinä tulevaisuutta varten.. voit korvata frame-rakenteen esimerkiksi php:n include-toiminnolla..

Äänestä
  • ..meidän (hölmö) php:n opettaja ei kertonut mitään tuosta ihanuudesta. Eilen luin includesta, mutta koska aion saada työn huomiseksi valmiiksi en jaksa enää muuttaa koko sivujen rakennetta.

    Äänestä

  • Juunu kirjoitti:

    ..meidän (hölmö) php:n opettaja ei kertonut mitään tuosta ihanuudesta. Eilen luin includesta, mutta koska aion saada työn huomiseksi valmiiksi en jaksa enää muuttaa koko sivujen rakennetta.

    Jotenkin ihmetyttää, en tosin ole itse ollut koskaan php-tunnilla, mutta luulisi includen olevan ensinmäisiä functioita mitkä opetetaan.

    Äänestä

Kommentoi aloitusta


Juunu kirjoitti:

Vielä yksi ongelma. Edelleen sivuilla on kehysrakenne. Vasemmanpuoleisessa kehyksessä on asiakkaan muokkaus menossa, oikealla kirjautumislomake joka näyttää joko kirjautuneen asiakkaan tiedot tai kirjautumislomakkeen.

Kun vasemmanpuoleisessa kehyksessä tehty asiakkaan poisto on suoritettu, pitäisi kutsua oikealla olevaa kirjautumislomaketta päivittymään. Tällöin se näkee, että session on loppunut ja täytyy näyttää kirjautumislomake.

Miten siis aiheutetaan kehysrakenteessa toisen lomakkeen päivitys aliohjelmasta käsin?

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