Toon posts:

[php]veld in txt-db veranderen

Pagina: 1
Acties:

Verwijderd

Topicstarter
Hey!
Normaal gebruik ik altijd mysql als db, maar ik moet nu voor iemand wiens host geen mysql ondersteunt een loginscriptje maken dat gebruik maakt van een .txt file.
Tot dusver is het allemaal wel gelukt, ik stuit alleen nu op het volgende probleem: het veranderen van een veld.

de db ziet er zo uit:
code:
1
2
user|waarde1|waarde2|waarde3|
user2|waarde1|waarde2|waarde3|

en wordt aangemaakt dmv
PHP:
1
<?$fp=fopen($datafile,"a"); fwrite($fp,"$user|$waarde1|$waarde2|$waarde3|\n"); fclose($fp); ?>

Stel nu dat ik voor user2 waarde3 wil veranderen, hoe doe ik dit dan??

Tnx!

  • chem
  • Registratie: Oktober 2000
  • Laatst online: 27-08 13:53

chem

Reist de wereld rond

file uitlezen, juiste row opzoeken + editten en alles weer terugschrijven?

Klaar voor een nieuwe uitdaging.


  • cobratbq
  • Registratie: Maart 2001
  • Laatst online: 17-12-2015
Ik zou geen ".txt" gebruiken, want dat is zo uit te lezen.

One ring to rule them all, one ring to find them, one ring to bring them all, and in darkness bind them...


  • Postman
  • Registratie: Februari 2000
  • Laatst online: 00:58
Je zou de hele file kunnen inlezen, veranderen wat je wilt veranderen en daarna de boel weer wegschrijven. Als je dan elke regel in een array leest, en mbv een for-lus een array waarde (dus regel) weer in een aparte array stopt kun je makkelijk waarde3 voor user2 veranderen.

Misschien zijn er wel andere oplossingen, maar ik weet niet zo denderend veel over filepointers in PHP.

edit:
Damn, weer eens te veel getyped :P

Verwijderd

Topicstarter
Op maandag 15 april 2002 12:10 schreef chem het volgende:
file uitlezen, juiste row opzoeken + editten en alles weer terugschrijven?
juist ja, maar hoe doe ik dat in php als ik vragen mag??

Verwijderd

Op maandag 15 april 2002 12:14 schreef WebMasterMike het volgende:

[..]

ja juist, maar hoe de f*ck doe ik dat in php als ik vragen mag??
De fuck doe je maar ergens anders, lezen en schrijven doe je met http://php.net/fopen http://php.net/fread http://php.net/fwrite en http://php.net/fclose

  • Grum
  • Registratie: Juni 2001
  • Niet online
vergeet http://php.net/file niet, die kan hier ook wel handig zijn :D

  • Postman
  • Registratie: Februari 2000
  • Laatst online: 00:58
En http://php.net/array is misschien ook wel makkelijk ;)

Verwijderd

Topicstarter
hmmz...
is er niet zoiets als fwrite(blabla WHERE user1) ofsow??
Ik kom er niet helemaal uit nu..

  • djc
  • Registratie: December 2001
  • Laatst online: 08-09-2025

djc

Op maandag 15 april 2002 12:39 schreef WebMasterMike het volgende:
hmmz...
is er niet zoiets als fwrite(blabla WHERE user1) ofsow??
Ik kom er niet helemaal uit nu..
NEE. Je denkt toch niet dat het filesysteem SQL queries ondersteunt op een bestandsformaat dat je zelf bedacht hebt?

Rustacean


  • chem
  • Registratie: Oktober 2000
  • Laatst online: 27-08 13:53

chem

Reist de wereld rond

een fwrite met een where clause :?
wauw, die moet ik onthouden :+

als dat er was had ik het wel gezegd he?

Klaar voor een nieuwe uitdaging.


  • djc
  • Registratie: December 2001
  • Laatst online: 08-09-2025

djc

PHP:
1
<?$src = file("blah.txt");$rij = explode("|", $src[4]);$rij[sizeof($rij)-1] = trim($rij[sizeof($rij)-1]);$rij[3] = "POEP";$src[4] = implode("|", $rij)."\n";$src = implode("", $src);$f = fopen("blah.txt", "w");fwrite($f, $src);fclose($f);?>

Was dat even moeilijk. :7

Rustacean


Verwijderd

Wat je ook kunt doen is op de eerste regel van het tekst file een header schrijven (id|naam|var1|var2|var3|...|..)
Dan doe je het volgende:
PHP:
1
<?$fp = file("bestandsnaam");$Row = GetObject("naam", "user2", $fp); // Moet even zelf inplementeren   // deze functie geeft dus terug $Row->naam, $Row->var1, enz$Row->waarde3= "xxx";SaveRow($Row, $fp); // kijken naar dezelfde id en die regel overschrijven.?>

Verwijderd

Topicstarter
Op maandag 15 april 2002 12:46 schreef Manuzhai het volgende:
PHP:
1
<?$src = file("blah.txt");$rij = explode("|", $src[4]);$rij[sizeof($rij)-1] = trim($rij[sizeof($rij)-1]);$rij[3] = "POEP";$src[4] = implode("|", $rij)."\n";$src = implode("", $src);$f = fopen("blah.txt", "w");fwrite($f, $src);fclose($f);?>

Was dat even moeilijk. :7
Ja en waar zit dan de virtuale where username=.... ???

Verwijderd

Je kunt een misschien een beter design maken: (ff wat bras code)
code:
1
2
3
Layout:
id   int lengte 5 chars
name varchar lengte 200 chars (kan dus niet langer)

nu kun je dus met fgets($fp,5) de eerste int inlezen.. daarna kijken of het de goede is zoniet fseek($fp,200).. Dan ben je bij het volgende record..

open een file in read+write mode en hebt je eigen micro database

  • chem
  • Registratie: Oktober 2000
  • Laatst online: 27-08 13:53

chem

Reist de wereld rond

Op vrijdag 19 april 2002 19:44 schreef WebMasterMike het volgende:

[..]

Ja en waar zit dan de virtuale where username=.... ???
uh, je zou svp iets meer respect kunnen tonen voor degene die hier code voor je neerlegt.

Eisen stellen doe je maar bij iemand die iets betaald doet voor je.

Daarbij is dit met zowel oud-hollands gezond verstand heus wel zelf te maken. Er is geen toverformule voor je "probleem".

Klaar voor een nieuwe uitdaging.

Pagina: 1