Autor Zpráva
peta
Profil *
Jak se prohledava v souboru?
Chci udelat jednoduchy databazovy system jen PHP

mam asi neco takoveho:

--- toto je OK, spise pro zajimavost ---
$vysledektext="";
if(count($HTTP_POST_VARS))
{
$jmeno1=$_POST['jmeno1'];
$jmeno2=$_POST['jmeno2'];
$heslox=$_POST['heslox'];
$vyraz="^[0-9a-zA-Z]+$";
if ( !Ereg($vyraz,$jmeno1) || !Ereg($vyraz,$jmeno2) ) $jmeno1="";
if ($jmeno1!="")
{
$heslo1=md5($jmeno1.$heslox); //16byte(cili32) sifrou md5 if (md5($str) === '1f3870be274f6c49b3e31a0c6728957f')
$heslo2=md5($jmeno2.$heslox);
$heslo=$heslo2.$heslo1;

--- tady je problem s hledanim ---
$souborhry="hry.txt";

//soubor vytvor, pokud neexistuje
$ft=FOpen($souborhry,"a");FClose($ft);

//hledej hru
$ft=FOpen($souborhry,"r");
$pos=strpos($ft,$heslo);
FClose($ft);
if ($pos===false)
{
$vysledektext.="hra se hledala, nenasla, vytvarim novou\n";
$data=$heslo."000000000"."000";
$ft=FOpen($souborhry,"a");
FPutS($ft,$data."\n");
FClose($ft);

}
else
$vysledektext.="hra se hledala, a jiz existuje, nezle ji vytvorit\n";


kde
1. vytvoreni souboru s hou funguje spolehlive
2. zapis hry totez
3. ale to hledani nevim, zatim zkousim strpos, ale jaksi mne to ignoruje a pokazde vytvari novou hru
peta
Profil *
co se tyce promennych, ty nacitam v pohode pres post a to:
jmeno1, jmeno2, heslox (zaheslovani hry)
samozrejme je to jednoduchy system, asi by bylo lepsi zaheslovat i data hry, ale zatim neni potreba.
Kajman
Profil *
$ft je ukazatel na soubor (typ file), ne jeho obsah (typ string). proto ji tam nelze nalézt. Je třeba si např načíst ten soubor do proměnné a v tam to hledat.
peta
Profil *
Aha, jasne, ala http://www.zive.cz/h/Programovani/AR.asp?ARI=115839
ja myslel, ze k tomu mam hned pristup jako u $data=File(...)
To potom bude jednodussi provadet hledani s File(), kdyz to pak zaviram, ze jo?
peta
Profil *
Stejne mi to nefunguje, co delam jeste spatne? ...

//hledej hru
$vysledektext.="hra se hleda... ";
while( ($data=File($souborhry))==false );
$j=Count ($data) -1;
$nasel=false;
//for ($i=0;$i<$j;$i++) {$pos=strpos($data[$i],$heslo);if ($pos===true) $nasel=true;}
for ($i=0;$i<$j;$i++) if (substr($data[$i],0,32)==$heslo) $nasel=true;
if ($nasel)
$vysledektext.="jiz existuje, nezle ji vytvorit!\n";
else
{
$vysledektext.="neni, vytvarim novou\n";
$data=$heslo."000000000"."000";
$ft=FOpen($souborhry,"a");
FPutS($ft,$data."\n");
FClose($ft);
}
krteczek
Profil
já bych nejrve ten soubor načetl do pole:
$data=file("nazev.souboru")

kde jeden řádek=jednomu řádku pole a potom bych ho jednoduše procházel funkcí foreach():

foreach($data)

{
//zpracování toho souboru
}

bude to rychlejší než for
jo a při ukládání si musíš zajistit aby každý další zápis byl na dalším řádku v tom souboru, jinak to nebude fungovat
krteczek
peta
Profil *
krteczek
Ja mel pocit, ze to presne delam, jenom nemam foreach, ale for

while( ($data=File($souborhry))==false );
$j=Count ($data) -1;
$nasel=false;
for ($i=0;$i<$j;$i++) if (substr($data[$i],0,32)==$heslo) $nasel=true;

Jenom s tim rozdilem, ze se mi obsah souboru pokusi nacis a do te doby se to ani nehne (while)
To sem tusim vytahl z zive nebo intervalu :)

Mi tam nefunguje spise to porovnavani. A nevim proc. Zkus si programovat v JS, to je proti PHP uplne zuzo labuzo... zadna otrava se stredniky, nesmyslny vyraz ti zahlasi JS konzola z Firefoxu, ... parada, PHP je fujka nejvetsi, s jakou jsem mel moznost pracovat :)
Warden
Profil
tak to si asi s moc vecma nepracoval, php je best :o)

co to zkusit takhle:

$data = File($souborhry);
$nasel = false;
foreach ($data as $radek){
if (strstr($radek, $heslo)){
$nasel = true;
}
}

...jen tak strilim od boku, tak to mozna nepude, nevim :)
peta
Profil *
Warden: Zkusim...
Asi jsi nepracoval s JS :) Chapu, ze PHP ma ty vymozenosti, jako prace se soubory a a spol, ale kdyz si vemes kvalitu jazyku a pohodli programovani tak je PHP stejny smejd jako ASP. Samy strednik a podobny nesmysl :)
peta
Profil *
Warden: Super, funguje, dik :)

Ja moc ty php prikazy prave neznam, tak ono se to tezko. Ja tak JS a packal :) Cili strstr je porovnani. Proc to nefunguje s rovnitky resit nebudu.
Nejakou peknou tabulku s prikazy bys nemel? Pripadne nejake fajn priklady. Treba ten chat na intervalu s jednim souborem, ja jej sice trosku upravil, ale stele mi neni jasne to define (peter-mlich.wz.cz/xchat/)
na intervalu to najde, kdyz das hledat pres google "php chat", v intervalu mozna "chat"
(na intervalu jsem nasel peknou fintu na smajliky, to tam urco dam, ale asi budu muset prekopat celej kod a vykaslat se na jeho DEFINE pro zpravu)
Warden
Profil
mno s JS sem delal, taky s packalem, object packalem, C, C++ a podobny vymozenosti ;)...a php mam moc rad :)...

priklady bohuzel zadny nemam, spis to chce si projit php dokumentaci, tam najdes spoustu zajimavejch vecicek

jinak nevim co presne myslis za chat zkus sem hodit presne link, ja sem tam v zadnym php chatu "define" nenasel :) jinak "define" definuje konstanty :)
peta
Profil *
http://interval.cz/serial.asp?serial=32
- je to prvni link, uloz si dole ten zip-soubor a rozbal. Je tam soubor zvany DEFINE, kde pres konstanty resi, co se ma vypsat na obrazovce. Neni mi to jasne uplne a tak jsem si na to delal vlastni funkci a zda se, ze proti jeho konstante je to rychlejsi.
Toto téma je uzamčeno. Odpověď nelze zaslat.