Salvare pagina din php in fisier html

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

Salvare pagina din php in fisier html

Nu reusesc sa salvez in HTML row-rile adaugate. La total se pastreaza valorile calculate insa randurile dupa primul nu se vad deloc(nici layout-ul tabelului).

MarPlo Mesaje: 4343
Daca acele randuri (sau orice alte elemente html) sunt adaugate in pagina dinamic cu JavaScript, php nu le recunoaste fiindca e ceva facut client-side, dupa incarcarea paginii, deci dupa ce php si-a terminat executia.
- Daca vrei sa salvezi pe server date prelucrate de javascript, trebuie sa le preiei si sa le trimiti cu Ajax la script-ul php.

Ca sa preiei in javascript tot codul din <body> al paginii, vezi cum e in acest exemplu.

Cod: Selectaţi tot

<button id="btn1">Show body page code</button>
<script>
// when click on #btn1, get all the body content /source and alert it
document.getElementById('btn1').addEventListener('click', function(){
  var page_body = document.querySelector('body').innerHTML.replace('&', '%26');
  alert(page_body);
});
</script>
Demo:

Apoi il trimiti cu ajax la un fisier php.
- Daca nu stii cum e cu Ajax, poti invata din Cursul de pe site.

- Sau, o alta idee fara ajax, poti sa adaugi cu javascript tot acel tabel intr-un camp ascuns din formulr, inainte de Submit. Iar in php il iei din acel camp si-l salvezi, fara sa mai preiei toata pagina cu ob_start().

adrian_ady Mesaje: 80
Merci dar nu mai pot, imi bubuie capul. Am gasit multe greseli in ce am facut pana acum, o parte le vedeti si voi in postari, le-am reparat insa sunt 'epuizat', nu reusesc sa mai gandesc si la Ajax... Daca se poate face ceva de genul solutiei primite:

Cod: Selectaţi tot

$cost = isset($_POST['cost']) ? $_POST['cost'] : ' ';
unde intre ghilimele sa trec tr-ul cu add-row, atunci e altceva.

MarPlo Mesaje: 4343
Vezi si varianta postata la Save current php page content into a html file
Daca te descurci cu engleza, pentru alte lucruri legate de acest subiect (sau in general despre site-uri si cod), scrie acolo.

adrian_ady Mesaje: 80
Mai intai de toate vreau sa elimin un dubiu. Pagina 'factura' este de fapt un format A4, atat. Ca scripturi in <header> am unul 'factura.js' care contine formulele de calcul(plus addrow, deleterow) si alt script :

Cod: Selectaţi tot

<script type='text/javascript' src='http://www.site.ro/admin/factura/js/jquery-1.3.2.min.js'></script>
Eh, ca sa pot merge linistit mai departe trebuie sa fiu sigur ca acesta din urma este cel corespunzator sau nu, ori mai trebuie adaugat un altul.

MarPlo Mesaje: 4343
Daca iti trebuie sa salvezi doar tabelul html cu factura, nu are rost sa salvezi toata pagina, ci poti salva doar acel tabel. Inainte de Submit poti adauga cu javascript tabelul intr-un camp ascuns din formular.

adrian_ady Mesaje: 80
Despre salvat numai tabelul ori toata pagina.
Uite cum am gandit eu: mai intai tin sa specific ca nu am nevoie de factura, nu am avut si nici nu cred ca voi avea(din pacate); este numai dorinta de a avea un site pregatit si pentru o astfel de cerinta. Daca pot salva factura in format A4, oricand o pot consulta, printa si salva ca PDF in calculator, trimitere prin mail, etc. Alegand optiunea de salvare exclusiv tabelul nu voi avea avantajele prezentate mai sus.
In faza actuala se poate genera factura, este specificat in pagina(hidden pentru print) ca trebuie salvata mai intai ca PDF in calculator si de-abia pe urma facut click pe 'Salveaza factura' (la click se repeta avertizarea) care insereaza in db nr.factura, id, etc. inclusiv datele din primul rand.
Am testat varianta salveaza numai tabel(cu input-ul hidden). Rezultatul este ca afiseaza randurile adaugate insa din valori numai totalurile; nimic la descriere, pret unitar si cantitate(nici macar la primul rand).

- In cazul meu, unde form-ul este practic toata pagina, nu este nicio diferenta intre salvarea intregii pagini sau numai a tebelului.
- S-ar putea ca solutia sa fie serialize() si unserialize(). Dar cine stie?

Edit:
Noutate importanta!
Varianta cu salvare numai tabel functioneaza in IE. Eu, care folosesc Chrome, am inebunit facand teste....
Ca problema aparuta in html este ca se adauga automat in header <style type="text/css"></style> cu toate ca adresa catre css-ul paginii este completa: http: //.., deci poate fi accesata de oriunde . Din acest motiv nu se pastreaza dimensiunea fontului din tabel.

adrian_ady Mesaje: 80
Am gasit undeva exemplul urmator si ma gandesc, daca se adapteaza acest model la necesitatile prezente va functiona si in Chrome?

Cod: Selectaţi tot

<!DOCTYPE html>
<html>

<head>
  <title>Fonts</title>
</head>

<body>
  <ul id="ulList">
    <li><strong>Bold text</strong></li>
    <li><em>Italic text</em></li>
    <li><u>Underlined text</u></li>
    <li><strike>Strikeout text</strike></li> <!-- <strike> not supported in HTML5 -->
  </ul>
  <div id="oScratch"></div>
  <script>
    document.getElementById('ulList').addEventListener('click', fnCopyHTML, false);

    function fnCopyHTML(evt) {
      var oWorkItem = evt.target;
      if ((oWorkItem.tagName != "ul") && (oWorkItem.tagName != "li")) {
        alert("Adding " + oWorkItem.outerHTML + " to the list.");
        oScratch.innerHTML += oWorkItem.outerHTML + "<br />";
      }
    }
  </script>
</body>

</html>

Subiecte similare