Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: Muokkauslomake PHP:llä

Sivun loppuun

marvist [30.07.2007 02:03:45]

#

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>

ajv [30.07.2007 07:46:44]

#

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.

marvist [08.08.2007 00:07:00]

#

thanks, ei tuota id:tä tarttis päivitellä vaan tähän id:hen liittyvää dataa. t.Marko

Vasta_alkaja [08.08.2007 08:12:12]

#

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/13677-pudotusvalikko-php-llä

marvist [23.08.2007 21:45:47]

#

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....

Vasta_alkaja [26.08.2007 16:05:32]

#

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.

marvist [27.08.2007 00:49:14]

#

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();
?>

Grez [27.08.2007 01:18:58]

#

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ää.

marvist [27.08.2007 09:27:31]

#

..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>

marvist [27.08.2007 14:42:01]

#

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...

Grez [27.08.2007 19:58:49]

#

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).

marvist [27.08.2007 20:51:48]

#

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 :)


Sivun alkuun

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta