snowalker 0 Raportează post Postat August 2, 2007 Sunt mai nou in ale webdesignului si am nevoie urgenta de rezolvare in urmatoarea problema: am pus un sondaj pe o pagina html dar dupa ce dau vote imi deschide pagina cu voturi si imi arata ca nu-i niciun vot. ar putea fi vorba de o permisiune la scriere care ar trebui data la fisierul care inregistreaza voturile sau e vre-o problema din codul php? Care ar putea fi problema? Multumesc. codul din pagina html: <form action=poll.php method=post> Doriti inca un mandat pentru primarul Neculai Ratoi?<br> <input type=radio name=vote value="Da"> Da<br> <input type=radio name=vote value="Nu"> Nu<br> <input type=radio name=vote value="Nu stiu"> Nu stiu<br> <input type=radio name=vote value="Da. De arestare"> Da. De arestare<br> <input type=submit value=Vote> </form> codul din pagina php: // DEFINE THE VARIABLES // // title of this poll $title = "Doriti inca un mandat pentru primarul Neculai Ratoi?"; // closing date for this poll in MM/DD/YYYY format $closingDate = "1/1/2010"; // text file that stores vote choices and totals $pollFile = "poll.txt"; // text file that stores IP addresses $ipFile = "ips.txt"; // full path to your CSS style sheet $styleSheet = "http://yoursite/style.css"; // leave blank if you aren't using this // DO NOT EDIT BELOW THIS POINT UNLESS YOU KNOW PHP! // // DEFINE THE FUNCTIONS // // check if the poll has closed function is_closed() { global $closingDate; // split the closing date into month, day, and year $closingDate = explode("/", $closingDate); // get today's today to test against the closing date $today = getdate(); $message = date("l, F j", mktime(0,0,0,$closingDate[0],$closingDate[1],$today[year])); // if today's year is greater than the closing year, return true if ($today[year] > $closingDate[2]) { return $message; } // if today's year is equal to the closing year elseif ($today[year] == $closingDate[2]) { // if today's month is greater than the closing month, return true if ($today[mon] > $closingDate[0]) { return $message; } // if today's month is equal to the closing month elseif ($today[mon] == $closingDate[0]) { // if today is greater than or equal to the closing day, return true if ($today[mday] >= $closingDate[1]) { return $message; } // if the poll is still open, return false else { return false; } } // if the poll is still open, return false else { return false; } } // if the poll is still open, return false else { return false; } } // check if the user has already voted function has_voted() { global $ipFile; global $REMOTE_ADDR; // open the IP address file $ips = fopen($ipFile, "r"); // compare each entry with the user's IP address while (!feof($ips)) { $ip = fgets($ips, 20); if ($ip == $REMOTE_ADDR . "\r\n") { $match = 1; break; } } // close the IP address file fclose($ips); if (!$match) { // reopen the IP address file $ips = fopen($ipFile, "a"); // add the user's IP address fputs($ips, $REMOTE_ADDR . "\r\n"); // close the IP address file fclose($ips); return false; } else { return true; } } // add the user's vote function addVote($vote) { global $pollFile; // get the current votes $fp_read = fopen($pollFile, "r"); $currentVote = fread($fp_read, filesize($pollFile)); fclose($fp_read); // create an array with even numbers containing vote choices // and odds containing vote totals $votes = split('[|:]', $currentVote); // update the vote for ($i = 1; $i < count($votes); $i = $i + 2) { // get the array index number for the name of this vote $name = $i - 1; // if this vote choice is this user's selection, increment it if ($votes[$name] == $vote) { $votes[$i]++; } // if this vote IS the last choice if ($i == (count($votes) - 1)) { $updatedVote .= $votes[$name] . ":" . $votes[$i]; } // if this vote is NOT the last choice else { $updatedVote .= $votes[$name] . ":" . $votes[$i] . "|"; } } // save the updated vote $fp_write = fopen($pollFile, "w"); fputs($fp_write, $updatedVote); fclose($fp_write); } // display the poll function displayPoll($message) { global $title, $pollFile, $styleSheet; echo "<html>\n"; echo "<head>\n"; echo "<title>$title</title>\n"; echo "<link rel=\"stylesheet\" type=\"text/css\" href=\"$styleSheet\">\n"; echo "</head>\n\n"; echo "<body>\n"; // get the current votes $fp_read = fopen($pollFile, "r"); $currentVote = fread($fp_read, filesize($pollFile)); fclose($fp_read); // create an array with even numbers containing vote choices // and odds containing vote totals $votes = split('[|:]', $currentVote); // if a message was sent, print it if (isset($message)) { echo "<p align=center>$message</p>\n\n"; } echo "<table align=center>\n"; echo "<caption align=top><b>$title</b></caption>\n"; // print the poll table rows // including vote choice, vote total, and percentage of total votes for ($i = 1; $i < count($votes); $i = $i + 2) { // add together each vote total to find the total number of votes cast $totalVotes += $votes[$i]; } for ($i = 1; $i < count($votes); $i = $i + 2) { // get the array index number for the name of this vote $name = $i - 1; // calculate the percentage of total votes for this vote // rounded to 1 decimal place if ($totalVotes == 0) { $percentage = 0; } else { $percentage = $votes[$i] / $totalVotes * 100; $percentage = round($percentage, 1); } echo "<tr>\n"; echo "\t<td>$votes[$name]</td>\n"; echo "\t<td>$votes[$i] votes</td>\n"; // if the percentage is 0, don't print a bar if ($percentage == 0) { echo "\t<td>$percentage%</td>\n"; } // otherwise, print the bar else { echo "\t<td><img src=poll.jpg width=$percentage height=15> $percentage%</td>\n"; } echo "</tr>\n"; } // print the total number of votes cast echo "<caption align=bottom>Total Votes: $totalVotes</caption>\n"; // finish printing the poll table echo "</table>\n"; echo "</body>\n"; echo "</html>\n"; } // PROGRAM CODE // // if the poll is closed, display the poll and exit if ($message = is_closed()) { displayPoll("The poll closed on " . $message . "."); exit; } // if the user is not voting, display the poll and exit if (!isset($vote)) { displayPoll(""); exit; } // if the user has already voted, display the poll and exit if (has_voted()) { displayPoll("You already voted."); exit; } // add the user's vote addVote($vote); // display the poll displayPoll(""); codul din pagina txt: Da:0|Nu:0|Nu stiu:0|Da. De arestare:0| Partajează acest post Link spre post Distribuie pe alte site-uri