Kom ihåg mig?
Home Menu

Menu


Ta bort rad ur text fil med hjälp av php

 
Ämnesverktyg Visningsalternativ
Gammal 2008-04-01, 01:00 #1
kallgard kallgard är inte uppkopplad
Medlem
 
Reg.datum: Jun 2006
Inlägg: 85
kallgard kallgard är inte uppkopplad
Medlem
 
Reg.datum: Jun 2006
Inlägg: 85
Hej!

Jag jobbar med en e-butik och har valt att lagra kundernas varukorgar i tilfälliga txt filer på min server och med hjälp av sessins hålla kolla på filen.

Jag har stött på ett problem när jag ska ge kunderna möjlighet att ta bort en artikel ut varukorgen.

För att lägga in information gör jag så här:

Kod:
$filnamn = session_id() . ".txt";
  
   
   $varudata = "namn=" . $n . ";pris=" . $p . ";id=" . $i . ";anta=" . $a .";artn=" . $t . ";*";
   $filnamn = session_id() . ".txt";
   $file = fopen($filnamn, "a");
   fputs($file, $varudata);
   fclose($file);
    header('location:index.php');
Det ser då ut så här i txt filen:

Kod:
namn=Rockbruttan;pris=71.2;id=41;ant=1;*namn=Adde;pris=89;id=40;ant=1;*namn=testt;pris=34;id=39;anta=1;*namn=Adde;pris=89;id=40;anta=1;artn=;*
Hur ska jag göra för att ta bort enskilda artiklar?

Tack för din hjälp!
kallgard är inte uppkopplad   Svara med citatSvara med citat
Gammal 2008-04-01, 01:20 #2
Drew Drew är inte uppkopplad
Medlem
 
Reg.datum: May 2007
Inlägg: 132
Drew Drew är inte uppkopplad
Medlem
 
Reg.datum: May 2007
Inlägg: 132
Lägg ett kontrolltecken efter varje artikeldel ex | (stolpe), då kan du loopa genom raden med strtok()
Kod:
$rad = file_get_contents($filnamn);
$nyrad = '';
$temp = strtok($rad, '|');
while($temp !== false)
{
 if(varan ska vara kvar)
 {
  $nyrad .= $temp;
 }
 $temp = strtok('|');
}
file_put_contents($filnamn, $nyrad);
Drew är inte uppkopplad   Svara med citatSvara med citat
Gammal 2008-04-01, 08:22 #3
Roberts avatar
Robert Robert är inte uppkopplad
Klarade millennium-buggen
 
Reg.datum: Jan 2004
Inlägg: 2 103
Robert Robert är inte uppkopplad
Klarade millennium-buggen
Roberts avatar
 
Reg.datum: Jan 2004
Inlägg: 2 103
Mitt språkoberoende tips: modifiera aldrig filen utan skriv om den helt och hållet varje gång.
Robert är inte uppkopplad   Svara med citatSvara med citat
Gammal 2008-04-01, 08:27 #4
Jonathan P Jonathan P är inte uppkopplad
Medlem
 
Reg.datum: Feb 2008
Inlägg: 141
Jonathan P Jonathan P är inte uppkopplad
Medlem
 
Reg.datum: Feb 2008
Inlägg: 141
Varför inte spara varukorgen som en associativ array i sessionen istället?
T.ex.:

array("produkt" => 12, "pris" => 199, "antal" => 1);
Jonathan P är inte uppkopplad   Svara med citatSvara med citat
Gammal 2008-04-01, 12:17 #5
martines avatar
martine martine är inte uppkopplad
Mycket flitig postare
 
Reg.datum: Mar 2005
Inlägg: 767
martine martine är inte uppkopplad
Mycket flitig postare
martines avatar
 
Reg.datum: Mar 2005
Inlägg: 767
Antingen:
1. Splitta filen med explode('*'), ta bort array-elementet med produkten som inte är önskad och imploda den igen.
2. preg_replace:a bort (eller sätt antal till noll) den oönskade produkten

För övrigt är det väl enklare att använda en databaslösning eller xml för detta - sqlite? Och titta på file_put_contents och file_get_contents som är både modernare, enklare och bättre än fopen, fput, etc.
martine är inte uppkopplad   Svara med citatSvara med citat
Gammal 2008-04-01, 14:02 #6
Jonathan P Jonathan P är inte uppkopplad
Medlem
 
Reg.datum: Feb 2008
Inlägg: 141
Jonathan P Jonathan P är inte uppkopplad
Medlem
 
Reg.datum: Feb 2008
Inlägg: 141
Om du nu måste spara datan i en fil på servern skulle jag rekommenderat funktionerna serialize() och unserialize(). Läs mer på www.php.net
Jonathan P är inte uppkopplad   Svara med citatSvara med citat
Gammal 2008-04-01, 16:50 #7
Magnus_A Magnus_A är inte uppkopplad
Klarade millennium-buggen
 
Reg.datum: May 2006
Inlägg: 2 604
Magnus_A Magnus_A är inte uppkopplad
Klarade millennium-buggen
 
Reg.datum: May 2006
Inlägg: 2 604
Citat:
Originally posted by martine@Apr 1 2008, 12:17
Antingen:
1. Splitta filen med explode('*'), ta bort array-elementet med produkten som inte är önskad och imploda den igen.
2. preg_replace:a bort (eller sätt antal till noll) den oönskade produkten

För övrigt är det väl enklare att använda en databaslösning eller xml för detta - sqlite? Och titta på file_put_contents och file_get_contents som är både modernare, enklare och bättre än fopen, fput, etc.
Om alternativ 1 används, glöm inte att rensa inkommande strängar på tecknet '*' innan du lagrar det i filen, annars blir det lite jobbigt.
Magnus_A är inte uppkopplad   Svara med citatSvara med citat
Gammal 2008-04-01, 18:01 #8
martines avatar
martine martine är inte uppkopplad
Mycket flitig postare
 
Reg.datum: Mar 2005
Inlägg: 767
martine martine är inte uppkopplad
Mycket flitig postare
martines avatar
 
Reg.datum: Mar 2005
Inlägg: 767
Citat:
Originally posted by Magnus_A@Apr 1 2008, 16:50
Om alternativ 1 används, glöm inte att rensa inkommande strängar på tecknet '*' innan du lagrar det i filen, annars blir det lite jobbigt.
Tecknet * försvinner ju i explosionen, eller missförstår jag dig?
martine är inte uppkopplad   Svara med citatSvara med citat
Gammal 2008-04-01, 21:38 #9
MMCs avatar
MMC MMC är inte uppkopplad
Mycket flitig postare
 
Reg.datum: Jan 2008
Inlägg: 560
MMC MMC är inte uppkopplad
Mycket flitig postare
MMCs avatar
 
Reg.datum: Jan 2008
Inlägg: 560
Citat:
Ursprungligen postat av martine
Citat:
Ursprungligen postat av Magnus_A
Om alternativ 1 används, glöm inte att rensa inkommande strängar på tecknet * innan du lagrar det i filen, annars blir det lite jobbigt.
Tecknet * försvinner ju i explosionen, eller missförstår jag dig?
Han menar nog att man ska rensa datan som ska sparas i filen från *-tecken, annars kommer strängen att splittas till två vid inläsning.
MMC är inte uppkopplad   Svara med citatSvara med citat
Svara


Aktiva användare som för närvarande tittar på det här ämnet: 1 (0 medlemmar och 1 gäster)
 

Regler för att posta
Du får inte posta nya ämnen
Du får inte posta svar
Du får inte posta bifogade filer
Du får inte redigera dina inlägg

BB-kod är
Smilies är
[IMG]-kod är
HTML-kod är av

Forumhopp


Alla tider är GMT +2. Klockan är nu 10:31.

Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson
 
Copyright © 2017