Помогите с голосованием

shinydo

Новичок
Есть простой .php скрипт (без использования БД , который записывает в файл).

Я хочу использовать его для конкурса голосований фотографий .
Я в .php еще новичек и был бы очень признателен узнать как его использовать адекватно , ведь у меня на странице будет где то 60 фотографий , а использовать 60 форм мне кажется уже слижком ...

или если кто то сталкивался с такой же проблемой тыкните пальцем

Заранее спасибо всем
 

radioheaded

PHP нуб
Можно все голоса отправлять одной формой. Но даже если каждый голос отдельной формой — для вас не так уж страшно.
 

Absinthe

жожо
shinydo начинать любую задачу нужно с анализа.
В данном случае ты это забыл сделать. И поэтому ты его и не видишь.
 

shinydo

Новичок
shinydo начинать любую задачу нужно с анализа.
В данном случае ты это забыл сделать. И поэтому ты его и не видишь.
в чём ошибка ? я ведь объяснил что еще новичек в .пхп , задачу вроде нормально сформулировал , и вопрос о том как это можно решить тоже вроде норм. задал ...

если вы не хотите помочь это ваше дело , я ведь не заставляю ))
 

md5S

Это вам не это.
shinydo ошибка твоя в том что ты прячешься за ярлыком "я новичек", задача твоя ясна и поэтому тебе рекомендуют использовать БД. Что бы тебе помочь - ты должен продемонстрировать, что у тебя получилось, а где вызвало затруднение.
 

hell0w0rd

Продвинутый новичок
Я новичек и не хочу ничего учить!
Ну на тогда: docs.google.com
ЗЫ ну и не интересно же когда все фотки на одной странице - человеку всегда хочется выбирать из двух фоток:) две картинки, обернутые в ссылки, можно и без базы. Можно в файл сериализовывать массив и постоянно его обратно считывать, уйма вариантов)
 

shinydo

Новичок
какие вы все злые ... кто сказал что я не хочу учится ?
я ведь не просил сделать мне скрипт - не просил ... лишь обьяснил как он работает и как сделать для того что бы использовать ту же форму для большого числа фотографий .
 

md5S

Это вам не это.
shinydo для начала придумываешь архитектуру таблиц, далее делаешь html форму, и основной функционал, со всеми рассчитанными действиями пользователя.

две картинки, обернутые в ссылки, можно и без базы. Можно в файл сериализовывать массив и постоянно его обратно считывать
можно, но не стоит - при увеличении функционала, тебе захочется добавить всевозможные фильтр и тут ты поймешь, что попал впросак.
 

hell0w0rd

Продвинутый новичок
md5S Ты по аватару определяешь кому отвечаешь?) смотри на ник))
С чего бы это попал в просак? можно попасть в просак с очередью на этот файл, размером массива, но явно не его структурой - меняй как хочешь, это же ассоциативный массив
ТС судя по всему не знает основ работы с БД, отсюда и вопросы. Ничего страшного если ТС прийдет к использованию баз именно таким путем, зато четко будет понимать, что базы - те же файлы, только умнее)
Когда ТС захочет попробовать базы - советую начать с книги http://www.e-reading-lib.org/bookreader.php/140820/Gruber_-_Ponimanie_SQL.pdf
 

shinydo

Новичок
shinydo для начала придумываешь архитектуру таблиц, далее делаешь html форму, и основной функционал, со всеми рассчитанными действиями пользователя.


можно, но не стоит - при увеличении функционала, тебе захочется добавить всевозможные фильтр и тут ты поймешь, что попал впросак.
с формой я уже давно определился :

фотография , селект с выбором оценки и кнопка голосовать и всё .

с одиночной фотографии и скриптом проблем нет , все работает : засчитывает голос , пишет в файл , повторный голос не засчитывается , короче все как надо . Но дело в том что смысл использовать его для голосования за 1 из большого числа фотографий .
 

hell0w0rd

Продвинутый новичок
shinydo это конечно вопрос не связный с php, но я бы никогда не стал разом заполнять форму из 60 вопросов, думаю я не один такой. А так тебе ответили - либо много мелких форм, либо одна большая.
 

shinydo

Новичок
спасибо всем за ответы и помощь .

еще кое что :
при голосовании мне нужно что бы в конце выводилось имя формы - где я запишу имя участника , как всё это реализовать что бы вставить тут :
PHP:
<?php  
       echo "Рейтинг из $totalRates  голосов : ".substr(($totalPoints/$totalRates),0,3)."<br/>" ; <<<< тут вставить имя формы
       for ($i=0;$i<round(($totalPoints/$totalRates),0);$i++){
          echo "<img src='style/star.png' alt='s' />";
       }
echo "</div>";
помогите пожалуйста .
 

md5S

Это вам не это.
hell0w0rd я видел что ты не ТС, но советовать работать сериализованными данными в файлах для такой задачи не стоит.
но явно не его структурой - меняй как хочешь, это же ассоциативный массив
ни кто и не говорил что структура может повлиять как то, я говорил что искать, что то, в сериализованном массиве не удобно, и ресурсозатратно.

с одиночной фотографии и скриптом проблем нет , все работает : засчитывает голос , пишет в файл , повторный голос не засчитывается , короче все как надо . Но дело в том что смысл использовать его для голосования за 1 из большого числа фотографий .
телепатия не мой конек
 

shinydo

Новичок
PHP:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "DTD/xhtml1-transitional.dtd">
<html>
<head>
   <title></title>
   <link href="style/style.css" rel="stylesheet" type="text/css" />
</head>
<body>
  <div id="main">
    <div id="caption">Голосование</div>
    <div id="icon">&nbsp;</div>
    
    <?php if ( (!isset($_POST['submit'])) ) { ?>
        <form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
            <table width="100%">
              <tr><td>Your rating:</td><td><select name="rate">
              <?php for ($i = 1; $i <= 10; $i++) { echo "<option value=\"$i\">$i</option>"; } ?>
      </select></td></tr>
              <tr><td colspan="2" align="center"><input type="submit" value="Rate it!" name="submit"/></td></tr>
            </table>
       </form> 
       <?php } else  { 
	    $n = $_POST['name']; 
            $rate = isset ($_POST['rate']) ? $_POST['rate'] : 0;
	    $filename = "ratings";
            $alreadyRated = false;
            $totalRates = 0;
            $totalPoints = 0;
                        
            $ip = getenv('REMOTE_ADDR');
            $oldResults = file('results/'.$filename.'.txt');
            foreach ($oldResults as $value) {
            	$oneRate = explode(':',$value);
            	if ($ip == $oneRate[0]) $alreadyRated = true;	   
            	$totalRates++;
            	$totalPoints += $oneRate[1];
            }

            if ((!$alreadyRated) && ($rate > 0)){            
               $f = fopen('results/'.$filename.".txt","a+");         
               fwrite($f,$ip.':'.$rate."\n");
               fclose($f);
               $totalRates++;
               $totalPoints+=$rate;
            }
            
?>           
      <div id="result">
       
<?php  
       echo "Рейтинг из $totalRates голосов участника -  $n is: ".substr(($totalPoints/$totalRates),0,3)."<br/>";
       for ($i=0;$i<round(($totalPoints/$totalRates),0);$i++){
          echo "<img src='style/star.png' alt='s' />";
       }
echo "</div>";       
       } ?>        

  </div>
 
Сверху