[ KumRusvelt @ 24.12.2010. 18:04 ] @
Pozdrav svima, pre nekoliko dana skinuo sam tutorijal koji obrađuje anketu, urađen je u kombinaciji sa jqueri
plug in-om i pratećom js skriptom što daje prilično dobru animaciju anketnog rezultata, ali kada simuliram prosleđivanje
upita javlja mi upozorenje ovoga tipa: Warning: Cannot modify header information - headers already sent by
(output started at C:\xampp\htdocs\mysite\poll.php:2) in C:\xampp\htdocs\mysite\poll.php on line 42
poll.php skripta izgleda ovako:
Code:
<?php
//Update database information according to your server settings
$conn=mysql_connect('localhost', 'root', '') or die("Can't connect to mysql host");
//Select the database to use
mysql_select_db('mysite') or die("Can't connect to DB");
if(!$_POST['poll'] || !$_POST['pollid']){
    $query=mysql_query("SELECT id, ques FROM questions ORDER BY id DESC LIMIT 1");
    while($row=mysql_fetch_assoc($query)){
        //display question
        echo "<p class=\"pollques\" >".$row['ques']."</p>";
        $poll_id=$row['id'];
    }
    if($_GET["result"]==1 || $_COOKIE["voted".$poll_id]=='yes'){
        //if already voted or asked for result
        showresults($poll_id);
        exit;
    }
    else{
    //display options with radio buttons
        $query=mysql_query("SELECT id, value FROM options WHERE ques_id=$poll_id");
        if(mysql_num_rows($query)){
            echo '<div id="formcontainer" ><form method="post" id="pollform" action="'.$_SERVER['PHP_SELF'].'" >';
            echo '<input type="hidden" name="pollid" value="'.$poll_id.'" />';
            while($row=mysql_fetch_assoc($query)){
                echo '<p><input type="radio" name="poll" value="'.$row['id'].'" id="option-'.$row['id'].'" /> 
                <label for="option-'.$row['id'].'" >'.$row['value'].'</label></p>';
            }
            echo '<p><input type="submit"  value="Submit" /></p></form>';
            echo '<p><a href="'.$_SERVER['PHP_SELF'].'?result=1" id="viewresult">View result</a></p></div>';
        }
    }
}
else{
    if($_COOKIE["voted".$_POST['pollid']]!='yes'){
        
        //Check if selected option value is there in database?
        $query=mysql_query("SELECT * FROM options WHERE id='".intval($_POST["poll"])."'");
        if(mysql_num_rows($query)){
            $query="INSERT INTO votes(option_id, voted_on, ip) VALUES('".$_POST["poll"]."', '".date('Y-m-d H:i:s')."', '".$_SERVER['REMOTE_ADDR']."')";
            if(mysql_query($query))
            {
                //Vote added to database
                setcookie("voted".$_POST['pollid'], 'yes', time()+86400*300);                
            }
            else
                echo "There was some error processing the query: ".mysql_error();
        }
    }
    showresults(intval($_POST['pollid']));
}
function showresults($poll_id){
    global $conn;
    $query=mysql_query("SELECT COUNT(*) as totalvotes FROM votes WHERE option_id IN(SELECT id FROM options WHERE ques_id='$poll_id')");
    while($row=mysql_fetch_assoc($query))
        $total=$row['totalvotes'];
    $query=mysql_query("SELECT options.id, options.value, COUNT(*) as votes FROM votes, options WHERE votes.option_id=options.id AND votes.option_id IN(SELECT id FROM options WHERE ques_id='$poll_id') GROUP BY votes.option_id");
    while($row=mysql_fetch_assoc($query)){
        $percent=round(($row['votes']*100)/$total);
        echo '<div class="option" ><p>'.$row['value'].' (<em>'.$percent.'%, '.$row['votes'].' votes</em>)</p>';
        echo '<div class="bar ';
        if($_POST['poll']==$row['id']) echo ' yourvote';
        echo '" style="width: '.$percent.'%; " ></div></div>';
    }
    echo '<p>Total Votes: '.$total.'</p>';
}
?>


Napomenuo bih da je linija 42 poll.php
setcookie("voted".$_POST['pollid'], 'yes', time()+86400*300);
A izdvojio sam iz left_template.php deo vezan za anketu

Code:
<link rel="stylesheet" type="text/css" href="styles.css" />
<script type="text/javascript" src="js/jquery-1.3.2.js" ></script>
<script type="text/javascript" >
$(function(){
    var loader=$('#loader');
    var pollcontainer=$('#pollcontainer');
    loader.fadeIn();
    //Load the poll form
    $.get('poll.php', '', function(data, status){
        pollcontainer.html(data);
        animateResults(pollcontainer);
        pollcontainer.find('#viewresult').click(function(){
            //if user wants to see result
            loader.fadeIn();
            $.get('poll.php', 'result=1', function(data,status){
                pollcontainer.fadeOut(1000, function(){
                    $(this).html(data);
                    animateResults(this);
                });
                loader.fadeOut();
            });
            //prevent default behavior
            return false;
        }).end()
        .find('#pollform').submit(function(){
            var selected_val=$(this).find('input[name=poll]:checked').val();
            if(selected_val!=''){
                //post data only if a value is selected
                loader.fadeIn();
                $.post('poll.php', $(this).serialize(), function(data, status){
                    $('#formcontainer').fadeOut(100, function(){
                        $(this).html(data);
                        animateResults(this);
                        loader.fadeOut();
                    });
                });
            }
            //prevent form default behavior
            return false;
        });
        loader.fadeOut();
    });
    
    function animateResults(data){
        $(data).find('.bar').hide().end().fadeIn('slow', function(){
                            $(this).find('.bar').each(function(){
                                var bar_width=$(this).css('width');
                                $(this).css('width', '0').animate({ width: bar_width }, 1000);
                            });
                        });
    }
    
});
</script>

    <div id="container" >
        <h1>User Poll</h1>
        <div id="pollcontainer" >
        </div>
        <p id="loader" >Loading...</p>
    </div>


Bio bih zahvalan na pomoći.
[ Miroslav Ćurčić @ 24.12.2010. 22:08 ] @
Šta ti je u drugom redu ove skripte? To ti šalje problematičan output.
[ Miroslav Ćurčić @ 24.12.2010. 22:41 ] @
U drugom redu stoji početni tag php, ja sam malo čačkao po sličnim problemima na inostranim forumima pa sam naišao na jedan gde daje neka objašnjenja koja bi po prirodi stvari odgovarao ovom problemu koji sam izneo, ali sam slab sa engleskim, a google translate mi i nije od neke pomoći. Evo linka http://www.phpfreaks.com/forum...read-here-before-posting-them/, posebno obratiti pažnju na krajnji tekst gde objašnjava neke veze sa utf8 encode, sobzirom da sam u bazu tabele question ubacio opcije koje imaju u textu slova č,š,ć, te pretpostavljam da mi to stvara najveći problem, ne znam možda grešim.

Pozdrav.
[ KumRusvelt @ 24.12.2010. 22:43 ] @
U drugom redu stoji početni tag php, ja sam malo čačkao po sličnim problemima na inostranim forumima pa sam naišao na jedan gde daje neka objašnjenja koja bi po prirodi stvari odgovarao ovom problemu koji sam izneo, ali sam slab sa engleskim, a google translate mi i nije od neke pomoći. Evo linka http://www.phpfreaks.com/forum...read-here-before-posting-them/, posebno obratiti pažnju na krajnji tekst gde objašnjava neke veze sa utf8 encode, sobzirom da sam u bazu tabele question ubacio opcije koje imaju u textu slova č,š,ć, te pretpostavljam da mi to stvara najveći problem, ne znam možda grešim.

Pozdrav.
[ KumRusvelt @ 24.12.2010. 22:59 ] @
Problem je rešen pre početnog taga mi je ostao deo od prethodne skripte u znaku ? i zato mi je javljao gre[ku u drugoj liniji.
Izvinjavam se na mojoj gluposti.