ugrás a tartalomhoz

Text adatbázisból tömb

Hellhammer · 2011. Jún. 7. (K), 23.18
Üdv!

Nagy vonalakban a dolog, melyben segítséget kérnék:

Adott egy űrlap:

<form method="post" action="feldolgoz.php">első: <input type="text" name="elso" />
<form method="post" action="feldolgoz.php">sokadik: <input type="text" name="sokad" />
<input type="submit" value="Elküld"  />
Az elküldre kattintva: feldolgoz.php

$elso = $_POST['elso'];
$sokad = $_POST['sokad'];

$osszesitve = $elso."#".$sokad."#".$megegyvaltozo."#".$tobbivaltozo."+"
$f = fopen("adatbazisfajl.txt", 'a');
fputs($f, $osszesitve);
fclose ($f); 
Tehát: az űrlapról begyűjtött adatokat összefűzi #-ekkel, majd minden sor végére tesz egy +jelet, és hozzáfűzi a txt-hez. (a valóságban mások a karakterek, csak a lényeget próbálomleírni..)

Eddig működik is, a txt-ben létrejönnek a sorok.

A gondom a feldolgozással akadt:
Addig eljutottam, hogy fogjuk a fájlt, kiolvassuk belőle a tartalmat:

$f = fopen("adatbazisfajl.txt", "r");
$fajl = fgets($f);
fclose($f);
//majd explode() függvénnyel daraboljuk sorokra a +jeleknél:
$sorok = explode ("+",$fajl);
és így kaptam egy tömböt, melynek elemei azok a sorok, melyeket tovább darabolva megkapom az űrlapból nyert, és mentett adatokat...
Ebben kérnék némi útmutatást, hogy hogyan tovább? Előre is köszönöm!!

próbáltam továbbiakat is, darabolni a sorok tömb elemeit a #-nél, de minden esetben vagy semmi sem jelent meg echo() hatására vagy pedig azt írta ki a böngésző, hogy: "Resource id #3"
 
1

feldolgozás

Poetro · 2011. Jún. 7. (K), 23.29
Miért van több form? A mezőket egyetlen form-ba kellene tenni, és a submit gombot is a formon belülre, hogy arra a form-ra vonatkozzon. (Egy oldalon lehet több form, csak akkor ne legyünk meglepődve, ha az egyiket beküldjük, akkor akkor a másikban levő adatok nem továbbítódnak.).
if ($fajl = file_get_contents('adatbazisfajl.txt')) {
  $sorok = explode('+', $fajl);
  foreach ($sorok as $sor) {
    $mezok = explode('#', $sor);
    // Csinálunk valamit az adatokkal.
  }
}
2

Köszönöm a megoldást!

Hellhammer · 2011. Jún. 8. (Sze), 00.00
Köszönöm a segítséget, így természetesen már működik is a dolog.

A formok: kösz a szemlélet-kiigazítást, akkor átírom... csak még amikor először foglalkoztam vele életemben, egy netes -nem épp hivatalos- e-tananyagból értettem meg anno a dolgot, abban így volt, működött, működik, és azóta is ez a berögzült..... de akkor:

<form method="post" action="feldolgoz.php">
Első: <input type="text" name="elso" />
<br>
Sokadik: <input type="text" name="sokad" />
<br>
<input type="submit" value="Elküld" />
</form>

Így a helyes, ugye?

Mégegyszer köszi!
3

Igen

Poetro · 2011. Jún. 8. (Sze), 00.37
Bár én inkább használnék label elemet és div-eket br helyett.
<form method="post" action="feldolgoz.php">  
<div>
  <label>Első: <input type="text" name="elso" /></label>
</div>
<div>
  <label>Sokadik: <input type="text" name="sokad" /></label>
</div>
<input type="submit" value="Elküld" />  
</form>  
4

Amennyiben még nem tetted

kuka · 2011. Jún. 8. (Sze), 08.20
Amennyiben még nem tetted meg, ajánlom, hogy nézz bele a Szöveges adatbázis téma hozzászólásaiba. Szó esett ott néhány apróságról. Például, hogy arra is gondolni kell, hogy a látogató esetleg # vagy + karaktert fog írni valamelyik űrlapmezőbe, ha pedig azok úgy ahogy vannak bekerülnek az adatbázisba, akkor visszaolvasáskor már cifrán lesznek tagolva az adatok.
5

Köszi ismét..

Hellhammer · 2011. Jún. 8. (Sze), 15.46
Poetro: rendben, köszönöm ismét a korrekciót, valóban elegánsabb megoldás a Tiéd. (a br-os verziót amúgy a w3school-ról adaptáltam át..)

Kuka: köszi, olvastam a témát; + a konkrét észrevételedről: bár köszönöm, de írtam is a témában zárójelben, hogy: "(a valóságban mások a karakterek,.."
Egyébként, mivel manualok alapján kezdtem hozzá, tehát a valóságban az ilyenekben standard "\n"-sorvégek, és a /függőleges vonal c. karakterek/ a sorközi explode jelek, de egyébként teljesen jogos, hogy azért ne # legyen, csak gyorsan ezt ütöttem be példának.
6

Kuka: köszi, olvastam a

kuka · 2011. Jún. 8. (Sze), 16.10
Kuka: köszi, olvastam a témát; + a konkrét észrevételedről: bár köszönöm, de írtam is a témában zárójelben, hogy: "(a valóságban mások a karakterek,.."
Én pedig olvastam a zárójelet. Az elválasztókat azért neveztem # és +-nak, mert te is annak nevezted. De a mondanivalóm nagyjából bármely karakterre érvényes. (Megjegyzés: amiért például vízszintes tabulátor karaktert közönséges halandó nem tud beírni az űrlapba, attól egy kísérletező kedvű script kiddie még könnyűszerrel küldhet.)

Az említett témában elhangzott HTML karakter entitásokká alakítás jó megoldás a későbbi visszaolvasás helyességének biztosítására. Az enyhe kellemetlenség csak akkor adódik, ha az oldal témája miatt a látogatók joggal kereshetnek olyan karaktersorokat, amelyek az entitássá alakítás miatt kerültek az adatok közé.
7

rendben, értelek..

Hellhammer · 2011. Jún. 9. (Cs), 11.03
és köszi a tanácsokat. Valamint, persze, értem, hogy az ezen oldalon folyó eszmecserék célja nem egy-egy konkrét példa megoldása, hanem, hogy segítetek precízebb, korrektebb php szemléletet kialakítani; amit egyébként köszönök is.

Nyilván, egy általános txt-es db használatánál igenis fontos, hogy a felhasználó ne tudja direkt, vagy véletlenül az elválasztó karakter használatával szabotálni a helyes megjelenést..

Ez ügyben, elméleti síkon maradva: mi a vélemény pl egy olyan megoldásról, a linkelt téma hozzászólásai alapján, hogy:

$osszesitve = $elso."qf43g1".$sokad."qf43g1".$megegyvaltozo."qf43g1".$tobbivaltozo."zx2ls"

mármint arról, hogy többkarakterű, mindig ugyanaz, de véletlenszerűen kiválasztott karaktersorozatot használni, amit majdnem lehetetlen eltalálni?

Egyébként: a konkrét dologban azért nem fektettem nagy hangsúlyt az elválasztó karakter biztonsági szerepére, mert az oldal, amiben szerepel egy nem jelszavas, de tulajdonképpen zárt felhasználó-bázissal rendelkező lap /egy nonprofit szervezet oldala, amit 99%-ban csak a tagok látogatnak/; valamint, ugye nem akartam azt a látszatot kelteni, hogy arra várok, hogy valaki megírja helyettem a kódod, csak az elakadásnál kértem segítséget, így nem a konkrét kódot írtam be..... ami viszont úgy néz ki egyébként, hogy a bekért adatok: ami <text>, az csak: vezetéknév, keresztnév, a többi kb. 10 db adat pedig <select> és <checkbox> form elemekből jön.. Egy rendezvény lebonyolításával kapcsolatos jelentkezés, hogy név-melyik napokon-melyik helyszínen-milyen feladatkört szeretne az illető.... aztán van a kérdéses "lekérdező" ami jelszó ellenében kiírja egy printable táblázatban a névsort.

Szóval persze értem a leírtakat, és a jövőben igyekszem abszolválni a tanácsaid a biztonságot illetően, köszi!