Űrlapból érkező adatok azonnali lementése fájlba
Sziasztok!
Van egy HTML form.
Ezen a formon talalhatok checkboxok, mezok, radio gombok, stb... Egy sztatisztikara akarom hasznalni.
A felhasznalo kivalasza amit akar es vegul amikor az egesz oldalt kitoltotte, raklikel a Submit gombra.
Egy kis resz a html kodbol :Az kitoltott az adatokat le kell mentenem egy fileban, guestdb.txt
Minegyik user a fileban uj sorban kell legyen.
Az adatok egy | jelel lesznek elvalasztva egymastol, ahol tobb ertek van kivalasztva azokat az adatokat ; jelel akarom elvalasztani.
Egy pelda :
guest less than 1 year|alma;korte
guest2 more than 5 years|wind
Kerem ha tudtok segitsetek.
Tombot kene hasznaljak ?
Koszonom !
■ Van egy HTML form.
Ezen a formon talalhatok checkboxok, mezok, radio gombok, stb... Egy sztatisztikara akarom hasznalni.
A felhasznalo kivalasza amit akar es vegul amikor az egesz oldalt kitoltotte, raklikel a Submit gombra.
Egy kis resz a html kodbol :
<p>1 Section </p>
<p>
<label>
<input type="radio" name="Question1" value="strings">
strings</label>
<br>
<label>
<input type="radio" name="Question1" value="wind">
wind</label>
<br>
<label>
<input type="radio" name="Question1" value="brass">
brass</label>
<br>
<label>
<input type="radio" name="Question1" value="percussion">
percussion</label>
</p>
<p>
<label></label>
2 How long have you been a member ? </p>
<p>
<label>
<input type="radio" name="Question2" value="less than 1 year">
less than 1 year</label>
<br>
<label>
<input type="radio" name="Question2" value="between 1 and 5 years">
between 1 and 5 years</label>
<br>
<label>
<input type="radio" name="Question2" value="more than 5 years">
more than 5 years</label>
Minegyik user a fileban uj sorban kell legyen.
Az adatok egy | jelel lesznek elvalasztva egymastol, ahol tobb ertek van kivalasztva azokat az adatokat ; jelel akarom elvalasztani.
Egy pelda :
guest less than 1 year|alma;korte
guest2 more than 5 years|wind
Kerem ha tudtok segitsetek.
Tombot kene hasznaljak ?
Koszonom !
$_POST tömb
adatbázis-szerü fileok
Bár ez egy jó megoldás, szerintem probáld ki az adatbázis-szerű file-ban tárolást, mint lehetséges (jobb) alternatívát. A php viszonylag sok módszert támogat erre, pl.
http://hu2.php.net/manual/hu/ref.dba.php
http://hu2.php.net/manual/hu/ref.dbm.php
utóbbi lényegében sima plaintext-ként tárolja az adatokat, de ha ilyesmit használsz, lényegében ugyanúgy eléred az adataidat, mintha adatbázist használnál, ami 100szor kényelmesebb, mint szövegfile-okkal szórakozni. Először persze nézd meg, hogy a php mit és hogyan támogat.
Egy egyszerü példa:
BL
... dbm
Egyébként maga a DBM-telepítés nem nagy cucc.
ok
Sikerult valamit megcsinalnom es mukodik.
Szoval a celom a kov. volt : Van egy urlap, amelyen sok radio gomb van meg kivalaszthato adat (checkbox).
Radio gombot csak egyet tudok valasztani, de checkboxbol tobbet lehet kivalasztani.
Persze a felhasznalo azt valasza ki ezek kozul amit akar, az sem baj ha egy checkboxot sem valaszt ki. Csak azok az adatok lesznek fajlba irva amelyek ki voltak jelolve.
Az adatokat szetvalasztom egy | jel segitsegevel. Ahol tobb adat volt kivalasztva azokat elvalasztom egy ; jel segitsegevel.
Itt van a kod amit hasznalok :
Sajnos az urlapban van 30 kerdes. Ez azt jelenti, hogy 30 ilyen IF-et kene csinalni. Nem lehetne ezt valahogy egyszerubben megoldani ne legyen olyan sok sor ?
Koszonom !
tömb
üdv
Bl
oszlop
Peldaul:
Kerdes1|Kerdes2|Kerdes3|Kerdes4
Valasz1 |Valasz2 |Valasz3 |Valasz4
Valasz1 |Valasz2 |Valasz3 |Valasz4
Persze az oszlop neveket csak akkor szeretnem megadni amikor a fajl meg ures. Ha mar leteznek az oszlop nevek mar ne adja hoza a filehoz.
Tudnatok segiteni?
kerdes
A kovetkezo sort: Kerdes1|Kerdes2|Kerdes3|Kerdes4 szeretnem beleirni egy fajlba, de csak egyszer! Ha mar letezni fog a sor akkor ne irja meg egyszer bele, csak a tobbi adatot irja bele ami kovetkezik ujsorban. Valasz1|valasz2, stb..
Kerlek segitsetek, surgos lenne ez nekem.
Koszonom!
két megoldás
olvasd vissza a teljes file-t, a php-ben fűzd hozzá, majd írd vissza
a második:
http://hu.php.net/manual/hu/function.fopen.php
a':
Open for writing only; place the file pointer at the end of the file. If the file does not exist, attempt to create it.
nem igazan ertem...
$fp = fopen('/home2/devfirst/public_html/david/questdb.txt', 'a+');
$data = "Collumn1|Collumn2|Collumn3\n";
$data .= implode('|', $questions);
$data .= "\n";
fwrite ($fp, $data);
fclose ($fp);
A Collumn1|Collumn2|Collumn3 sort szeretnem a fajl elso soraba beleirni, azutan csak a tobbi adatot irja. De ha ujra inditoam a scriptet az elso sort mar ne rakja bele a fajlba.
két rész
először: nézd meg létezik-e a file:
http://hu.php.net/manual/hu/function.file-exists.php
ha létezik: nyisd meg hozzáírásra ("a"), írd hozzá az új adatokat (Collumn1|Collumn2|Collumn3 nélkül), majd zárd be a file-t
ha nem létezik:
nyisd meg írásra (mint új file), írd bele először a Collumn1|Collumn2|Collumn3 sort, majd az aktuális adatot, és bezárod
Ha következőnek lefut a script, a file-t létezőnek fogja mutatni, így csak hozzáír a file-hoz
Php-ben valahogy így:
BL