Revenire date salvate la forma initiala

Discutii despre script-uri si coduri PHP-MySQL, precum si lucru cu XML in PHP.
Stefan
Mesaje: 117

Revenire date salvate la forma initiala

Salut, am urmatorul script

Cod: Selectaţi tot

<?php
// configuration
$url = 'test.php';
$file = 'index.php';

// check if form has been submitted
if (isset($_POST['text'])){
    // save the text contents
    file_put_contents($file, $_POST['text']);

    // redirect to form again
    header(sprintf('Location: %s', $url));
    printf('<a href="%s">Moved</a>.', htmlspecialchars($url));
    exit();
}

// read the textfile
$text = file_get_contents($file);

?>
<!-- HTML form -->
<form action="" method="post">
<textarea name="text"><?php echo htmlspecialchars($text) ?></textarea>
<input type="submit" />
<input type="reset" />
</form>
Se poate dupa ce se trimite, de exemplu daca am gresit ceva, sa revina datele "la forma initiala" ?

MarPlo Mesaje: 4343
Salut,
Ai putea sa salvezi intr-un alt fisier acele date in "forma precedenta", inainte de a le rescrie pe cele din $file, iar in caz ca e ceva gresit, le poti prelua din acel backup.
Cam asa:

Cod: Selectaţi tot

<?php
// configuration
$url = 'test.php';
$file = 'index.php';
$backup ='backup.txt';  //unde salveaza forma precedenta

// read the textfile
$text = file_exists($file) ? file_get_contents($file) :'';

// check if form has been submitted
if (isset($_POST['text'])){
  file_put_contents($backup, $text);  //save backup

  // save the text contents
  file_put_contents($file, $_POST['text']);

  // redirect to form again
  header('Location: '. $url);
  printf('<a href="%s">Moved</a>.', htmlspecialchars($url));
  exit();
}

//Daca e ceva gresit, tu stii in ce conditii preia datele din $backup
if($ceva_gresit) $text = file_exists($backup) ? file_get_contents($backup) :"File: $backup not exists";
?>

Stefan Mesaje: 117
Acel if cum ar tebui sa fie ca, atunci cand apas pe reset sa se bage backup-ul ?

MarPlo Mesaje: 4343
Butonul Reset din formular nu actioneaza scriptul de pe server, nu are legatura cu ce cod ai in php, ci doar reseteaza (aduce la datele initiale) casetele din formular.
Daca vrei sa actionezi scriptul php cand e apasat butonul Reset, trebuie sa apelezi cu el (cu "onclick") o functie Ajax.
Daca nu stii cum se face, e pe site un Curs Ajax.

Stefan Mesaje: 117
Ceva gen asa ?
stackoverflow.com/questions/20738329/how-to-call-a-php-function-on-the-click-of-a-button

Daca da ce ar tebui sa contina functia ?Am incercat eu sa fac ceva dar nu a mers

MarPlo Mesaje: 4343
Nu stiu ce ai incercat, prin urmare nici de ce nu a mers.
Cu ajax citesti fisierul back-up de pe server, iar raspunsul il adaugi in campul de formular.
Cam asa:

Cod: Selectaţi tot

//file is the file to read (to access)
function getFile(file){
  var ob_ajax = window.XMLHttpRequest ? new XMLHttpRequest() : new ActiveXObject('Microsoft.XMLHTTP');

  ob_ajax.open('GET', file);
  ob_ajax.send(null);
  ob_ajax.onreadystatechange = function() {
    if (ob_ajax.readyState == 4) {
      //id_text is the id of field where to add response
      document.getElementById('id_text').value = ob_ajax.responseText;
    }
  }
}

Subiecte similare