Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: Tietokannan editointi

skydesign [01.09.2006 12:01:40]

#

Moi
Koodi henkhaku.php tulostaa kaikki avainsanan sisältämät tietueet. Miten tietueita pääsisi editoimaan eli haluaisin jokaisen tulostuvan tietueen perään EDIT nappulan jota klikkaamalla tietuetta pääsisi muokkaamaan. Muokkaukseen löysin/editoin tiedoston editlomake.php
Millä koodirimsulla nämä saisi linkitettyä toisiinsa.

henkhaku.php

<p>
   Osoite haku<br />
   <form action="henkhaku.php" method="post">
      Syötä hakusana:<br />
      <input type="text" name="keyword" size="20" maxlength="40" value="" /><br />
      <input type="submit" value="Etsi">
   </form>
</p>

<?php
 echo "<html><body>";

   // If the form has been submitted with supplied keyword
   if (isset($_POST['keyword'])) {

      // Connect to server and select database

      $yhteys = mysql_connect("localhost","root","kirja") or die ("ei yhteyttä");
      mysql_select_db("kanta", $yhteys) or die ("tietokantaa ei löydy");
      $keyword = $_POST['keyword'];
      $keyword = utf8_encode($keyword);

      // haetaan tiedot

      $kysely = ("SELECT *
FROM `kanta`.`employee`
WHERE `lastname` LIKE CONVERT( _utf8 '%$keyword%'
USING latin1 )
COLLATE latin1_general_ci
OR `firstname` LIKE CONVERT( _utf8 '%$keyword%'
USING latin1 )
COLLATE latin1_general_ci
OR `email` LIKE CONVERT( _utf8 '%$keyword%'
USING latin1 )
COLLATE latin1_general_ci");

// suoritetaan kysely
$haku = mysql_query($kysely, $yhteys) or die ("virhe kyselyssä");


//luetellaan osoitteet
for ($i = 0; $i <mysql_num_rows($haku); $i++){
//haetaan yhteystiedot muuttujiin
$lastname = mysql_result ($haku, $i, "lastname");
$firstname = mysql_result ($haku, $i, "firstname");
$email = mysql_result ($haku, $i, "email");

//tulostetaan osoitteet

echo "<b>sukunimi:</b> $lastname<br>
      <b>etunimi:</b> $firstname<br>
      <b>osoite:</b> $email<p>";

      }
   }

?>

editlomake.php

<form action="<?php echo $_SERVER['PHP_SELF'];?>" method="post">
   <p>
      Sukunimi:<br />
      <input type="text" name="lastname" size="25" maxlength="25"
      value="<?php echo $lastname; ?>" />
   </p>

   <p>
      Etunimi:<br />
      <input type="text" name="firstname" size="25" maxlength="25"
      value="<?php echo $firstname: ?>" />

   <p>
      Osoite:<br />
      <textarea name="email" rows="5" cols="30">
      <?php echo $email; ?>"</textarea>
   </p>

   </p>

</form>

<?php

   // If the submit button has been pressed
   if (isset($_POST['submit'])) {

      $lastname = $_POST['lastname'];
      $firstname = $_POST['firstname'];
      $email = $_POST['email'];

      // Insert the product information into the product table
      $haku = "UPDATE employee SET lastname='$lastname', firstname='$firstname', email='$email'";
      $result = mysql_query($haku);

      // Display an appropriate message
      if ($result) echo "<p>Tiedon päivitys onnistui </p>";
      else echo "<p>Tiedon päivitys ei onnistunut.</p>";


   }


?>

Kiitos ja kumarrus kaikille.

Lebe80 [01.09.2006 12:31:41]

#

No laitat jokaisen tiedon perään edit-nappulan, jonka linkin yhtenä get-parametrinä on vaikka id-numero (auto increment) mikä yksilöi rivin. Sitten "editointisivulla" tarkistat mikä id-numero on lähetetty urlin mukana ja haet kannasta sen rivin.

skydesign [01.09.2006 14:07:10]

#

Kiitos ja jatkokysymys. Kirjoitin seuraavanlaisen taulun

CREATE TABLE employee (
staffID SMALLINT NOT NUL AUTO_INCREMENT,
lastname VARCHAR (15) NOT NULL,
firstname VARCHAR (25)NOT NULL,
email VARCHAR (25)NOT NULL,
PRIMERY KEY(staffID));

Millä tuon ID saa ohitettua tietoa lisättäessä eli sen saa automaattisesti kasvavaksi. Ongelmia seuraavan tyyppisessä käskyssä.

INSERT INTO `employee` VALUES ('Mikä', 'Mies', 'Mikätie 9 c 14 00200 Helsinki');

Lebe80 [01.09.2006 14:12:04]

#

INSERT INTO employee SET lastname="Sukunimi", etunimi="Etunimi", email="info@firma.com"

ja

UPDATE employee SET lastname="Sukunimi", etunimi="Etunimi", email="info@firma.com" WHERE staffId=2

Vastaus

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

Tietoa sivustosta