Hi, alle miteinander 
Dies soll kein Scherz sein, aber heute ist mir folgendes passiert:
Ich habe ein kompliziertes PHP Programm geschrieben bei dem einige Variablen durch ++ erhöht werden, also z.B $i++ oder ++$i (Was ja praktisch auf dasselbe hinausläuft wie $i=$i+1 ).
Im folgenden steht $i++ für alle möglichen Variablen die durch ++ erhöht werden.
Heute haben aber komplett alle Variablen die durch $i++ oder durch ++$i erhöht werden statt $i=$i+1 $i=$i-1 gerechnet also immer 1 abgezogen. (Mit Ausnahme der $i++ in For Schleifen) Also habe ich einfach alle $i++ durch $i=$i+1 ersetzt und das Programm lief wieder normal.
Nach diesem Test habe ich wieder alle $i=$i+1 durch $i++ ersetzt und das Programm lief immer noch normal …
Wenn man jetzt die Quelltext von dem alten Programm (vor der $i++ ersetzung) und dem neuen Programm (nach der wiedereinsetzung von $i++) vergleicht sind sie identisch.
An was kann es liegen, dass ein Programm statt $i++ $i-- rechnet ???
Zu den Daten meines Computers:
AMD Athlon 1,2 GHz
256 MB DDR RAM 2.5 CL
EPOX-8K7A+ Mainboard
HERCULES 3D Prophet 4500
Maxtor 40 GB Festplatte 7200 U/min
Maxtor 17 GB Festplatte 7200 U/min die gestern einen kurzen Aussetzter hatte.
AOPEN CD Brenner 12/10/32
Toshiba DVD Laufwerk
Windows 98 SE
IExplorer 5.0
Webserver Jana2
PHP 4.0
Ich hab alle Daten gepostet, weil ich keine Ahnung hab an was es liegen könnte.
Hoffe jemand kann mir dieses Mysterium erklären !
Danke.
Erik
zeig doch mal das stueck code in dem das passiert
Hier der Code:
Ok, kann ich machen:
**<?php include(„pddb.inc.php“); #öffnet DatenbankProgramm
include(„inc_auth.php“); #Passwortüberprüfungsdatei
include(„inc_smilies.php“); #Smiliedatei einbinden
$name=passtest(„NForum“, 4); #Passwortüberprüfung
pddb_open(„files/ids“); #Datenbankendatei öffnen
pddb_select(„userids“); #Datenbank selektieren
$posts=pddb_readcell(3,$name); #Posts auslesen, um eins erhöhen und wieder schreiben
pddb_write(++$posts,3,$name);
pddb_close(„files/ids“); #Datenbank sichern
$arr=explode("\r\n",$text);
foreach($arr as $key => $val){
$arr[$key]=stripslashes($arr[$key]);
$arr[$key]=htmlspecialchars($arr[$key], ENT_QUOTES);
if($smilie){$arr[$key]=addsmilies($arr[$key]);}
$arr[$key]=addhtml($arr[$key]);
$arr[$key]=pddb_pack($arr[$key]);
}
$text=implode(":",$arr);
pddb_open(„files/forum_“.$forum);
pddb_select($threadid);
pddb_write((string)pddb_getcolcount());
pddb_write(array($name,date(„H:i d.m.y“, time()),$text,$posts),1,(string)pddb_getcolcount()-1);
$head1=pddb_getghead(); #Postanzahl2 auslesen
(array), um eins erhöhen und wieder schreiben.
$head1[1]++;
pddb_setghead($head1);
$head2=pddb_getlhead();
$head2[3]=pddb_getcolcount();
pddb_setlhead($head2);
pddb_close(„files/forum_“.$forum);
header(„Location: forum_post_view.php?forum=“.$forum."&threadid=".$threadid);
?>
Es ist an den Stellen
„pddb_write(++$posts,3,$name)“
„$head1[1]++;“
passiert dass statt +1 -1 gerechnet wurde, aber nur kurzzeitig, nach ein paar Stunden wurde wieder +1 gerechnet.
die pddb_*() Befehle sind eine von mir programmierte Datenbank.
pddb_open() öffnet eine Datenbank Sammlung
pddb_select(); wählt eine einzelne Datenbank aus.
pddb_read() liest werte aus
pddb_write schreibt werte.**