PHP-Code:
foreach($zeile as $wert)
{
$array = explode("#",$wert);
if($array[0]=='datum'& rtrim($array[1])!=$datum){$setdate=1;}
if($vorhanden==1){
if($array[0]=='heute' & $setdate==0){$heute=rtrim($array[1]);}
if($array[0]=='heute' & $setdate==1){$heute=1;$gestern=rtrim($array[1]);}
if($array[0]=='gesamt'){$gesamt=rtrim($array[1]);}
if($array[0]=='gestern'& $setdate==0){$gestern=rtrim($array[1]);}
}
if($vorhanden!=1)
{
if($array[0]=='heute'& $setdate==0){$heute=rtrim($array[1])+1;}
if($array[0]=='heute'& $setdate==1){$heute=1;$gestern=rtrim($array[1]);}
if($array[0]=='gestern'& $setdate==0){$gestern=rtrim($array[1])}
if($array[0]=='gesamt'){$gesamt=rtrim($array[1])+1;}
}
}
Also das da überhaupt noch was passiert nach der ersten Abfrage wundert mich.
Angenommen du bildest mit explode() das Array array[] mit Hilfe der Zeile.
dann sind die Inhalte so
"datum"."#".$datum."\n"."heute"."#".$heute."\n"."g estern"."#".$gestern."\n"."gesamt"."#".$gesamt."\n ".$text,
array[0] => "datum";
array[1] => $Datum."heute";
array[2] => $heute."\n"."gestern";
...
etc das wirkt ein wenig komisch wenn ich ehrlich bin und bin mir nicht sicher ob du sowas erreichen wolltest.
Ich hab mal vor kurzer Zeit ein Voting Script gemacht mittels Textdatei und da war es ähnlich einmal die Auswahlmöglichkeit und einmal eine gewisse Zahl, also brauchte man mehrdimensionale Arrays da es über eine Datei lief und nicht über eine Datenbank.
Das ist die Section Eintragen , $Choice ist die Auswahl die getroffen wurde.
PHP-Code:
<?php
/*******************************************************************************
Section Vote Auswertung:
Die Stimme die eben abgegeben wurde wird gezählt und dann in der Datei
eingetragen.
Danach wird ein Cookie hinterlassen welcher am Datum abläuft das
eingestellt wurde
*******************************************************************************/
//require("Dateiauslesen.php");
CLASS Auswertung extends DateiAusgabe{
var $Choice;
var $DateiInhalt;
function Set_Variablen(){
$this->DateiInhalt = $this->content();
$this->Choice = $_POST["Choice"];
$this->AblaufD = $_POST["AblaufDatum"];
}
// Section Auswertung Auswahl wird ausgelesen und mit dem Array verglichen
// Dann wird der Inhalt der Datei um eins erhöt
function VoteSetzen(){
$this->Set_Variablen();
for($i=0;$i < count($this->DateiInhalt);$i++){
if($this->Choice == $this->DateiInhalt[$i][0]){
$this->DateiInhalt[$i][1] = $this->DateiInhalt[$i][1]+1;
}
}
$this->NeuSchreiben();
}
function NeuSchreiben(){
/******************************************************
Datei Inhalt neu zusammenfügen und schreiben
******************************************************/
for($i = 0;$i < count($this->DateiInhalt);$i++){
$this->DateiInhalt[$i] = join("¥" , $this->DateiInhalt[$i]);
}
$this->DateiInhalt = join("|##|" , $this->DateiInhalt);
$cdt = fopen($this->ContentD,"w");
fwrite($cdt,$this->DateiInhalt);
fclose($cdt);
$this->Cookie_setzen();
}
function Cookie_setzen(){ // Cookie setzen
$this->AblaufD = explode("." , $this->AblaufD); // Ablauf Datum zerlegen
setcookie(md5('Voted') // Name des Cookies md5 verschlüsselt
,"1", // Inhalt des Cookies
mktime(0,0,0, // Stunde , Minute , Sekunde
$this->AblaufD[1], // Monat
$this->AblaufD[0], // Tag
$this->AblaufD[2])); // Jahr
}
}
$Auswertung = new Auswertung;
$Auswertung->VoteSetzen();
?>
Cookie setzen mal ausgelassen nun , war nur damit er nicht nochmal abstimmen kann bis das Voting ausgelaufen ist.
PHP-Code:
<?php
/*******************************************************************************
Section Klasse DateiAusgabe:
Hier werden die Datein content.dat und layout.dat eingelesen und die
Ausgaben in ein Array gespeichert zur weiteren Verarbeitung
*******************************************************************************/
CLASS DateiAusgabe{
/*******************************************************************************
Section Variablen:
Variablen werden festgelegt
*******************************************************************************/
var $LayoutD ="VoteDatein/layout.dat";
var $ContentD ="VoteDatein/content.dat";
var $layout_inhalt ="";
var $content_inhalt ="";
/*******************************************************************************
Section Layout:
Layout.dat einlesen und Inhalte in einen Array ablegen
*******************************************************************************/
function layout(){
if(is_file($this->LayoutD)){
$this->layout_inhalt = file($this->LayoutD);
foreach ($this->layout_inhalt as $key => $value){
$this->layout_inhalt = $value;
}
}
return $this->layout_inhalt = explode("¥", $this->layout_inhalt);
}// function Layout schliessen
/*******************************************************************************
Section Content:
content.dat einlesen und Inhalte in ein mehdrimensionalen Array ablegen
*******************************************************************************/
function content(){
if(is_file($this->ContentD)){
$cdt = fopen($this->ContentD,"r");
while(!feof($cdt)){
$this->content_inhalt .= fgets($cdt,255);
}
$this->content_inhalt = explode("|##|",$this->content_inhalt);
for($i=0;$i<count($this->content_inhalt);$i++){
$this->content_inhalt[$i] = explode("¥",$this->content_inhalt[$i]);
}
}
return $this->content_inhalt; // Inhalt der Datei content.dat zurückgeben
// mehrdimensionales Array
} // function content() schliessen
}// Class DateiAusgabe Schliessen
?>
die Funktion Layout wird nicht benötigt war nur für die Einstellungen des Votings , also Farben etc ...
die eigentliche Vote Datei sieht so aus:
Code:
Ja¥5|##|Nein¥2|##|Eventuell¥15....
So vorne steht für was gevoted wird und hinetn die Anzahl der stimmen. Das heisst wenn wir uns das zerlegen , müssen wir zuerst mal alles rausfiltern was diese Struktur -> "String¥Int" hat
also
$array = explode("|##|" , dateiinhalt);
Danach muss man natürlich nochmal die Auswahl und die Stimmen auseinander nehmen.
also
$array[0] = explode("¥" , $array[0]);
$array[1] = explode("¥" , $array[1]);
somit bildet sich dann ein mehrdimensionales Array
$array[0][0] => Ja
$array[0][1] => Stimmen
$array[1][0] => Nein
$array[1][1] => Stimmen
....
So im Prinzip funktionierte es , naja schau mal rein ob du damit was anfangen kannst.