Menü

  Login

  Shoutbox

  Forum » Fragen zu Ilch » Andere Dinge » Umfrage Box


Umfrage Box
Reaverlike
Jungspund

User Pic

Posts: 44
# 24.04.2014 - 17:16:51
    zitieren



Hallo Marius,

Ich bins mal wieder :-)

Also ich würde gerne die Umfrage Box erweitern nur weiss ich nicht wie und ob es überhaupt möglich ist.

Und zwar würde ich gerne in der Umfrage Box unter der Umfrage einen Button haben der zu einer liste führt die Alle Account namen anzeigt die bereits ihre stimme abgegeben haben. (Wenn möglich miz Profil link)

Zb.
Bereits abgestimmt haben:
Paul
pepe
Lila
Gelb
Wurst
Käse
etc.

Also wirklich nur wer seine stimme schon abgegeben hat. Aber nicht wofür sondern nur um zu sehen welche mitglieder noch Voten müssen. So das niemand weiss wer für was gestimmt hat.

So schaut aktuell meine boxes/vote.php aus:
 Php
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
88:
89:
90:
91:
92:
93:
94:
95:
96:
97:
98:
99:
100:
101:
102:
103:
104:
105:
106:
107:
108:
109:
110:
111:
112:
113:
114:
115:
116:
117:
118:
119:
120:
121:
122:
123:
  <?php
// Copyright by Manuel Staechele
// Support www.ilch.de
// Modified by Mairu -> Erweiterte Umfrage 1.5
// include/boxes/vote.php
defined ('main') or die ('no direct access');
// -----------------------------------------------------------|
// Vote Sperre in Stunden
$stunden 24;

$breite 50;
$diftime time() - (60 60 $stunden);

$voted = array();

$fraErg db_query('SELECT * FROM `prefix_poll` WHERE `stat` = 1 AND (`maxvotes` = 0 OR (`maxvotes` > `votes`)) AND (exptime = 0 OR exptime > UNIX_TIMESTAMP()) ORDER BY `poll_id` DESC');

if (
db_num_rows($fraErg) > 0) {
    
$pollid 0;
    while (
$fraRow db_fetch_object($fraErg)) {
        if (
$fraRow->recht == 2) {
            
$inTextAr $_SESSION['authid'];
        } elseif (
$fraRow->recht == 1) {
            
$inTextAr getip();
        }

        
$textAr explode('#'$fraRow->text);
        if (
in_array ($inTextAr $textAr)) {
            
$imPollArrayDrin true;
        } else {
            
$imPollArrayDrin false;
        }

        if (!
$imPollArrayDrin OR (count($tovote) == AND $fraRow->view >= $_SESSION['authright'])) {
            if (
$fraRow->recht == 2) {
                if (
$fraRow->user_rechte == ''$fraRow->user_rechte '0123456789';
                if (!empty(
$fraRow->groups)) {
                    
$votegroups explode('#'$fraRow->groups);
                    foreach (
$_SESSION['authgrp'] as $id => $authgroup) if (in_array($id$votegroups)) $abstimmen true;
                    if (
strpos($fraRow->user_rechte'' abs($_SESSION['authright'])) === false$abstimmen false;
                }elseif (
strpos($fraRow->user_rechte'' abs($_SESSION['authright'])) !== false) {
                    
$abstimmen true;
                }
            } else {
                
$abstimmen true;
            }

            if (
$abstimmen AND !$imPollArrayDrin) {
                
$pollid $fraRow->poll_id;
                break;
            } elseif (
$fraRow->view >= $_SESSION['authright']) {
                
$voted[] = $fraRow->poll_id;
            }
        }
    }
}

if (
$pollid == AND count($voted) > 0) {
    
$pollid $voted[array_rand($voted1)];
    
$voted true;
} else {
    
$voted false;
}

if (
$pollid != 0) {
    
$fraErg db_query('SELECT * FROM `prefix_poll` WHERE recht ' $woR ' AND poll_id = ' $pollid ' ORDER BY poll_id DESC LIMIT 1');
    
$fraRow db_fetch_object($fraErg);

    
$maxRow db_fetch_object(db_query('SELECT MAX(res) as res FROM `prefix_poll_res` WHERE poll_id = "' $fraRow->poll_id '"'));
    
$gesErg db_query('SELECT SUM(res) as res FROM `prefix_poll_res` WHERE poll_id = "' $fraRow->poll_id '"');
    
$gesRow db_fetch_object($gesErg);

    
$max $maxRow->res;
    
$ges $gesRow->res;
    
$textAr explode('#'$fraRow->text);

    if (
$fraRow->recht == 2) {
        
$inTextAr $_SESSION['authid'];
    } elseif (
$fraRow->recht == 1) {
        
$inTextAr getip();
    }

    echo 
'<b>' $fraRow->frage . ($fraRow->answers " ($fraRow->answers Antworten m&ouml;glich)" '') . '</b>';
    if (
$fraRow->exptime 0) {
        echo 
'<br /><small>(bis ' date('H.i \U\h\r - d.m.Y'$fraRow->exptime);
        if (
$fraRow->maxvotes 0) {
            echo 
' oder bis ' $fraRow->maxvotes ' abgestimmt haben';
        }
        echo 
')</small>';
    } elseif (
$fraRow->maxvotes 0) {
        echo 
'<br /><small>(bis ' $fraRow->maxvotes ' abgestimmt haben)</small>';
    }
    if (
in_array ($inTextAr $textAr) OR $fraRow->stat == OR $voted) {
        echo 
'<table width="100%" cellpadding="0">';
        
$imPollArrayDrin true;
    } else {
        echo 
'<form action="index.php?vote-W' $fraRow->poll_id '" method="post"><input type="hidden" name="wd" value="'.$menu->get_complete().'">';
        
$imPollArrayDrin false;
    }
    
$i 0;
    
$pollErg db_query('SELECT antw, res, sort FROM `prefix_poll_res` WHERE poll_id = "' $fraRow->poll_id '" ORDER BY sort');
    while (
$pollRow db_fetch_object($pollErg)) {
        if (
$imPollArrayDrin) {
            echo 
'<tr><td>' $pollRow->antw '</td><td align="right">' $pollRow->res ' (' round($pollRow->res / ($ges 0?$ges:1) * 1001) . '%)</td></tr>';
        } else {
            
$i++;
            if (
$fraRow->answers <= 1) {
                echo 
'<input type="radio" id="vote' $i '" name="radio" value="' $pollRow->sort '"><label for="vote' $i '"> ' $pollRow->antw '</label><br>';
            } else {
                echo 
'<input type="checkbox" id="vote' $i '" name="radio[]" value="' $pollRow->sort '"><label for="vote' $i '"> ' $pollRow->antw '</label><br>';
            }
        }
    }
    if (
$imPollArrayDrin) {
        echo 
'<tr><td colspan="2" align="right">' $lang['whole'] . ': &nbsp; ' $ges '</td></tr></table>';
    } else {
        echo 
'<p align="center"><input type="submit" value="' $lang['formsub'] . '"></p></form>';
    }
} else {
    echo 
$lang['nowvoteavailable'];
}

?>


Lg
René
Mairu
Administrator

User Pic

Posts: 1908
# 25.04.2014 - 09:04:11
    zitieren



Also kurz wollte ich noch erwähnen, dass mein Name nicht Marius ist Auslachen

Geht schon, wäre dann in der Box aber eher nur der Link, das Anzeigen der Namen sollte in einer contents Datei stattfinden.

Hier mal eine Datei die Abstimmenden anzeigt:
 Php
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
  <?php
/**
 * Zeige Personen die abgestimmt haben für Umfragen, die nur für User sind
 * Aufruf: index.php?voted-{ID}
 *      {ID} - (poll_)id der Umfrage
 * 
 * @author Mairu
 */
defined ('main') or die ('no direct access');

$title $allgAr['title'] . ' :: ' $lang['vote'];
$hmenu $lang['vote'];
$design = new design ($title $hmenu);
$design->header();

$voteId = (int) $menu->get(1);
if (
$voteId 0) {
    
$qry db_query('SELECT * FROM prefix_poll WHERE poll_id = ' $voteId);
    if (
db_num_rows($qry)) {
        
$voteRow db_fetch_assoc($qry);
    }
}

if (isset(
$voteRow) && $voteRow['recht'] === '2') {
    echo 
'<div><strong>Umfrage:</strong> ' $voteRow['frage'] . '</div>';
    
$userIds array_unique(array_map('intval'explode('#'$voteRow['text'])));
    
$qry db_query('SELECT id, name FROM prefix_user WHERE id IN ('implode(','$userIds) . ')');
    if (
db_num_rows($qry)) {
        echo 
'Es haben abgestimmt: <ul>';
        while (
$userRow db_fetch_assoc($qry)) {
            echo 
'<li><a href="index.php?user-' $userRow['id'] . '">' $userRow['name'] . '</a></li>';
        }
        echo 
'</ul>';
    } else {
        echo 
'Es hat noch niemand abgestimmt';
    }
} else {
    echo 
'Umfrage nicht gefunden oder nicht nur für User';
}

$design->footer();


Den Link in die Box oder bei der Umfrage direkt mit einzubauen, schaffst du vielleicht selbst?
Reaverlike
Jungspund

User Pic

Posts: 44
# 25.04.2014 - 17:00:28
    zitieren



Hallo,

Erstmal ein mega SORRY für den namensswitch :-)

Und danke für die fixe antwort.

Wo setze ich den von dir geposteten code ein ?

Wird er als neue box PHP angelegt oder wird er in die Bestehende Vote box eingesetzt ?

Ich hatte ihn mal zum test als asl eigene Box erstellt aber dann kommen nur Fehldarstellungen im design und als seite genau das selbe deshalb bin ich nun doch etwas verwirrt.

lg
Mairu
Administrator

User Pic

Posts: 1908
# 25.04.2014 - 18:03:36
    zitieren



Nein das ist eine Seite für den contents Ordner, ich hatte es contents/voted.php genannt, wie im Kommentar oben auch zu sehen ist.

Dann kann man die Seite index.php?voted-1 aufrufen, um die abstimmenden für die Umfrage mit der id 1 zu sehen.
In der Box kann man dann ein Links einbauen, der die Seite für die angezeigte Umfrage öffnet.
Reaverlike
Jungspund

User Pic

Posts: 44
# 25.04.2014 - 18:18:50
    zitieren



Ah jetzt habe ich dummbatz es auch verstanden xD

Kann man in diese liste auch einbauen wer noch abstimmen muss ?

nur wo bekomme ich raus welche umfrage welche ID besitzt ?

lg


Zuletzt modifiziert von Reaverlike am 25.04.2014 - 18:20:57
Mairu
Administrator

User Pic

Posts: 1908
# 27.04.2014 - 07:12:56
    zitieren



Das einfachste wäre, wie gesagt, "einfach" einen Link bei der Umfragebox oder/und der normalen Umfrage mit einzusetzen, dort weiß man, welche Umfrage man gerade anzeigt.

Also z.B. in der contents/vote.php nach
 Php
1:
          echo '</td></tr>';
suchen (das erste der beiden Vorkommen ändern) und durch
 Php
1:
          echo ' <a class="smalfont" href="index.php?voted-' $fraRow->poll_id '">Wer hat abgestimmt?</a></td></tr>';
ersetzen


Hier dann noch eine Version der voted.php, bei denen auch noch die User angezeigt werden, die bisher noch nicht abgestimmt haben.

 Php von Datei include/contents/voted.php
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
  <?php
/**
 * Zeige Personen die abgestimmt haben für Umfragen, die nur für User sind
 * Aufruf: index.php?voted-{ID}
 *      {ID} - (poll_)id der Umfrage
 *
 * @author Mairu
 */
defined ('main') or die ('no direct access');

$title $allgAr['title'] . ' :: ' $lang['vote'];
$hmenu $lang['vote'];
$design = new design ($title $hmenu);
$design->header();

$voteId = (int) $menu->get(1);
if (
$voteId 0) {
    
$qry db_query('SELECT * FROM prefix_poll WHERE poll_id = ' $voteId);
    if (
db_num_rows($qry)) {
        
$voteRow db_fetch_assoc($qry);
    }
}

if (isset(
$voteRow) && $voteRow['recht'] === '2') {
    echo 
'<div><strong>Umfrage:</strong> ' $voteRow['frage'] . '</div>';
    
$userIds array_unique(array_map('intval'explode('#'$voteRow['text'])));

    
$qry db_query('SELECT id, name FROM prefix_user');

    
$votes = array(
        
'done' => array(
            
'title' => 'Es haben abgestimmt',
            
'emptyText' => 'Es hat noch niemand abgestimmt',
            
'users' => array()
        ),
        
'missing' => array(
            
'title' => 'Noch abstimmen müssen',
            
'emptyText' => 'Alle haben bereits abgestimmt',
            
'users' => array()
        )
    );

    while (
$userRow db_fetch_assoc($qry)) {
        if (
in_array($userRow['id'], $userIds)) {
            
$type 'done';
        } else {
            
$type 'missing';
        }
        
$votes[$type]['users'][] = '<a href="index.php?user-' $userRow['id'] . '">' $userRow['name'] . '</a>';
    }
    foreach (
$votes as $type => $voteAr) {
        echo 
$voteAr['title'] . ': <ul>';
        if (empty(
$voteAr['users'])) {
            echo 
$voteAr['emptyText'];
        } else {
            echo 
'<li>' implode('</li><li>'$voteAr['users']) . '</li>';
        }
        echo 
'</ul>';
    }
} else {
    echo 
'Umfrage nicht gefunden oder nicht nur für User';
}

$design->footer();


Zuletzt modifiziert von Mairu am 27.04.2014 - 07:27:38
Reaverlike
Jungspund

User Pic

Posts: 44
# 27.04.2014 - 11:40:07
    zitieren



Hallo Mairu,

Das funktioniert an sich schonmal gut. Nur erscheint nun über dem Header folgende meldung

Warning: Cannot modify header information - headers already sent by (output started at /var/www/XXXX/html/Fidelitas/include/contents/voted.php:1) in /var/www/XXXX/html/Fidelitas/include/includes/class/design.php on line 23

lg
Mairu
Administrator

User Pic

Posts: 1908
# 28.04.2014 - 06:28:25
    zitieren



Dann erstelle voted.php nochmal mit einem vernünftigen Editor (Notepad2, Notepad++, PSPad, ...), dann sollte das gehen.
Es sei denn du hast wirklich selbst Leerzeichen\-zeilen vor dem <?php in der voted.php eingefügt, dann einfach nur diese entfernen.
Reaverlike
Jungspund

User Pic

Posts: 44
# 28.04.2014 - 17:07:34
    zitieren



Ahh cool danke

Vielen dank

lg