PHP 2 Anfänger Probleme ;)

btr.fly schrieb:
Sauber. Freut mich, dass ich helfen konnte und es jetzt geht. :)

Edit: Netter Musikgeschmack bei last.fm, höre ich auch viel von.

Du darfst gerne öfters hier vorbeischauen und mir bei meinen Problemem helfen :evillol: ;)

Danke, bist du da auch angemeldet? Falls ja, Link?
 
Ich habe mal vor längerer Zeit gescrobbelt, dann wurde last.fm immer langsamer und nervig, sodass ich damit aufgehört habe.
Naja: Rock on!
 
Nächstes Prob: Diesmal mit JavaScript.. x_X

Ich bastel grade mal wieder ein neues Desing für meine HP, unteranderem eben auch eine Navi die bei onmouseover sich verändert, also eine neue Grafik anzeigt wenn man sie mit der Maus berührt. Funktioniert soweit auch.
Auch benutze ich lightbox 2 für Bilder.

Wenn ich jetzt die JS-Dateien von Lightbox in den <head> Bereich einbinde, funktioniert das Mouseover nicht mehr so wie es soll 0o

Ohne die eingebundenen Lightbox-Dateien kann ich die Grafik mit der Maus berühren wo ich will, sie wird immer ausgetauscht, eben so wie es sein soll.

Sobald ich mit
HTML:
<script type="text/javascript" src="js/prototype.js"></script>
<script type="text/javascript" src="js/scriptaculous.js?load=effects,builder"></script>
<script type="text/javascript" src="js/lightbox.js"></script>
die Lightbox Sachen einbinde, geht der Mouseover effekt nur noch in der oberen hälfte der Grafik. 0o

Woran kann das liegen?

mfg




Edit:
Hab jetzt noch ne Weile rumprobiert, und seltsamerweiße gehts jetzt mit Opera und IE 7, mit Safari und Firefox aber nicht x_X
Hab mal beide Versionen hochgeladen, könnt ihr ja mal selber testen.

mit Lightbox-JS
ohne Lightbox-JS

Edit: Hat sich erledigt 0o =P Nächstes Problem siehe unten^^
 
Zuletzt bearbeitet:
Ok, nächstes Problem :evillol:

Ich habe ein Datum und ich will die Differenz zwischen diesem Datum und Heute berechnen.
Das Problem ist erstens, es ist keine genaue Zeit sondern nur auf den Tag genau und zweitens, das absolute Hauptproblem, ich hab keine "normale" Zeitangabe, sondern soetwas:
Jul 30, 2007
Ich denke mal das ist nach dem Muster M j, Y - Allerdings weiß ich nicht wie ich mit dieser Formatierung was berechnen kann.

Hat da jemand ne Idee? ;)

Soll dann praktisch rauskommen: "380 Tage"
 
Man kann ein Datum mit "mktime()" in den Unix-Timestamp umwandeln.
Weiteres dazu siehe hier.

Bei dir wäre der Code dann zum Beispiel so:
PHP:
$damals = mktime(0,0,0,7,30,2007); 
$heute = time();
$differenz = $heute - $damals;
$tage = $differenz / (60*60*24);
$tage = floor($tage); // = runde anzahl der Tage ohne Komma
echo $tage . " Tage";
 
btr.fly schrieb:
PHP:
$damals = mktime(0,0,0,7,30,2007);

Ja, das habe ich auch schon ergoogelt. Aber das Problem ist ich habe ja eben das Datum nicht so schön aufgeteilt wie oben, sondern in diesem komischen Format. Klar, bei einem kann ich das von Hand machen, aber nicht wenn das Script das selbstständig bei jedem beliebiegen Datum machen soll wenn es aufgerufen wird.

Mir fällt also Lösung da nur ein das Datum zu splitten und dann den einzelnen Werten, zb "Aug", mit ner Menge if (oder case-Anweisungen falls das geht) manuell den "richtigen" Wert, also in dem Fall 8, zuzuweisen.

Aber das geht bestimmt auch irgendwie kürzer oder? :freak:




Edit:
Noch nen richtig fettes Problem:
PHP:
<?php
	// Fehlermeldungen aktvivieren
	error_reporting (E_ALL) ;
	
	// Dateityp festlegen
	Header ("Content-type: image/gif");
	
	//Nickname und Schriftart holen
	$FontVar = $_GET['font'];
	$nick = $_GET['name'];
	
	$url = "http://ws.audioscrobbler.com/1.0/user/" . $nick . "/profile.xml";
	$fp = fopen("$url","r");
	
	//XML Daten einlesen
	if ($fp) {
		$i = 0;
		while (!feof($fp)) {
			$zeile = fgets($fp, 100);
			$DatenArray[] = utf8_decode($zeile);
			$i++ ;
		}
		fclose($fp);	  
	}
				
	//String zuschneiden -.-
	$PlayCount = substr($DatenArray[10],strpos($DatenArray[10],'>'),strpos($DatenArray[10],'</')-strpos($DatenArray[10],'t>'));
	$PlayCount = substr($PlayCount, 1, -1);
	
	//Schriftart/Größen etc einstellen
	if ($FontVar == 1)
	{
		$font = "fonts/Punk_s_not_dead.ttf";
		$size = "36";
		$paddingLinks = "25";
		$paddingTop = "60";
	}
	if ($FontVar == 2)
	{
		$font = "fonts/CloisterBlack.ttf";
		$size = "32";
		$paddingLinks = "10";
		$paddingTop = "62";
	}
	if ($FontVar == 3)
	{
		$font = "fonts/MiasScribblings~.ttf";
		$size = "26";
		$paddingLinks = "5";
		$paddingTop = "70";
	}
	if ($FontVar == 4)
	{
		$font = "fonts/MostWasted.ttf";
		$size = "20";
		$paddingLinks = "0";
		$paddingTop = "70";
	}
	if ($FontVar == 5)
	{
		$font = "fonts/SCRIPTIN.ttf";
		$size = "20";
		$paddingLinks = "50";
		$paddingTop = "35";
	}

	//Ausgeben 
	$im = imagecreate (300, 120);
	$black = ImageColorAllocate ($im, 237, 237, 237);
	$white = ImageColorAllocate ($im, 0, 0, 0);
	ImageTTFText ($im, $size, 12, $paddingLinks, $paddingTop, $white, $font,"  " . $PlayCount . "\nTracks scrobbled");
	ImageGif ($im);
	ImageDestroy ($im);	
?>

Das Script soll praktisch einfach eine Grafik erstellen auf der steht "xxxx Tracks scrobbled"
Tuts soweit auch, wies aussehen soll seht ihr hier
Geht bei einer Menge Nicknames, aber irgendwie hat es Probleme mit manchen.. 0o
So zb oder so 0o

Das was anstatt der Titelanzahl steht sind ja URLs bzw Teile aus der XML aus der ich die Daten hole. Ich denk ich hab einfach ziemlich gepfuscht bei dem Auslesen aus der selbigen und daran hängts jetzt^^ Wie würde das denn sauberer gehen? Bzw seht ihr sonst irgendwo den Fehler?

mfg
 
Zuletzt bearbeitet:
Was mir gerade so beim Drüberlesen aufgefallen ist, ist folgendes:
In der if-Abfrage bei "//XML Daten einlesen" erhöhst du in der while-Schleife immer das $i, doch benutzt du es gar nicht. Das $i müsste ja wohl die Stelle von dem $DatenArray[] angeben, an die geschrieben werden soll. Oder verstehe ich da was falsch? ^^

Zu dem Datum:
Kannst es auch mit der funktion "switch" machen, so zB.
PHP:
$monat = "Aug";
switch($monat)
{
case "Jan": $zahl = 1; break;
case "Feb": $zahl = 2; break;
case "Mar": $zahl = 3; break;
case "Apr": $zahl = 4; break;
case "May": $zahl = 5; break;
case "Jun": $zahl = 6; break;
...
case "Dez": $zalh = 12; break;
}
Anders würde ich es jetzt eigentlich auch nicht machen ...

Zu der falschen Ausgabe:
Schwer nachzuvollziehen für mich.
Würde dir einfach mal einen sog. "Schreibtischtest" empfehlen:
Blatt Papier nehmen und das ganze Skript mal mit einem problematischen Nickname durchspielen (Werte der Variablen, Zwischenwerte, Was macht die Funktion etc.) und aufschreiben. Da entdeckt man gerne mal Fehler. :)
 
Ich brauche das $i++ weil ich in der while-Schleife die XML quasi Zeile für Zeile einlese. Jede Zeile wird dann in ein Array Gespeichert und ich ruf später nach der Schleife eben wieder die Zeilen die ich brauche aus dem Array ab. Ok, hab bei "$DatenArray[]" wohl irgendwie das $i vergessen, aber funktioniert trotzdem^^
Gibts eigentlich ne bessere Möglichkeit die XML Zeile für Zeile zu lesen?

Das mit dem Datum werde ich dann mal probieren, aber die anderen Probleme haben priorität.. wenn die nicht gelöst sind bringt mir das mit dem Datum erstmal gar nix.

Das Problem ist wenn ich mit echo die Titelanzahl ausgebe stimmt sie immer, da muss ich mir nichtmal die Mühe machen den String zuzuschneiden. Nur wenn ich es als Grafik ausgebe hat es so Probleme =/
Kann ich nicht einfach irgendwie einer neuen Variable den Wert einer anderen den "echo" ausgeben würde zuweisen? Dann wäre das Problem gelöst - denke ich^^
 
Ich weiß jetzt glaube ich, wo der Fehler ist:
In der XML steht in der 10. Zeile nicht immer der Playcount, das ist bei manchen Usern unterscheidlich (zB. wenn der Realname angegeben ist).
Du müsstest per Suche irgendwie den Wert zwischen <playcount> und </playcount> auslesen, um sicher zu sein, dass es der richtige Wert ist.
 
btr.fly schrieb:
Ich weiß jetzt glaube ich, wo der Fehler ist:
In der XML steht in der 10. Zeile nicht immer der Playcount, das ist bei manchen Usern unterscheidlich (zB. wenn der Realname angegeben ist).
Du müsstest per Suche irgendwie den Wert zwischen <playcount> und </playcount> auslesen, um sicher zu sein, dass es der richtige Wert ist.

o0

Allmählich wird mir als Anfänger das ganze ein Stück zu kompliziert^^
Aber ok, ich werd mal googeln ob ich irgendwas verwertbares finde das ich auch verstehe :freak:

Edit: Hab ne Lösung mit Google gefunden. An das mit der Zeit wag ich mich morgen ran.. =P

Edit2: Geht jetzt alles wie es soll.. auch ohne das Datum umständlich umzuwandeln. War ja immer auch ne Angabe in Unixtime dabei 0o Keine Ahnung warum ich nicht gleich drauf gekommen bin die zu nehmen.. -.-^^

Vielen Dank auch nochmal an btr.fly, ohne dich wäre ich noch lange nicht so weit bzw hätte vll sogar schon aufgegeben ;) Danke.
 
Zuletzt bearbeitet:
So, dochnochmal nen kleineres Problem ;)

PHP:
//XML Daten einlesen
if ($fp) {
	$i = 0;
	$StatsReset = 0;
	while (!feof($fp)) {
		$zeile = fgets($fp, 100);
				
		$search = '</registered>';
		$pos = strpos($zeile, $search); 
	  	if ($pos === false)
		{
 		}
		else
		{ 
   			$StartDatumZeile = utf8_decode($zeile);
		}
			
		$search = '</statsreset>';
		$pos = strpos($zeile, $search); 
	  	if ($pos === false)
		{
 		}
		else
		{ 
   			$StatsReset = utf8_decode($zeile);
		}
		
		$i++;			
	}
	fclose($fp);	  
}
	
	
if ($StatsReset != "0")
{
	$StartDatumZeile = $StatsReset;
	$StartDatum = substr ($StartDatumZeile, 34, 10);
}
else
{
	$StartDatum = substr ($StartDatumZeile, 38, 10);
}



$DatumHeute = time();
$Differenz = $DatumHeute - $StartDatum; 
$Tage = $Differenz / (60*60*24); 
$Tage = round($Tage);

So berechne ich im Moment wieviel Tage man bei last.fm angemeldet ist. Das Problem ist, das ist jetzt ja quasi in "Zeit-Tagen", also ein Tag einfach als eine Einheit die 24 Stunden entspricht.

Wenn man sich zb am 18.08 um 23 Uhr anmeldet soll am 19.08 um 1 Uhr mit dem Script schon "2 Tage" rauskommen. Also 2 Kalender Tage.

So wie das Script im Moment arbeitet würde ja ~0,08 Tage rauskommen.

Wie realisier ich das? Timestamp von der Anmeldung ist in der XML vorhanden, kann ich da nicht einfach den Tag der zu diesem Zeitpunkt war iwie rausziehen?
 
Hm, nettes Problemchen :)

Ich habe eine Lösung, allerdings bin ich mir sicher, dass sie total unnötig kompliziert ist, ich habe meinen ersten Gedanken aber einfach mal umgesetzt. Es geht bestimmt auch anderes. ^^

Meine Idee war es, die Anzahl der verstrichenen Tage seit der Zeitrechnung beider Daten zu subtrahieren, am Ende muss man lediglich 1 addieren.
Das ganze sieht dann bei mir so aus und funktioniert auch soweit.
$stamp wäre dann dein Zeitstempel aus der XML.

PHP:
$jetzt = time();

$tag = date("d", $jetzt);
$mon = date("m", $jetzt);
$jahr= date("y", $jetzt);

$tageheute= mktime(0,0,0,$mon,$tag,$jahr);

$stamp	=	mktime(19,12,13,8,15,2008); // Teststamp 15.8.08 um 19:12 und 13 Sek.

$tag = date("d", $stamp);
$mon = date("m", $stamp);
$jahr= date("y", $stamp);

$tagedamals = mktime(0,0,0,$mon,$tag,$jahr);

// Anzahl der Tage von heute und damals berechnen
$nr1	=	$tageheute/ (60*60*24);
$nr2	=	$tagedamals/ (60*60*24);

echo $nr1 - $nr2 + 1; // +1 um den Registrierungstag mitzuzählen


Vielleicht kannst Du mit dem Code ja was anfangen bzw. er inspiriert dich zu einem eigenen Lösungsweg :)
 
Ok thx ich glaube damit lässt sich was machen.. werd das mal testen und dann einbauen ;)
 
So, jetzt mal wieder was anderes:
Ich versuche grade mir ein eigenes Umfragescript zu schreiben aber habe damit leider ein paar Probleme. Bevor jetzt Kommentare kommen, das das total unausgereift und schlecht programmiert ist - nach 2 Monaten ist man eben noch kein Profi, sry ;) Das es noch nicht toll aussieht ist mir auch klar, aber Design kommt eben am Schluss ;)

Jetzt zum Hauptproblem:
Wenn man gar keine Antwort auswählt und auf "Absenden" klickt und ein paar mal F5 drückt bekommt die erste Antwortmöglichkeit ne Menge Stimmen.. bzw besser gesagt zerspult es mir die Textdatei in der die Stimmen gespeichert sind ;)

Ich habe jetzt schon versucht mit
PHP:
if(isset ($_GET['gesendet']) && $auswahl != 0)
zu unterbinden das überhaupt was passiert wenn nix ausgewählt ist. Funktioniert aber irgendwie überhaupt nicht 0o

Hier jetzt mal das ganze Script:

PHP:
<?
$auswahl = $_GET['auswahl'];
$umfragedaten = "db.txt";


echo "<div style=\"background-color: #CCCCCC; border: 1px solid #000000; width: 150px; padding: 5px;\">";
echo "<div style=\"border-bottom: 1px #000000 dashed; padding-bottom: 5px; margin-bottom: 5px;\">";
echo "Testumfrage";
echo "</div>";


if(isset ($_GET['gesendet']))
{
	//alte Daten lesen 
	$fp = fopen($umfragedaten,"r");
	$Daten = fgets($fp,200);
	fclose($fp);
	
	
	// Abgegebene Stimme dazuzählen
	$PosAuswahlAnfang = strpos($Daten, $auswahl);
	
	$Var = $PosAuswahlAnfang + 1;
	$SubAnfang = substr($Daten, 0, $PosAuswahlAnfang);
	
	$Var = $PosAuswahlAnfang + 1;
	$SubMitte = substr($Daten, $Var, 4);
	$SubMitte = $SubMitte + 1;
	$SubMitte = str_pad($SubMitte, 4, "0", STR_PAD_LEFT);
	$SubMitte = $auswahl . $SubMitte;
	
	
	$PosAuswahlEnde = $PosAuswahlAnfang + 5;
	$SubEnde = substr($Daten, $PosAuswahlEnde);
	
	$StringKomplett = $SubAnfang . $SubMitte . $SubEnde;
	
	
	// aktualisierte Daten schreiben
	$fp = fopen($umfragedaten,"w");
	flock($fp,2);
	fputs($fp,$StringKomplett);
	flock($fp,3);
	fclose($fp);
}
if(isset ($_GET['gesendet']) || isset ($_GET['anzeigen']))
{	
	
	// Daten lesen 
	$fp = fopen($umfragedaten,"r");
	$i = 0;
	$SummeStimmen = 0;
	$x = 0;
	
	
	// Daten auswerten und Anteilsbalken generieren/ausgeben
	while (!feof($fp))
	{
		$zeile[$i] = fgets($fp, 6);
		$zeile[$i] = substr($zeile[$i], 1, 5);
		$SummeStimmen = $SummeStimmen + $zeile[$i];
		$i++;
	}
	
	$zeile = array_splice($zeile, 0, -1);
	
	
	foreach ($zeile as $value)
	{
		$Prozent[$x] = (100 * $value) / $SummeStimmen;
		$ProzentAnzeige = round($Prozent[$x], 2);
		$ProzentAnzeige = $ProzentAnzeige . "%";
		$Prozent[$x] = $Prozent[$x] * 1.6;
		$Prozent[$x] = round($Prozent[$x], 0);
		
		if ($ProzentAnzeige > 27)
		{
			echo "<table><tr><td style=\"background-image: url(rot2.png); font: 12px arial; padding-left: 3px; height: 17px; width: " . $Prozent[$x] . "px;\">" . $ProzentAnzeige . "</td></tr></table>";
		}
		else
		{
			echo "<table><tr><td style=\"background-image: url(rot2.png); font: 12px arial; height: 17px; width: " . $Prozent[$x] . "px;\"></td><td style=\"font: 12px arial; height: 17px;\">" . $ProzentAnzeige . "</td></tr></table>";
		}
		
		$x++;
	}

}
else
{
	// Was beim Start des Scriptes dasteht
	echo "<form action=\"umfrage.php\" method=\"get\">";
	echo "<input type=\"radio\" name=\"auswahl\" value=\"A\" />Toll<br />";
	echo "<input type=\"radio\" name=\"auswahl\" value=\"B\" />Ganz gut<br />";
	echo "<input type=\"radio\" name=\"auswahl\" value=\"C\" />Geht so<br />";
	echo "<input type=\"radio\" name=\"auswahl\" value=\"D\" />Schlecht<br />";
	echo "<br />";
	echo "<table><tr><td>";
	echo "<input type=\"submit\" name=\"gesendet\" value=\"Absenden\" style=\"font: 12px arial; width: 70px;\"/>";
	echo "</td><td>";
	echo "<input type=\"submit\" name=\"anzeigen\" value=\"Ergebnis\" style=\"font: 12px arial;\"/>";
	echo "</td>";
	echo "</form>";
}

echo "</div>";
?>

Ansonsten wäre ich für jeden Tipp zur Verbesserung dankbar & damit ihr euch das mal anschauen könnt habe ich alles in den Anhang gepackt :)

mfg
 

Anhänge

Hey all ...

bin neu hier; bin heute ebenfalls über das hier besprochene Datumsproblem gestolpert....

Ich wollte "noch rasch" eine Liste coden, die mir die nächsten Geburtstage einer Datenbank mit Leuten ausgibt; die Geburtstage sind jeweils als *nix-TimeStamp in der Datenbank abgelegt.

Alle hier besprochenen Varianten führen zu Problemen, wenn das Script am 25. Dezember erkannen soll, wer Anfang Januar Geburtstag hat. Vielleicht gibt es eine viel einfachere Lösung als die meine, aber so funktioniert das ganze wunschgemäss:

PHP:
// durch die Personen in der Datenbank laufen
while ($myArr = mysql_fetch_assoc($resPeople)) {
		
// Geburtstag zwischenspeichern
$myBirthdayArr[$myArr['id']] = $myArr['birthday'];
		
// nur Monat und Tag dieses Jahres
		$myBmonth = date("m", $myArr['birthday']);	
		$myBday = date("d", $myArr['birthday']);
		
		$myCompareStamp = mktime(0,1,0,$myBmonth,$myBday);

// Heute, eine Sekunde nach Mitternach		
$ersteSekundeGeburtstag = mktime(0,0,1);
		
// wenn in der Vergangenheit, nächstes Jahr nehmen
			if ($myCompareStamp <= $ersteSekundeGeburtstag) {
				$nextYear = date('Y') + 1;
				$myCompareStamp = mktime(0,1,0,$myBmonth,$myBday, $nextYear);
			}
		
		$myDiffInt = $myCompareStamp - time();	
		
// Differenz in Array schreiben
		$myCompareArr[$myArr['id']] = $myDiffInt;
	}
	
// sortieren
	asort($myCompareArr);
	
	echo "<ul>";

// ausgeben	
	foreach($myCompareArr as $key => $value) {
		
		$TageDifferenz = floor($value / (24 * 60 * 60)) + 1;
		echo "<li>Benutzer mit ID ".$key." hat in ".$TageDifferenz." Tagen Geburtstag (das ist am ".date("d.m", $myBirthdayArr[$key]).")";
	}
	
	echo "</ul>";

Führt dann zu sowas:

Ausgabe am 10.9.08 um 1:23
* Benutzer mit ID 2 hat in 0 Tagen Geburtstag ( das ist am 10.09)
* Benutzer mit ID 17 hat in 150 Tagen Geburtstag ( das ist am 07.02)
* Benutzer mit ID 18 hat in 310 Tagen Geburtstag ( das ist am 17.07)

Anyway, vielleicht hilfts ja jemandem :-)

Zu deiner Frage:

Habe mich nicht mit Deinem Code auseinandergesetzt, sieht nach viel aus für eine kleine Abstimmung ...

Am besten speicherst Du in einer Session, ob der Benutzer schon gestimmt hat.

also etwa so: (Achtung, Quick und Dirty !! ) Wenn Du Wert auf richtige Resultate legst, Google nach "poll-Script" und du findst viele Möglichkeiten, wie man sehen kann, ob ein Benutzer schon gestimmt hat (IP, Browser, etc, etc)

PHP:
session_start();


if (is_numeric($_POST['auswahl'] && $_POST['auswahl']  > 0  && $_SESSION['meineAbstimmung'] != 'gestimmt')  {

$_SESSION['meineAbstimmung'] = "gestimmt";
 
skywise schrieb:
Zu deiner Frage:

Habe mich nicht mit Deinem Code auseinandergesetzt, sieht nach viel aus für eine kleine Abstimmung ...

Naja, wüsste nicht wo ich paar Zeilen sparen könnte. Aber das hat auch keine Priorität. Das mit den Sessions werde ich mir mal anschauen, aber das das inen kleinen Schutz braucht war von Anfang an klar ;)

Sobald ich aber dieses "&& $_POST['auswahl'] > 0" in der if-Abfrage habe, kommt nach dem Abgeben der Stimme aber nicht mehr automatisch die Auswertung =[
 
Sobald ich aber dieses "&& $_POST['auswahl'] > 0" in der if-Abfrage habe, kommt nach dem Abgeben der Stimme aber nicht mehr automatisch die Auswertung =[

logisch - musst das Formular auch per POST absenden demit das geht.
Damit behebst Du dann auch gerade dein F5 / Reload - Problem.
 
Das klappt irgendwie nicht 0o Ich muss aber dazu sagen ich habe vorher noch nie iwas mit Sessions gemacht..

Das hier habe ich jetzt also:

PHP:
<?

session_start();

$auswahl = $_POST['auswahl'];
$umfragedaten = "db.txt";

echo "<div style=\"background-color: #CCCCCC; border: 1px solid #000000; width: 150px; padding: 5px;\">";
echo "<div style=\"border-bottom: 1px #000000 dashed; padding-bottom: 5px; margin-bottom: 5px;\">";
echo "Testumfrage";
echo "</div>";

if (is_numeric($_POST['auswahl'] && $_POST['auswahl']  > 0  && $_SESSION['meineAbstimmung'] != 'gestimmt'))
{
	$_SESSION['meineAbstimmung'] = "gestimmt"; 

	//alte Daten lesen 
	$fp = fopen($umfragedaten,"r");
	$Daten = fgets($fp,200);
	fclose($fp);
	
	
	// Abgegebene Stimme dazuzählen
	$PosAuswahlAnfang = strpos($Daten, $auswahl);
	
	$Var = $PosAuswahlAnfang + 1;
	$SubAnfang = substr($Daten, 0, $PosAuswahlAnfang);
	
	$Var = $PosAuswahlAnfang + 1;
	$SubMitte = substr($Daten, $Var, 4);
	$SubMitte = $SubMitte + 1;
	$SubMitte = str_pad($SubMitte, 4, "0", STR_PAD_LEFT);
	$SubMitte = $auswahl . $SubMitte;
	
	
	$PosAuswahlEnde = $PosAuswahlAnfang + 5;
	$SubEnde = substr($Daten, $PosAuswahlEnde);
	
	$StringKomplett = $SubAnfang . $SubMitte . $SubEnde;
	
	
	// aktualisierte Daten schreiben
	$fp = fopen($umfragedaten,"w");
	flock($fp,2);
	fputs($fp,$StringKomplett);
	flock($fp,3);
	fclose($fp);
}
if(is_numeric($_POST['auswahl'] && $_POST['auswahl']  > 0  && $_SESSION['meineAbstimmung'] != 'gestimmt' || isset ($_GET['anzeigen'])))
{	
	
	// Daten lesen 
	$fp = fopen($umfragedaten,"r");
	$i = 0;
	$SummeStimmen = 0;
	$x = 0;
	
	
	// Daten auswerten und Anteilsbalken generieren/ausgeben
	while (!feof($fp))
	{
		$zeile[$i] = fgets($fp, 6);
		$zeile[$i] = substr($zeile[$i], 1, 5);
		$SummeStimmen = $SummeStimmen + $zeile[$i];
		$i++;
	}
	
	$zeile = array_splice($zeile, 0, -1);
	
	
	foreach ($zeile as $value)
	{
		$Prozent[$x] = (100 * $value) / $SummeStimmen;
		$ProzentAnzeige = round($Prozent[$x], 2);
		$ProzentAnzeige = $ProzentAnzeige . "%";
		$Prozent[$x] = $Prozent[$x] * 1.6;
		$Prozent[$x] = round($Prozent[$x], 0);
		
		if ($ProzentAnzeige > 27)
		{
			echo "<table><tr><td style=\"background-image: url(rot2.png); font: 12px arial; padding-left: 3px; height: 17px; width: " . $Prozent[$x] . "px;\">" . $ProzentAnzeige . "</td></tr></table>";
		}
		else
		{
			echo "<table><tr><td style=\"background-image: url(rot2.png); font: 12px arial; height: 17px; width: " . $Prozent[$x] . "px;\"></td><td style=\"font: 12px arial; height: 17px;\">" . $ProzentAnzeige . "</td></tr></table>";
		}
		
		$x++;
	}

}
else
{
	// Was beim Start des Scriptes dasteht
	echo "<form action=\"umfrage.php\" method=\"POST\">";
	echo "<input type=\"radio\" name=\"auswahl\" value=\"A\" />Toll<br />";
	echo "<input type=\"radio\" name=\"auswahl\" value=\"B\" />Ganz gut<br />";
	echo "<input type=\"radio\" name=\"auswahl\" value=\"C\" />Geht so<br />";
	echo "<input type=\"radio\" name=\"auswahl\" value=\"D\" />Schlecht<br />";
	echo "<br />";
	echo "<table><tr><td>";
	echo "<input type=\"submit\" name=\"gesendet\" value=\"Absenden\" style=\"font: 12px arial; width: 70px;\"/>";
	echo "</td><td>";
	echo "<input type=\"submit\" name=\"anzeigen\" value=\"Ergebnis\" style=\"font: 12px arial;\"/>";
	echo "</td>";
	echo "</form>";
}

echo "</div>";
?>
 
Ok, mal wieder noch nen Prob:

Im Moment habe ich ein iframe so eingebunden, damit das Iframe immer die passende Höhe zum Inhalt hat:

HTML:
<iframe onload='
var html = this.contentWindow.document.documentElement;
var body = this.contentWindow.document.body;
this.height = Math.max(html.scrollHeight, body.scrollHeight);
' src="wordpress/index.php" style="border: 0; width: 885px;" scrolling="no"></iframe>

Das funktioniert aber nicht bei allen Leuten => doof =[

Geht das nicht irgendwie mit PHP? Aber ich finde mit google nix, nur immer JS-Lösungen..
 
Joa, wie soll das auch mit PHP gehen - PHP ist eine serverseitige Scriptsprache (die nicht weiß, was für ein "Benutzer"/Programm die Seite aufruft, mal abgesehen von Informationen die der Browser freiwllig übermittelt)

Iframes sind aber in der Tat doof. Wenn irgendwie möglich, würde ich davon absehen.
 
Zurück
Oben