Hei,
tarttis saada alla oleva koodi toimimaan siten että linkkiä napsauttamalla avataan muokkauslomake...vai kannattaisko vanhojen tietojen muokkaus totetuttaa jollain muulla tavoin? Samalla tavoin voisi toteuttaa myös tietueen poiston tietokannasta.
t.Marko
<html> <head><title>ASIAKASTIETOKANTA</title></head> <body> <h1>ASIAKKAAT</h1> <?php // otetaan yhteys tietokantaan mysql_connect("", "", "") or die(mysql_error()); mysql_select_db(""); // jos haetaan yhden henkilön tietoja if ($_GET["ID"]) { $kysely = "SELECT DATE_FORMAT(jatetty,'%e.%c.%Y %T'), SUKUNIMI, ETUNIMI, OSOITE, RAPPU, HUONE, POSTINUMERO, POSTIPAIKKA, ORGANISAATIO, EMAIL, PUHELIN". " FROM tbl_customers". " WHERE ID='$_GET[ID]'"; if ($tulos = mysql_query($kysely)) { list($jat, $SUKUNIMI, $ETUNIMI, $OSOITE, $RAPPU, $HUONE, $POSTINUMERO, $POSTIPAIKKA, $ORGANISAATIO, $EMAIL, $PUHELIN) = mysql_fetch_row($tulos); ?> <p> Nro: <?= $_GET["ID"] ?><br> Päivitetty viimeksi: <?= $jat ?><br> Nimi: <?= $SUKUNIMI ?> <?= $ETUNIMI ?> <br> Osoite:<?= $OSOITE ?> <?= $RAPPU ?> <?= $HUONE ?><br> Organisaatio:<?= $ORGANISAATIO ?><br> Postitoimipaikka: <?= $POSTINUMERO ?> <?= $POSTIPAIKKA ?><br> Sähköposti: <?= $EMAIL ?><br> Puhelin: <?= $PUHELIN ?><br> </p> <?php } else { echo "<p>Rekisteritietoja ei löydy!</p>"; } echo "<p><a href=\"customers_list.php\">Listaa kaikki</a></p>"; echo "<p><a href=\"customers_add.php\">Lisää uusi asiakastieto</a></p>"; } else { // muussa tapauksessa haetaan lista echo "<p>\n"; $kysely = "SELECT ID, SUKUNIMI, ETUNIMI, ORGANISAATIO, OSOITE FROM tbl_customers". " ORDER BY SUKUNIMI"; if ($tulos = mysql_query($kysely)) { while (list($IN, $SUKUNIMI, $ETUNIMI, $ORGANISAATIO, $OSOITE) = mysql_fetch_row($tulos)) { echo "<a href=\"customers_list.php?ID=$IN\">$SUKUNIMI | $ETUNIMI | $ORGANISAATIO| $OSOITE </a><br>\n"; } } else { echo "Listan haku ei onnistunut!"; } echo " <p><a href=\"customers_add.php\">Lisää uusi yhteystieto</a></p>\n"; } ?> </body> </html>
Sulla näyttää tuo jo olevan aika hyvällä mallilla. Nyt vaan tulostat nuo tiedot lomakkeelle normi dokumentin sijasta. Eli tyyliin
<form action="customer_list.php?act=update" method="post"> Nro: <input type="text" name="id" value="<?php echo $_GET["ID"] ?>" /><br /> Päivitetty viimeksi: <input type="text" name="paivitetty" value="<?php echo $jat ?>" /><br /> jne.. </form>
Mut aika harvoin tuo ID on päivitettävä tieto, et mietippä tarkkaan haluatko senkin tuohon lomakkeelle päivitettäväksi.
thanks, ei tuota id:tä tarttis päivitellä vaan tähän id:hen liittyvää dataa. t.Marko
marvist kirjoitti:
thanks, ei tuota id:tä tarttis päivitellä vaan tähän id:hen liittyvää dataa. t.Marko
tuon id:n perusteella voit muokata kyseistä dataa UPDATE komennollolla. :D tai REPLACE INTO komennolla, jolloin tietokannassa id:n täytyy olla uniikki. Jos kyseistä arvoa (id) ei ole tietokannassa luodaan uusi, muussa tapauksessa korvataan vanha.
Sitten teet tuolle sivulle vielä pudotusvalikon, missä henkilöt on ja kun henkilön valitsee valikosta, täyttyy sen mukaan kentät.
Joskus taistelin pudotusvalikon kanssa ja sain näiltä sivuilta tämmöisen avun.
https://www.ohjelmointiputka.net/keskustelu/
sain tuon muokkauslomakkeen toimimaan. listalta napsautetaan nimilinkkiä jne...mutta teenkö tuon update kyselyn erilliseen php tiedostoon?
nyt käyttämäni form action viittaa tiedostoon update.php, mutta en saa sitä toimimaan....
Ise tykkään enemmänkin tehdä esimerkiksi tällä tavalla:
Tarkistat onko siitä pudotusvalikosta valittu henkilö ja vaihdat sen mukaan komentoa.
Jos henkilöä ei ole valittu :
INSERT INTO
Jos taas on valittu niin vaihdat if rakenteella kyselyyn
UPDATE ja WHERE komennot
Tai sitten käytät yksinkertaisesti REPLACE INTO komentoa ja määräät tietokantaan uniikit tiedot joiden mukaan tuo REPLACE toimii.. Muussa tapauksessa se lisää uuden.
Huonosti selitetty, mutta GOOGLETA niin saat lisää infoa.
Hei,
tässä update.php jolla koitin mutta ei vaan päivitä kantaa?
<? // otetaan yhteys tietokantaan mysql_connect("localhost", "nnnnn", "nnnn") or die(mysql_error()); mysql_select_db("nnnnn") or die( "Unable to select database"); $query="UPDATE tbl_customers SET etunimi='$etunimi', sukunimi='$sukunimi' WHERE uid_id='$id'"; //$query="REPLACE INTO tbl_customers VALUES (etunimi='$etunimi', sukunimi='$sukunimi' WHERE id='$id'); sukunimi='$sukunimi' WHERE id='$id'"; //mysql_query(" UPDATE tbl_customers SET etunimi='$etunimi' ,sukunimi='$sukunimi' WHERE id='$id'"); mysql_query($query); echo "Record Updated"; mysql_close(); ?>
Ja tuo id on varmasti tekstikenttä (kun kerran haet WHERE Id='xxx'). Kannattaa kokeilla tulostaa tuo rivi (echo $query) ja katsoa miltä se näyttää.
..en tiedä oliko echo haku ok mutta tuotti tämän tuloksen:
UPDATE tbl_itcustomers SET etunimi='', sukunimi='' WHERE ID=NULL
eli olisiko ongelma sittenkin tämä formi pätkä:
<form action="updated1.php?act=update" method="post"> Nro: <input type="text" name="id" value="<?php echo $_GET["ID"] ?>" /><br /> Päivitetty viimeksi: <input type="text" name="paivitetty" value="<?php echo $jat ?>" /><br /> Sukunimi: <input type="text" name="Sukunimi" value="<?php echo $SUKUNIMI ?>" /><br /> Etunimi: <input type="text" name="Etunimi" value="<?php echo $ETUNIMI ?>" /><br /> <td> <input type="submit" value="Tallenna tiedot tietokantaan"><br> <input type="reset" value="Tyhjennä"> </td> </form>
Grez kirjoitti:
Ja tuo id on varmasti tekstikenttä (kun kerran haet WHERE Id='xxx'). Kannattaa kokeilla tulostaa tuo rivi (echo $query) ja katsoa miltä se näyttää.
int(11) autoincrement elikkäs koitin ottaa hipsuja pois mutta ei vaikutusta...
No selvästikin jos kyselysi sanoo UPDATE {blaablaa} WHERE {kenttä}=NULL niin se ei varmasti tee yhtään mitään, koska vertailu {kenttä}=NULL on aina epätosi.
Voisin sanoa, että et alusta muuttujaa $id missään vaiheessa etkä kyllä noita $etunimi ja $sukunimi muuttujiakaan. En sit tiedä jos käytät autoglobalsia (jossa tapauksessa: hyihyi).
ok. Aloittelijana en tunne vielä kaikkia php ominaisuuksia. Joka tapauksessa tavoitteena on:
1. listata taulun yhteystiedot sukunimen mukaan aakkostettuna
siten että listan nimet tulostuvat linkkeinä --> ratkaistu
2. linkkiä napsautettaessa avautuu muokkauslomake, jonne voidaan kirjoittaa halutut muutokset --> ratkaistu
3. Tallenna tai Päivitä -painiketta napsautettaessa saadaan päivitettyä tietokantataulu. --> ratkaisematta
Nyt siis tuo id tieto ei siirry update kyselyn käyttöön. Käyn tänään läpi yhden vastaavan esimerkin ja kun löydän vastauksen laitan ratkaisun asap myös tänne :)
Aihe on jo aika vanha, joten et voi enää vastata siihen.