ugrás a tartalomhoz

HTML oldal mentése PHP-n keresztül SQL-be

unregistered · 2010. Jún. 21. (H), 16.54
Hello!

Hogyan lehet egy mindig változó (egyénileg generált) HTML oldal kódját elmenteni SQL-be?

Részletesebben:
Van egy oldal ami megkérdezi hogy hány beviteli mezőt szeretne a felhasználó használni. Egy szám magadása után megjelennek a beviteli mezők. Azokat kitölti a felhasználó majd rányom a mentésre ami eldobja egy PHP oldalra ahol van egy HTML sablon. Itt megkapja azt az értéket az PHP oldal hogy hány beviteli mező van és azokat beilleszti a HTML sablonba. Itt jön a gondom, ezt a legenerált sablon oldalt szépen megjeleníti, de hogyan tudnám elmenteni egy SQL táblába az eredményt.
Ez arra szolgál hogy bármikor a felhasználó előveheti és kinyomtathatja vagy elküldheti mailben.
Mivel nem lehet csak úgy egy változóba beilleszteni ez egész kódot, lényegében azzal van a gondom hogy ezt a már legenerált/kész sablon oldalt hogyan tudnám elmenteni az SQL táblába?

Előre is köszönöm!
 
1

Miért SQL?

neogee · 2010. Jún. 21. (H), 18.15
Miért SQLbe? Miért nem használsz inkább kézenfekvő megoldást, és mented el közvetlenül html fileként a php segitségével? :))

utólag:
Most jutott eszembe, hogy miért akarod egyáltalán az egész generált forrást elmeneni? :) Hiszen ha a template megvan, és elmented DB-be hogy a felhasználó hány darab, és milyen adatokat adott meg, akkor a template segitségével bármikor újra kigenerálható ugyanaz a forrás. :) Így amikor nyomtatni akarja, nincsen más dolgod, mint előhalászod a régebben megadott adatait, majd újra betoltod a templatebem és máris nyomtathatja :)
3

hát mert:

unregistered · 2010. Jún. 21. (H), 18.27
Miért SQLbe? Miért nem használsz inkább kézenfekvő megoldást, és mented el közvetlenül html fileként a php segitségével?


akkor is kell csinálnom egy SQL táblát minden egyes ilyen mentéshez mert különben hogy tudná kiválasztani melyiket szeretné megnézni/elküldeni/stb...

Plusz amit elfelejtettem írni: el kell menteni olyan formában is amit e-mailként lehet elküldeni (HTML és "plain text"). Az oké hogy HTML az meglenne de a sima szöveget utána elég nagy szívással lehetne kivenni a HTML-ből...
Ezért gondoltam hogy amikor rányom a mentés gombra akkor elmenti SQL-be a HTML-t (hogy meg tudja nézni a neten) és elmenti külön az e-mailben küldhető (HTML + egyszerű szöveg) változatot is (hogy el tudja küldeni e-mailben)...
4

a plain egyszerű

neogee · 2010. Jún. 21. (H), 18.49
Nos a plain szöveget a legegyszerűbb talán megcsinálni a html forrásból. A phpnak van egy strip_tags() nevű függvénye amely föggvény azért felelős, hogy egy paraméterként átadott stringből, kiveszi alapesetben az összes html taget. :) Itt találsz bővebb leírást: http://php.net/manual/en/function.strip-tags.php
7

:)

unregistered · 2010. Jún. 21. (H), 19.36
jé tényleg és ezt már használtam is régen csak elfelejtettem hogy létezik :D

Köszi ;)
2

nem mert:

unregistered · 2010. Jún. 21. (H), 18.24
...Így amikor nyomtatni akarja, nincsen más dolgod, mint előhalászod a régebben megadott adatait, majd újra betoltod a templatebem és máris nyomtathatja...


Igen akár jó is lenne és én is így gondoltam, sőt ekkor még szerkeszthetné is, csakhogy nem tudni előre hogy hány szövegdobozt szeretne. És ha nem tudod akkor vagy már megint a nagyon maceránál tartunk, vagy mindenkinek külön tábla kell mert nem tudsz egységesített recordokat létrehozni mert valakinek 3 cella valakinek 8 cella kellene. Esetleg még korlátozni lehetne hogy max ennyit hozhatsz létre, ez mondjuk még járható út, de akkor is érdekelne hogy lehetne elmenteni a html sablonba beillesztett kódot.
5

én arra gondoltam

neogee · 2010. Jún. 21. (H), 18.58
Nos nem ismerem a táblaszerkezetedet, így nem sokmindent tudok hozzáfűzni, de én valahogy úgy csinálnám meg, mint ahogyan a GET is működik... :) Valamiféle stringgé fűzném össze a mezők számát, és az egyes mezőkhöz tartozó értéket, valahogy így:

?field1=akarmi-amit-beirt&field2=akarmi-ketto-amit-beirt... stb stb
Valami hasonló módon, és ezt a querystring féleséget tárolnám el adatbázisban... :)
Persze egy megfelelően bonyolult táblaszerkezettel megoldható az is, hogy ne ezt a stringet mentsd el, hanem közvetlenül az értékeket. Én valami ilyesmi táblaszerkezetet csinálnék hozzá:

Felhasználó:
ID
... stb

Dokumentum:
ID
Felhasznalo_ID
... stb

Dokumentum_ertekek:
ID
Dokumentum_ID
Ertek

Ezzel a szerkezettel a dokumentumba mentesz egy dokumentumot, majd a dokumentum_ertek táblába mented a felhasználó által beírt értékeket összekötve, a hozzá tartozó dokumentummal, ezzel azt éred el, hogy a változó számú oszlop, átalakul sorrá, így egy dokumentumhoz, akárhány érték tartozhat.... :) Lehet hogy az egyik dokumentumhoz csak 1, a másikhoz pedig 300 érték tartozik :) Remélem érthető voltam... :)
6

Ne légy lusta!

janoszen · 2010. Jún. 21. (H), 19.16
Ha szabad egy jótanácsot adni, ne a táblaszerkezeten akarj munkaidőt spórolni mert villámgyorsan utolér. Tanuld meg használni a join konstrukciót, azzal minden további nélkül meg tudsz csinálni mindenféle bonyolult összerendelést is.
8

;)

unregistered · 2010. Jún. 21. (H), 19.38
Nem vagyok én lusta, csak jó lett volna korábban ismerni a join-t ;)
Köszönöm szépen, azt hiszem ez jól fog jönni a jövőben is ;)
9

Egyetértek

neogee · 2010. Jún. 21. (H), 19.46
Abszolut egyetértek! A join egy nagyon jó dolog :) Bár sokszor elég a hagyományos többtáblás lekérdezés is, de ha megtanulod a joint használni, akkor minden sokkal egyszerűbbé válik :)
10

Amúgy

unregistered · 2010. Jún. 21. (H), 22.22
az ob_get_contents() az amivel ki lehet nyerni az eredmény oldal forrását, de most már csak azért sem ezt használom ;)

Köszönöm a fejtágítást
11

igen

neogee · 2010. Jún. 21. (H), 22.37
Igen az ob_get_contents() az pl jó erre a célra, HA be van kapcsolva az output buffering:) nálam pl nincsen :) én nem szeretem :) egyébként én azért nem értettelek, mert én nem kapásból a képernyőre iratnám, hanem sztringként kezelném, aztán azzal lehet akármit csinálni :) kiirni previewként, elküldeni emailben, elmenteni, bármit... :) De már más megoldást alkalmazol, úgyhogy ez lényegtelen is. :)
13

háát

unregistered · 2010. Jún. 22. (K), 14.17
na akkor ismét homályosan fogalmaztam:
nem akarom én kiíratni (a mentés előtt) elég lett volna ha elmentődik egy változóba, de ugye akkor is először whitespace-mentesíteni és az idézőjeleket is cserélni kell a HTML sablonban és utána is elég nehéz lesz megtalálni benne akármit ha változtatni kell. Akkor még hozzájön ahhoz hogy a kódon belül generálódik "véletlenszerűen" a tartalom, szóval vághatom szét az egész átalakított sablont részekre és akkor kezdődne a lego.

Egy kis vázlat amit már előzőleg kellett volna mutatnom:

<?php
 //ugye az előző oldalon kiválasztotta a felhasználó hogy hány szövegbox kell neki és az itt megkapjuk 
	$szovegdobozszam = $_POST[szovegdobozszam];
?><!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">
	<head>
		<title>oldal</title>
		<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
		<style type="text/css">
			/* oldalformázás */
		</style>
	</head>
	<body>
		<!-- itt van pár <div>, <h1> <p>, <img>  
		itt lejjebb nagyjából ez történik a kiíratásnál
		-->
		<?php
			// amíg meg nem egyezik az előző oldalon megadott szövegboxokkal a $szamlalo addig íratja ki őket
			$szamlalo = 1;
			while ($i <= $szovegdobozszam) {
		?>
			<h1><?php echo $_POST['title'.$szamlalo]; ?></h1>
			<p>
				<img src="<?php echo $_POST['img'.$szamlalo]; ?>" alt="" />
				<?php					    
					echo str_replace("\r\n","<br />",$_POST['text'.$szamlalo]);			
				?>
			</p>
		<?php
			$szamlalo++;
			}
		?>
	</body>
</html>
Hát kb ennyi. Nos ezt az egészet (ami persze jóval hosszabb a css és a html miatt) kellene betenni egy változóba, úgy hogy közben legenerálódik a POST-olt tartalom, és végül elmentődik valahova ez az egész. Ezért tartottam az elején jó megoldásnak hogy legenerálódik az oldal és azt utána valahogy elmenteni (mivel nem fontos a későbbi szerkeszthetőség).
14

hmm

neogee · 2010. Jún. 23. (Sze), 00.03
Hát ez tényleg elég mókás sztringkezelés volna... :D Lényeg hogy megvan a megoldás! :)))))
12

Van más szempont

janoszen · 2010. Jún. 22. (K), 00.03
Van ám a dolognak egy másik aspektusa. Ha generálási sebességben utazol, mégis csak érdemes lehet a legenerált oldalt elmenteni de természetesen csak a nyes adat mellett, nem helyett.