.txt met optelsysteem
hierbij zitten deze variabelen:
$ID, $NAME en $AMOUNT
nu wil ik, dat als id al in de lijst staat, hij bij amount+1 doet.
ik heb nu:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?php
include('config.inc.php');
echo $_GET["add"];
echo $_GET["name"];
echo $_GET["number"];
$file=file(getcwd()."/winkelwagens/".$_SESSION['gebruikersnaam'].".txt") or die("An error occured.");
$f=fopen(getcwd()."/winkelwagens/".$_SESSION['gebruikersnaam'].".txt","a") or die("An error occured.");
for ($i=0; $i<=sizeof($file); $i++){
$pos=strpos($file[$i],"ID: ".$_GET["add"]);
if (!pos==0){
echo "already";
}
}
$str="ID: ".$_GET["add"]."&NAME: ".$_GET["name"]."&AMOUNT: ".$_GET["number"]."\r\n";
fwrite($f, $str);
?>
include('config.inc.php');
echo $_GET["add"];
echo $_GET["name"];
echo $_GET["number"];
$file=file(getcwd()."/winkelwagens/".$_SESSION['gebruikersnaam'].".txt") or die("An error occured.");
$f=fopen(getcwd()."/winkelwagens/".$_SESSION['gebruikersnaam'].".txt","a") or die("An error occured.");
for ($i=0; $i<=sizeof($file); $i++){
$pos=strpos($file[$i],"ID: ".$_GET["add"]);
if (!pos==0){
echo "already";
}
}
$str="ID: ".$_GET["add"]."&NAME: ".$_GET["name"]."&AMOUNT: ".$_GET["number"]."\r\n";
fwrite($f, $str);
?>
maar nu kom ik niet meer verder.
kan iemand me een tip geven van hoe ik verder moet?
of iets van een voorbeeld ofzo.
De stappen die je bij gebruik van een .txt file moet nemen:
1. Bestand inlezen (gebruik file())
2. Kijken of er een regel met het id bestaat (gebruik foreach en strpos?)
3. Zo ja, huidige aantal uitlezen en daarbij 1 optellen
4. Huidige regel uit de array verwijderen
5. Nieuwe regel schrijven en aan array toevoegen
6. Alle regels uit de array weer in het bestand wegschrijven.
Verder zou je ook het formaat waarin je data opslaat aan moeten passen, want dit is echt geen doen. Gebruik dan bijvoorbeeld gewoon id|naam|aantal. Dan kun je exploden op de | om de verschillende waarden eruit te halen.
Kortom, erg omslachtig, een database is veel makkelijker.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<?php
include('config.inc.php');
$file=file(getcwd()."/winkelwagens/".$_SESSION['gebruikersnaam'].".txt") or die("An error occured.");
$f=fopen(getcwd()."/winkelwagens/".$_SESSION['gebruikersnaam'].".txt","a") or die("An error occured.");
for ($i=0; $i<=sizeof($file); $i++){
$pos=strpos($file[$i],"ID: ".$_GET["add"]);
if (!pos==0){
$str=substr($file[$i],strpos($file[$i],"AMOUNT: ")+8);
echo $str."<br>";
$str+=$_GET["number"];
echo $str;
$stri="ID: ".$_GET["add"]."&NAME: ".$_GET["name"]."&AMOUNT: ".$_GET["number"]."\r\n";
fwrite($f, $stri);
break;
}
}else{
$str="ID: ".$_GET["add"]."&NAME: ".$_GET["name"]."&AMOUNT: ".$_GET["number"]."\r\n";
fwrite($f, $str);
}
fclose($f)
?>
include('config.inc.php');
$file=file(getcwd()."/winkelwagens/".$_SESSION['gebruikersnaam'].".txt") or die("An error occured.");
$f=fopen(getcwd()."/winkelwagens/".$_SESSION['gebruikersnaam'].".txt","a") or die("An error occured.");
for ($i=0; $i<=sizeof($file); $i++){
$pos=strpos($file[$i],"ID: ".$_GET["add"]);
if (!pos==0){
$str=substr($file[$i],strpos($file[$i],"AMOUNT: ")+8);
echo $str."<br>";
$str+=$_GET["number"];
echo $str;
$stri="ID: ".$_GET["add"]."&NAME: ".$_GET["name"]."&AMOUNT: ".$_GET["number"]."\r\n";
fwrite($f, $stri);
break;
}
}else{
$str="ID: ".$_GET["add"]."&NAME: ".$_GET["name"]."&AMOUNT: ".$_GET["number"]."\r\n";
fwrite($f, $str);
}
fclose($f)
?>
maar nu voegt ie een regel toe, terwijl hij m moet vervangen.
hoe los ik dat op?
Gewijzigd op 30/06/2010 21:05:05 door dvd brander
Blanche PHP op 30/06/2010 19:14:10:
Heb je geen beschikking over een database?
?
"maar nu voegt ie een regel toe, terwijl hij m moet vervangen.
hoe los ik dat op?"
Dan moet je de parameter vervangen.
http://php.net/manual/en/function.fopen.php
Gewijzigd op 30/06/2010 21:09:16 door Niels K
enne, welke parameter?
Dvd brander op 30/06/2010 21:13:41:
geen beschikking over een database nee
enne, welke parameter?
enne, welke parameter?
Dan raad ik jou toch nog een keer xml aan, want dat maak het onderhoud, en dingen als waar je nu mee zit toch een heel stuk makkelijker.
Klik op de link, en lees de mogelijkheden.. Is dat zo moeilijk?
Verder ben ik het zeker met Karl eens.
dus aangezien dit volgens mij simpeler is om af te maken dan een heel nieuw deel te leren, zou ik graag als nog antwoord hebben.
parameters zijn er 4...
ik denk dat je mode bedoelt, maar naar welke moet ie dan?
Gewijzigd op 30/06/2010 21:35:39 door dvd brander
Dvd brander op 30/06/2010 21:32:16:
jep, maar daar moet ik dan echt effe tijd in gaan steken, en die heb ik nu bijna niet (deadline...)
dus aangezien dit volgens mij simpeler is om af te maken dan een heel nieuw deel te leren, zou ik graag als nog antwoord hebben.
parameters zijn er 4...
ik denk dat je mode bedoelt, maar naar welke moet ie dan?
dus aangezien dit volgens mij simpeler is om af te maken dan een heel nieuw deel te leren, zou ik graag als nog antwoord hebben.
parameters zijn er 4...
ik denk dat je mode bedoelt, maar naar welke moet ie dan?
Dan stel je die deadline wat verder uit en maak je een net systeem.
Het antwoord heb je al gehad.
Je kunt het zo op php.net lezen.
Zo moeilijk is dat toch niet?
En anders probeer je het een voor een uit.
x/x+ gaat erroren omdat ie niet bestaat.
a/a+ voegt een lijn eronder toe terwijl hij m moet vervangen.
w/w+ verwijderd bij een nieuw id de oude.
r loopt te erroren en r+ geeft dezelfde error als w/w+
mn code is trouwens iets aangepast:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
<?php
include('config.inc.php');
$a=0;
$file=file(getcwd()."/winkelwagens/".$_SESSION['gebruikersnaam'].".txt") or die("An error occured.");
$f=fopen(getcwd()."/winkelwagens/".$_SESSION['gebruikersnaam'].".txt","r+") or die("An error occured.");
for ($i=0; $i<=sizeof($file); $i++){
$pos=strpos($file[$i],"ID: ".$_GET["add"]);
if ($pos===0){
$a=1;
$str=substr($file[$i],strpos($file[$i],"AMOUNT: ")+8);
echo $str."<br>";
$str+=$_GET["number"];
echo $str;
$stri="ID: ".$_GET["add"]."&NAME: ".$_GET["name"]."&AMOUNT: ".$str."\r\n";
fwrite($f, $stri);
break;
}
}
if ($a==0){
$stri="ID: ".$_GET["add"]."&NAME: ".$_GET["name"]."&AMOUNT: ".$_GET['number']."\r\n";
fwrite($f, $stri);
}
fclose($f)
?>
include('config.inc.php');
$a=0;
$file=file(getcwd()."/winkelwagens/".$_SESSION['gebruikersnaam'].".txt") or die("An error occured.");
$f=fopen(getcwd()."/winkelwagens/".$_SESSION['gebruikersnaam'].".txt","r+") or die("An error occured.");
for ($i=0; $i<=sizeof($file); $i++){
$pos=strpos($file[$i],"ID: ".$_GET["add"]);
if ($pos===0){
$a=1;
$str=substr($file[$i],strpos($file[$i],"AMOUNT: ")+8);
echo $str."<br>";
$str+=$_GET["number"];
echo $str;
$stri="ID: ".$_GET["add"]."&NAME: ".$_GET["name"]."&AMOUNT: ".$str."\r\n";
fwrite($f, $stri);
break;
}
}
if ($a==0){
$stri="ID: ".$_GET["add"]."&NAME: ".$_GET["name"]."&AMOUNT: ".$_GET['number']."\r\n";
fwrite($f, $stri);
}
fclose($f)
?>
ook heb ik dit geprobeerd:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
<?php
include('config.inc.php');
$a=0;
$file=file(getcwd()."/winkelwagens/".$_SESSION['gebruikersnaam'].".txt") or die("An error occured.");
$f=fopen(getcwd()."/winkelwagens/".$_SESSION['gebruikersnaam'].".txt","r+") or die("An error occured.");
for ($i=0; $i<=sizeof($file); $i++){
$pos=strpos($file[$i],"ID: ".$_GET["add"]);
if ($pos===0){
$a=1;
$str=substr($file[$i],strpos($file[$i],"AMOUNT: ")+8);
echo $str."<br>";
$str+=$_GET["number"];
echo $str;
$stri="ID: ".$_GET["add"]."&NAME: ".$_GET["name"]."&AMOUNT: ".$str."\r\n";
fwrite($f, $stri);
break;
}
}
fclose($f);
if ($a==0){
$f=fopen(getcwd()."/winkelwagens/".$_SESSION['gebruikersnaam'].".txt","a+") or die("An error occured.");
$stri="ID: ".$_GET["add"]."&NAME: ".$_GET["name"]."&AMOUNT: ".$_GET['number']."\r\n";
fwrite($f, $stri);
fclose($f);
}
?>
include('config.inc.php');
$a=0;
$file=file(getcwd()."/winkelwagens/".$_SESSION['gebruikersnaam'].".txt") or die("An error occured.");
$f=fopen(getcwd()."/winkelwagens/".$_SESSION['gebruikersnaam'].".txt","r+") or die("An error occured.");
for ($i=0; $i<=sizeof($file); $i++){
$pos=strpos($file[$i],"ID: ".$_GET["add"]);
if ($pos===0){
$a=1;
$str=substr($file[$i],strpos($file[$i],"AMOUNT: ")+8);
echo $str."<br>";
$str+=$_GET["number"];
echo $str;
$stri="ID: ".$_GET["add"]."&NAME: ".$_GET["name"]."&AMOUNT: ".$str."\r\n";
fwrite($f, $stri);
break;
}
}
fclose($f);
if ($a==0){
$f=fopen(getcwd()."/winkelwagens/".$_SESSION['gebruikersnaam'].".txt","a+") or die("An error occured.");
$stri="ID: ".$_GET["add"]."&NAME: ".$_GET["name"]."&AMOUNT: ".$_GET['number']."\r\n";
fwrite($f, $stri);
fclose($f);
}
?>
dit werkt al weer een heel wat beter, alleen veranderd hij dan altijd de 1e lijn, niet de lijn met het goede id
Gewijzigd op 30/06/2010 22:05:31 door dvd brander
- Wijzig de regel die je wilt wijzigen.
- Schrijf het complete array() weer weg.
Aan de personen die steeds zeggen dat hij beter moet lezen voor de parameter / mode, doe niet zo flauw en probeer eens wat beter te helpen, hij wil een specifieke regel wijzigen, dat kan niet, jullie weten dat vast ook maar blijven hem toch zeggen dat hij moet blijven lezen?
Er zijn bovendien ook mogelijkheden voor externe databases, volgens mij zijn sommige zelfs gratis, ik heb dit zelf niet geprobeerd dus ik weet het niet zeker, misschien is het waard om daar eens naar te kijken.