Lines (file_put_contents)

ionic 03.10.05 08:46

PHP script for add, edit or delete lines in file..

 Tekstiversio  Arvo: 1 (7 ääntä)  Äänestä: +  -
<?php
if (!function_exists('file_put_contents')) die("'file_put_contents' function is not available on this server!");
function addline ($text, $file) {
 $handle = fopen($file, "a");
 fwrite($handle, "$text\r\n");
 fclose($handle);
}
function editline ($line, $text, $file) {
 $data = file($file);
 $data[$line] = "$text\r\n";
 file_put_contents($file, implode("", $data));
}
function deleteline ($line, $file) {
 $data = file($file);
 unset($data[$line]);
 $handle = fopen($file, "w");
 foreach($data as $row) {
  fputs($handle, $row);
 }
 fclose($handle);
}
if ($_POST['action'] == "add" && !empty($_POST['value'])) addline($_POST['value'], "data.dat");
if ($_POST['action'] == "edit") editline($_POST['line'], $_POST['value'], "data.dat");
if (isset($_GET['delete'])) deleteline($_GET['delete'], "data.dat");
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
 <head>
  <title>Lines (file_put_contents)</title>
  <style type="text/css">
   body { cursor: default; font-family: Verdana, Geneva, Helvetica, sans-serif;; font-size: 11px; color: #000; background: #fff; }
   h1 { font-size: 18px; }
   table { border: 1px solid #9e9e9e; font-family: Fixedsys; font-size: 9px; padding: 4px; }
   a, a:visited { text-decoration: none; color: #9e9e9e; }
   a:hover { text-decoration: none; color: #000; }
  </style>
 </head>
 <body>
  <div class="header">
   <h1>Lines</h1>
   <p>PHP script for add, edit or delete lines in file..</p>
  </div>
  <div class="controls">
   <div class="add">
    <form action="<?php print $_SERVER['PHP_SELF']; ?>" method="post">
     <input type="hidden" name="action" value="add" />
     <input type="text" name="value" />
     <input type="submit" value="Add" />
    </form>
   </div>
   <div class="edit">
    <form action="<?php print $_SERVER['PHP_SELF']; ?>" method="post">
     <input type="hidden" name="action" value="edit" />
<?php if (isset($_GET['edit'])) print "     <input type=\"hidden\" name=\"line\" value=\"".$_GET['edit']."\" />\n"; ?>
     <input type="text" name="value"<?php if (isset($_GET['edit'])) { $data = file("data.dat"); print " value=\"".$data[$_GET['edit']]."\""; } else { print " disabled=\"disabled\""; } ?> />
     <input type="submit" value="Edit"<?php if (!isset($_GET['edit'])) print " disabled=\"disabled\""; ?> />
    </form>
   </div>
  </div>
  <br />
  <div class="content">
   <table>
    <tr>
     <td width="40">Line</td>
     <td width="20"></td>
     <td>Value</td>
    </tr>
    <tr>
     <td colspan="3">------------------------------------------------</td>
    </tr>
<?php
$data = file("data.dat");
if ($data != null) {
 foreach ($data as $line => $value) {
?>
    <tr>
     <td align="right"><a href="<?php print $_SERVER['PHP_SELF']; ?>?edit=<?php print $line; ?>"><?php print $line; ?></a></td>
     <td align="center"><a href="<?php print $_SERVER['PHP_SELF']; ?>?delete=<?php print $line; ?>">x</a></td>
     <td><?php print $value; ?></td>
    </tr>
<?php
 }
} else {
?>
    <tr>
     <td colspan="3" align="center">The file is empty!</td>
    </tr>
<?php
}
?>
   </table>
  </div>
  <div class="footer">
   <p>Copyright &copy; <?php print date("Y"); ?> TehoPirtti - ionic</p>
  </div>
 </body>
</html>

ionic 08:47 3.10.05 
Sitten rohkeasti vain risut ja ruusut scriptistä..
editoitu: 10:09 3.10.05
Runoltaja 10:08 3.10.05 
Call to undefined function: file_put_contents() in /var/www/testi.php on line 10 Edit: jaa se onkin PHP5 -mokkula
Tämmöstä esimerkkiä oon muutenkin kaivannu kiitoksia
Ztane 10:09 3.10.05 
ei lukkoa.
ionic 12:15 3.10.05 
Ztane kirjoitti:
ei lukkoa.

Hmm, miksi pitäisi?
JTS 13:20 3.10.05 
Sama kai ne lukot on pitää alusta alkaen, jos vaikka joku käyttää tätä isommissakin mittakaavoissa niin eipähän mene filet sotkuun.

Muuten kai ihan jees, sisennykset on ihan kunnossa ja aihepiirikin on aloittelijoille yleishyödyllinen. Tosin tuosta file_put_contents()-funktiosta miinusta, sen olisi voinut ihan helposti kiertää, ja tälläisenään rajoitetaan käyttäjäkunta joko PHP5 alueelle, tai sitten pitää itse joko lisätä tuo funktio tai kirjoittaa itse koodi uusiksi.
ionic 14:09 3.10.05 
JTS kirjoitti:
Sama kai ne lukot on pitää alusta alkaen, jos vaikka joku käyttää tätä isommissakin mittakaavoissa niin eipähän mene filet sotkuun.

Muuten kai ihan jees, sisennykset on ihan kunnossa ja aihepiirikin on aloittelijoille yleishyödyllinen. Tosin tuosta file_put_contents()-funktiosta miinusta, sen olisi voinut ihan helposti kiertää, ja tälläisenään rajoitetaan käyttäjäkunta joko PHP5 alueelle, tai sitten pitää itse joko lisätä tuo funktio tai kirjoittaa itse koodi uusiksi.

Henkilökohtaisesti keskityin juuri tähän uuteen file_put_contents() -funktioon :) Mutta voin kirjoitella vastaavanlaisen pätkän ilmankin tätä uutta funktiota..
ionic 12:54 3.2.06 
Dodih, koodi päivitetty. Kommentteja?
editoitu: 20:48 18.2.07
T.M. 20:44 18.2.07 
Ei mitään järkeä lopettaa scriptiä jos ei tuota PHP5:sen funkkaria löydy... tuon tiedostoon kirjoituksen kun voi toteuttaa fopen, fwrite funktioilla liiankin helposti.

Tuo file_put_contents() funktio on mielestäni täysin turha, ehkä lyhentää koodia, jos ei ole jo itse tehnyt sellaista funktiota.
ionic 13:03 27.2.07 
Tarkoituksena oli nimenomaan näyttää tuon funktion toimintaa. Siksi kuoletus tuolla :)