PHP kann nicht rechnen?!

Brain128

Registered User
Hallo,
ich bin dabei für einen Freund sozusagen ein Bewertungs system zu machen.
Es wird halt gan normal per Pulldown Menü ausgewählt wie viele Punkte man vergeben möchte. Anschließend wird dieser wert dann in einer Text Datei gespeichert.

Mein Problem liegt darin das ich nicht weis wie ich die werte aus einer *.txt-Datei zusammen rechnen kann. Ich hab es schon mit (Inhalt der: ergebnis.htm)
PHP:
<?php 
$fp = fopen("op1.txt","r"); 
if ($fp) 
{ 
while(!feof($fp)) 
{ 
$text = fgets($fp); 

echo "$text"; 
} 
fclose($fp); 
} 
?>

versucht. Aber es wird leider nur in der ergebnis.htm "10+1" ausgegeben.

Wenn in mögt und mir helfen wollt dann guckt euch den Anhang an. Das ist bisher alles was ich gemacht habe. Das "Script" braucht nur PHP. Kein MySQL da es auf *.txt-Dateien basiert.

Nachsehen könn ihr es unter http://fobby.fo.funpic.de/brains-web.de/html/Scripts/Vote2

MfG
Brain
 

Attachments

http://www.php.net/manual/de/function.eval.php
Wobei du da aufpassen mußt das du auch wirklich nur Zahlen zusammen rechnest und nicht beliebigen eingeschleusten Code ausführst. Normalerweise solltest du eval besser vermeiden, z.b. so:
PHP:
$fp = fopen("op1.txt","r"); 
sum=0
if ($fp) 
{ 
  while(!feof($fp)) 
  { 
    $sum += fgets($fp); 
  }
  fclose($fp); 
}
echo "$sum";
 
HornOx said:
http://www.php.net/manual/de/function.eval.php
Wobei du da aufpassen mußt das du auch wirklich nur Zahlen zusammen rechnest und nicht beliebigen eingeschleusten Code ausführst. Normalerweise solltest du eval besser vermeiden, z.b. so:
PHP:
$fp = fopen("op1.txt","r"); 
sum=0
if ($fp) 
{ 
  while(!feof($fp)) 
  { 
    $sum += fgets($fp); 
  }
  fclose($fp); 
}
echo "$sum";

Hallo,
will irgendwie nich klappen .. kannste dir mal den anhang laden und dann so wie du meinst verändern? wäre echt nett.

MfG
Brain
 
Das steht in deinem Script:

Code:
if ($fp) 
{ 
while(!feof($fp)) 
{ 
$calc = fgets($fp); 

$text = "$calc+0";

echo "$text"; 
} 
fclose($fp);

Das ist einwenig falsch
so wär besser:

Code:
if ($fp) 
{ 
while(!feof($fp)) 
{ 
$sum += fgets($fp); 
} 
echo "$sum"; 
fclose($fp);
 
zyta2k said:
Das steht in deinem Script:

Code:
if ($fp) 
{ 
while(!feof($fp)) 
{ 
$calc = fgets($fp); 

$text = "$calc+0";

echo "$text"; 
} 
fclose($fp);

Das ist einwenig falsch
so wär besser:

Code:
if ($fp) 
{ 
while(!feof($fp)) 
{ 
$sum += fgets($fp); 
} 
echo "$sum"; 
fclose($fp);

Hallo,
gesagt getan. Mein Code sieht jetzt so aus:
PHP:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">

<html>
<head>
<title></title>
</head>
<body>
<form method="GET" action="write.php">
<?php
$fp = fopen("op1.txt","r"); 
if ($fp) 
{ 
while(!feof($fp)) 
{ 
$sum += fgets($fp); 
} 
echo "$sum"; 
fclose($fp);
?>
</html>

Leider kommt jetzt folgender Fehler:
Parse error: syntax error, unexpected $end in /usr/export/www/vhosts/funnetwork/hosting/fobby/brains-web.de/html/Scripts/Vote2/ergebnis.htm on line 21

MfG
Brain
 
Hallo!
PHP:
<?php
$fp = fopen("op1.txt","r");
if ($fp)
{
	while(!feof($fp))
	{
		$sum += fgets($fp);
	}
	echo "$sum";
	fclose($fp);
} # close if ($fp) 
?>
Da fehlt eine schließende gescheifte Klammer.

<edit>schon wieder zu langsam beim Tippen ;) </edit>

Gruß flyingoffice
 
will irgendwie nich klappen .. kannste dir mal den anhang laden und dann so wie du meinst verändern?
Nein, das sollte offensichtlich sein. Es gibt spezielle Foren für PHP Anfänger.
 
Hallo,
Ich hab alle Lösungswege die mir hier im Forum gennannt wurden ausprobiert. Keines führte zum gewünschten Ergebniss. Es wird mit inder ergebnis.htm immer noch ausgegeben das der User 1 Punkt hat. Obwohl in der op1.txt
1+10+5+5+9+1+1+1+
steht. Ich finde diesen bekloppten :rolleyes: Fehler einfach nicht.

MfG
Brain
 
Brain128 said:
Ich finde diesen bekloppten :rolleyes: Fehler einfach nicht.
Hast Du Dir schon mal die Dokumentation zu fgets auf php.net angesehen? Kleiner Tipp: jeder Aufruf von fgets ließt eine Zeile der geöffneten Datei aus. Sorge dafür, daß bei jedem Voting eine neue Zeile in op1.txt geschrieben wird (nur die Zahl).

SCNR: So, und nun zähle 1 und 1 zusammen.

Gruß flyingoffice
 
Back
Top