[PHP] Umfragescript: Problem

acquire

Mitglied
Hallo!

Ich habe nach einem Tutorial ein Umfragescript gebaut und auch verändert.
Hier könnt ihr es sehen:
http://mysteryandcrime.de/umfrage/

Nun zu meinem Problem:
Ich würde ganz gerne einen Zähler einbauen, der unten ausgibt wie viele insgesamt abgestimmt haben und die Grafik nicht als einzelne Striche sondern als Balken haben und am besten noch mit Prozentanzeige und in Klammern dahinter wie viele Stimmen das waren.
Leider finde ich nichts was mir helfen könnte und ich habe keine Idee wie ich es umsetzen könnte.

Ich möchte nämlich ungern ein fertiges Script mit Copyright darunter nehmen.
Höchstens im Quelltext, aber nicht für den Benutzer sichtbar. ;)

Kann mir dabei jemand helfen?

Vielen Dank im Voraus!

Gruß
acquire
 
Hallo acquire,


ersteinmal währe es nicht shclecht wenn du einen aussagkräftigen Teil deines Quelltextes posten würdest.

zum Thema Balken :

Erzeuge mit einem Grafikprog. einen Balken 1px breit und z.B. 5px hoch
und speichere ihn unter z.b. balken_1x5.jpg

dann rufe den Balken für die Statistik z.B.so auf:
<img src="balken1x5.jpg" border="0" witdh="<? echo $anzahl_gesammte_stimmen; ?>">

Gruß
Ultrasonic
 
Wie %-Rechnung geht müsstest Du ja eigentlich wissen
;)
Und Variablen zusammenzählen kann ja auch nicht schwer sein :P

Und zur strichanzeige...
nimm einen 1x1 px großen pkt. und schau wieviel px 100% haben sollen!
Im einfachsten fall nehmen wir mal 100px für 100%.
Wenn du alle %Werte hast, machst du per width den strich einfach so lang wie die % zahl groß ist :)
Mit höheren px Werten musste halt einfach ein wenig rumprobieren!

Ist villeicht nicht die eleganteste Erklärung, aber jeder der Spaß am ausprobieren hat, sollte es mit dieser Lösung hinbekommen!

cYa
 
hmm,

man kann doch wunderbar dynamische Images mit php erstellen und diese in eienr Tabelle ausgeben.
PHP:
<?php
if ($breite<>0)
   { (int)$prozentbreite = $breite/$gesamt*100; }
else
   { $prozentbreite = 1; }
$img = imagecreate($prozentbreite,20);
if ($color==1)
  {
          $vcolor = imagecolorallocate($img, 211,211,211);
  }
if ($color==2)
  {
          $vcolor = imagecolorallocate($img, 47,79,79);
  }
if ($color==3)
  {
          $vcolor = imagecolorallocate($img, 255,250,250);
  }
$bcolor = imagecolorallocate($img, 0,0,0);
imagefilledrectangle($img,0,0,$prozentbreite,20,$vcolor);
imagepng($img);
imagedestroy($img);
?>

das ist die image.php und die wird mit diesem Script aufgerufen
PHP:
<html><head><title>Showpoll</title>
<link rel=stylesheet type="text/css" href="default.css">
</head>
<?php
     include ('color.inc');
     include ('mysqlvar.php');
     $siteInfo=$si[16];
     $headZusatz[0]="<b class='code'>$tt_Text[108]<br>".$frage."</b>";
     include("head.php");
     include('abstaende.php');
     $t = new tabelle;
           $t->rows = $anzahl+1;
           $t->cols = 3;
           $t->einrueck = $STL;
           $t->rowspan = $anzahl+1; // ecount = eintraege zaehler da jeder beitrag 3 reihen *3 s.u.
           $t->border = 0;
           $t->sb = array("200","40","200");
           $t->klaraPfad = "bilder/klara.gif";
           $t->ra = $SBR;// reihen abstand
                                /* end TABELLEN EINSTELLUNGEN */
     $t->doTable("open");
     $db=mysql_connect($dbserver,$dbuser,$dbpass);
     if (!$db) { die( "<tr><td><b class=\"fehlermeldung\">".$f_Text[8]."</b></td></tr></table></body></html>" ); }
     mysql_select_db($dbname,$db);
     $query= "SELECT * FROM polls WHERE tid=".$tid;
     $result = mysql_query($query,$db);
     if (!$result) { die ( "<tr><td><b class=\"fehlermeldung\">".$f_Text[14]."</b></td></tr></table></body></html>" ); }
     $ergebnis=mysql_fetch_array($result,MYSQL_ASSOC);
     if ($typ == "Abstimmen")
     {
       $dayafter = time()-86400;
       //  $dayafter = time()-40;
       $query3 = "DELETE FROM pollsperre WHERE zeit < $dayafter";
       $result3 = mysql_query($query3,$db);
       $userip = getenv('REMOTE_ADDR');
       $query2 = "SELECT * FROM pollsperre WHERE ip = '$userip' AND pollnummer = $tid";
       $result2 = mysql_query($query2,$db);
       $lines2 = mysql_num_rows($result2);
       $rower = mysql_fetch_array($result2,MYSQL_ASSOC);
       if ($lines2 == 0)
            {
                if ($antwort == 1)
                        {
                                $ergebnis["zaehler1"] = $ergebnis["zaehler1"] +1;
                        }
                if ($antwort == 2)
                        {
                                $ergebnis["zaehler2"] = $ergebnis["zaehler2"] +1;
                        }
                if ($antwort == 3)
                        {
                                $ergebnis["zaehler3"] = $ergebnis["zaehler3"] +1;
                        }
                if ($antwort == 4)
                        {
                                $ergebnis["zaehler4"] = $ergebnis["zaehler4"] +1;
                        }
                if ($antwort == 5)
                        {
                                $ergebnis["zaehler5"] = $ergebnis["zaehler5"] +1;
                        }
                $akttime = time();
                $query3 = "INSERT INTO pollsperre (ip , zeit, pollnummer) VALUES ('$userip', '$akttime', '$tid')";
                $result3 = mysql_query($query3,$db);
             }
     }
     $gesamt = 0;
     $gesamt = $ergebnis["zaehler1"]+$ergebnis["zaehler2"]+$ergebnis["zaehler3"]+$ergebnis["zaehler4"]+$ergebnis["zaehler5"];
     echo "<tr><td>".$antwort1."</td><td align=\"center\">".$ergebnis["zaehler1"]."</td><td><img src=\"image.php?breite=".$ergebnis["zaehler1"]."&gesamt=".$gesamt."&color=1\"></td></tr>";
     echo "<tr><td>".$antwort2."</td><td align=\"center\">".$ergebnis["zaehler2"]."</td><td><img src=\"image.php?breite=".$ergebnis["zaehler2"]."&gesamt=".$gesamt."&color=2\"></td></tr>";
     if ($anzahl>=3)
       {
         echo "<tr><td>".$antwort3."</td><td align=\"center\">".$ergebnis["zaehler3"]."</td><td><img src=\"image.php?breite=".$ergebnis["zaehler3"]."&gesamt=".$gesamt."&color=1\"></td></tr>";
       }
     if ($anzahl>=4)
       {
         echo "<tr><td>".$antwort4."</td><td align=\"center\">".$ergebnis["zaehler4"]."</td><td><img src=\"image.php?breite=".$ergebnis["zaehler4"]."&gesamt=".$gesamt."&color=2\"></td></tr>";
       }
     if ($anzahl==5)
       {
         echo "<tr><td>".$antwort5."</td><td align=\"center\">".$ergebnis["zaehler5"]."</td><td><img src=\"image.php?breite=".$ergebnis["zaehler5"]."&gesamt=".$gesamt."&color=1\"></td></tr>";
       }
     echo "<tr><td>".$tt_Text[91]."</td><td align=\"center\">".$gesamt."</td><td><img src=\"image.php?breite=".$gesamt."&gesamt=".$gesamt."&color=3\"></td></tr></table>";
     $query = "UPDATE polls SET zaehler1='".$ergebnis["zaehler1"]."', zaehler2='".$ergebnis["zaehler2"]."', zaehler3='".$ergebnis["zaehler3"]."', zaehler4='".$ergebnis["zaehler4"]."', zaehler5='".$ergebnis["zaehler5"]."' WHERE tid=".$tid;
     $result = mysql_query($query,$db);
     if (!$result) { die ("<tr><td><b class=\"fehlermeldung\">".$f_Text[25]."</b></td></tr></table></body></html>"); }
?>
interessant ist für dich eher nur der untere Teil ab
PHP:
$gesamt=0;
Anschauen kannste es dir hier
http://www.joelh.de/jbb/topiczeigen.php?nr=1457&seite=1
Einfach auf ansehen klicken.
 
Danke für die Antworten.
Ich werde gleich mal etwas herumprobieren.
Jetzt ist mir auch wieder eingefallen das das Tutorial von hier stammt.

Hier noch mal der Code, so wie ich ihn habe:
PHP:
<?PHP
// reloadsperre //

function schreiben($datei,$mode) {
   global $REMOTE_ADDR;
   $fp = @fopen($datei,$mode);
   flock($fp,2);
   fwrite($fp,$REMOTE_ADDR."|".time()."\n");
   flock($fp,3);
   fclose($fp);
}


function ip_sperre() {
   global $REMOTE_ADDR;
   $reloadlogdatei = "ips.txt";
   $anzahleintraege = 50; // nach 50 IPs werden die alten gelöscht
   $zeitlimit = 3600; // IP Sperr-Zeit


   // existiert die Datei? Wenn nicht wird sie erstellt.

   if(!file_exists($reloadlogdatei)) {
      $datei = fopen($reloadlogdatei,"w+");
      fclose($datei);
   }
   $fp = file($reloadlogdatei);
   $size = sizeof($fp);


   if($size >= $anzahleintraege){
      schreiben($reloadlogdatei,"w");

      // Prüft, ob eine IP in der Liste steht
      
   }
   else {
      $ausgabe=false;
      for ($i=0;$i<$size;$i++) {
         $zeile = explode("|",$fp[$i]);
         if ($zeile[0] == $REMOTE_ADDR AND $zeile[1] > (time()-$zeitlimit)){
            // IP wird gefunden
            $ausgabe = true;
         }
      }

      // speichert IP
      schreiben($reloadlogdatei,"a+");
   }
   return $ausgabe;
}


// Einstellungen //
$frage = "Umfrage:  mysteryandcrime.de - Name?";  // Thema der Umfrage


$anzahl = 3;  // Anzahl der Auswahloptionen


$option[0] = "mysteryandcrime.de - Die Fanpage über das Unlösbare";  // Option 1
$option[1] = "mysteryandcrime.de - Die Fanpage zur Homepage";
$option[2] = "mysteryandcrime.de - Die Fanpage zur Hörspielserie";
$option[3] = "mysteryandcrime.de - ";
$option[4] = "mysteryandcrime.de - ";


$farbe[0]="#0000FF";  // Farbe des 1. Balkens
$farbe[1]="#00FF00";  // usw.
$farbe[2]="#FF0000";
$farbe[3]="#FFFF00";
$farbe[4]="#00FFFF";


$datei = "ergebnis.txt";



if (file_exists($datei)) {  //existiert die Datei?
    $votes=file($datei);  //dann in Array "$votes" einlesen
}

else {  //wenn nicht
    $handle = fopen($datei, "w+");  //Datei anlegen
    $i=0;
    for ($i; $i<$anzahl; $i++) {  //fuer jede Option
        fputs($handle,"0\n");  //"0" in Datei schreiben
    }
    fclose($handle);
    $votes=file($datei);  //Datei in Array "$votes" einlesen
}


// Ergebnis anpassen und in die Datei schreiben //


if (($submitvote) && (ip_sperre()==false)) {
    settype($votes[$radio],"integer");
    $votes[$radio]++;  //Option um eins erhoehen
    $handle = fopen($datei, "w+");
    $i=0;
    for ($i; $i<$anzahl; $i++) {  //fuer jede Option
        settype($votes[$i],"integer");
        fputs($handle,"$votes[$i]\n");  //Anzahl in Datei schreiben (mit Zeilenvorschub)
    }
    fclose($handle);
}

// Ausgabe //

echo "<H2>".$frage."</H2>\n\n";  //Ueberschrift schreiben



// Ergebnis als Balkengrafik //


$i=0;
for ($i; $i<$anzahl; $i++) {  //fuer jede Option
    $j=0;
    echo $option[$i]."&nbsp;&nbsp;&nbsp;<FONT COLOR=\"".$farbe[$i]."\">";  //Option ausgeben und Farbe setzen
    for($j; $j<$votes[$i]; $j++) {  //fuer Anzahl der Votes
        echo "|";  //je einen Strich ausgeben
    }
    echo "&nbsp;&nbsp;&nbsp;".$votes[$i]."</FONT><BR>\n";  //Balken zu ende, also Zeilenumbruch

}



// Auswahlformular //



echo "<br><FORM ACTION=\"".$PHP_SELF."\" METHOD=\"Post\">\n";  //Formular anfangen

$i=0;

for ($i; $i<$anzahl; $i++) {  //fuer jede Option

    echo "<INPUT TYPE=\"radio\" NAME=\"radio\" VALUE=\"".$i."\">".$option[$i]."<BR>\n";  //Radiobutton anzeigen

}
echo "<INPUT TYPE=\"Submit\" VALUE=\"Abstimmen\" NAME=\"submitvote\"></FORM>";  //Formularende
?>

Edit:
@ JoelH:
Basiert dein Script auf MySQL? Oder täusche ich mich da?
 
Zuletzt bearbeitet:
Zurück