|
кто знает подскажите плиз
вот код с помощью которого можно проголосовать
работает без БД, контролирует по ip, все нормально, но его можно поставить один раз на страницу, если ставить больше то нажав на одной форме результат выводиться во всех
Как сделать так что бы я смогла поставить много таких форм на страницу и они были не зависимы друг от друга?
Код:<link href="style/style.css" rel="stylesheet" type="text/css" /> <?php if ( (!isset($_POST['submit'])) ) { ?> <form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post"> <table width="100%"> <tr><td>оценка:</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="ок" name="submit"/></td></tr> </table> </form> <?php } else { $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 средний: ".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>
Присвойте каждой форме уникальное имя.
Мне нужно каждой теме созданной мной присвоить свой рейтинг , в строчке show_ratings_control ("1"); еденицу менять на 2,3,4 ....
если оставить так как есть то выводит один рейтинг для всех тем созданных мной, как сделать что бы я мог менять цифры и эта цифра присваивалось именной той новости которую я добавил
помогите плиз
добавление новости
вывод новостиКод:<? require('config.php'); if($_POST['do']=='addnew') { $title=$_POST['title']; $news=$_POST['news']; $text1=$_POST['text1']; $text2=$_POST['text2']; $fp=fopen(NEWS_FILE,"a"); $formatted=str_replace("\r\n","<br>",$news); $formatted=str_replace("\n","<br>",$formatted); $newsto=date("")."%~#".$title."%~#".$text1."%~#".$text2."%~#".$formatted; if(ENCODING=='yes') $newsto=base64_encode($newsto) ; fwrite($fp,StripSlashes($newsto)."\n"); fclose($fp); echo ' Новость добавлена '; } ?> <form name="form1" method="POST" action="<?echo $_SERVER['PHP_SELF']?>"> <p align="center">Заголовок : <input type="text" name="title" size="60" value=" " style="border-style:outset;"></p> <p align="center">Добавить: <textarea name="text1" rows="1" cols="43" style="border-style:outset; resize: none;"> </textarea></p> <p align="center">Опис <textarea id="area" name="text2" rows="4" cols="47" style="border-style:outset;">Описание </textarea></p> <p align="center"> <textarea name="news" rows="13" cols="39" style="border-style:outset;"> </textarea></p> <p align="center"><input type="submit" name="formbutton1" value="добавить" style="border-style:outset;"><br> </p> <input type="hidden" name="do" value="addnew"> </form>
Код:<? require('config.php'); include_once('ratings/ratings.php'); ?> <html> <head> </head> <? $startpage=$_GET['page']; $xnews=file(NEWS_FILE); $xnews=array_reverse($xnews); $startpage-=1; $ubound=count($xnews); if($startpage<0 || $startpage>=$ubound/PERPAGE) $startpage=0; if (PERPAGE<$ubound) if($startpage==0) echo "< назад | "; else echo "< <a href=".$_SERVER['PHP_SELF']."?page=$startpage>назад</a> | "; if($ubound>PERPAGE) for($j=1;$j<=ceil($ubound/PERPAGE);$j++) { if($j==$startpage+1) echo "<big><b>$j</b></big> "; else echo "<a href=".$_SERVER['PHP_SELF']."?page=$j>$j</a> "; } if(PERPAGE<$ubound) if($startpage+1>=$ubound/PERPAGE) echo " | вперед >"; else echo " | <a href=".$_SERVER['PHP_SELF']."?page=".($startpage+2).">вперед</a> >"; for($i=$startpage*PERPAGE;$i<$startpage*PERPAGE+PERPAGE && $i<$ubound;$i++) { if(ENCODING=='yes') $xnews[$i]=base64_decode($xnews[$i]); $crtsplit=""; $crtsplit=explode("%~#",$xnews[$i]); echo "<table border=\"1\" cellspacing=\"0\"><tr><td width=\"1000\" bgcolor=\"#EDF0FA\"><font color=\"444444\"><b>$crtsplit[1]</b> <b>$crtsplit[0]</b></font></td></tr>"; echo "<br><tr><td>$crtsplit[2] <br> $crtsplit[3] <br> $crtsplit[4] <br> "; show_ratings_control ("1"); <<<<<<<<<<<<<<<<<<<<<<ВОТ ЭТА СТРОЧКА echo "</td></tr> </table>"; } ?> </body></html>
Последний раз редактировалось Жека@House; 26.08.2011 в 23:53.
Первый приведенный код будет работать если в php.ini register_globals=On (что не самом деле очень небезопасно). А поскольку переменная приходит методом GET, то надо явно это указывать.
getenv() лишняя. Можно просто $_SERVER['REMOTE_ADDR'];
Из литературы посоветовал бы официальный мануал с php.net
Начал для себя ковырять понемногу PHP. Начал тренироваться на "кошках", т.е на простейших примерах. И вот в примере обработчика формы заказа столкнулся с тем, что обработчик не получает переменные из формы заказа.
Письмо отправляется, но переменные $fio и $address отсутствуют в тексте письма и выскакивает сообщение на странице, что "Обнаружена ошибка при отправке письма!". Соответствующие имена полей указаны. Почитал тему с начала, пробовал применить $_GET[], но это ничего не дало. Подозреваю, что какая-то нестыковка по версиям PHP. Понимаю, что нужно курить толковые книги по PHP, но терпения уже нет. Как победить эту напасть?PHP код:
<?php
$v = mail("[email protected]","Заказ с сайта","На сайте был сделан заказ. \n
Заказ пришел от: $fio \n Адрес доставки: $address","Content-type:text/plain; charset=windows-1251\r\n");
if ($v=="true") {echo "Ваше сообщение успешно отправлено!";}
else {echo "Обнаружена ошибка при отправке письма!";}
?>
P.S. Тестирую на локальном сервере Denwer.
Кактус - это разочаровавшийся в жизни и ни во что не верящий огурец.
Обработчик PHP я сделал отдельным файлом obrabotka.php (его текст приведен выше). А в HTML-коде странице есть такой код формы:
Код HTML:<form action="obrabotka.php" method="post" name="form1"> <p><strong>Введите своё ФИО</strong><br> <input type="text" name="fio" width="20"> </p> <p><strong>Введите адрес доставки</strong><br> <textarea name="address" cols="40" rows="5"> </textarea> </p> <p> <input type="submit" name="button" value="Отправить заказ"> </p> </form>
Кактус - это разочаровавшийся в жизни и ни во что не верящий огурец.
Так Вы отправляете данные методом POST а не GET
Поэтому пробуйте так -
$v = mail("[email protected]","Заказ с сайта","На сайте был сделан заказ. \n
Заказ пришел от: ".$_POST['fio']." \n Адрес доставки: ".$_POST['address']."","Content-type:text/plain; charset=windows-1251\r\n");
if ($v=="true") {echo "Ваше сообщение успешно отправлено!";}
else {echo "Обнаружена ошибка при отправке письма!";}
И кстати зачем Вам textarea для адреса..можно тоже использовать текстовое поле
Последний раз редактировалось lastride; 29.08.2011 в 11:08.
Спасибо за подсказку! Действительно, я пытался использовать разные методы в одном наборе.Сделал, как Вы сказали и получил следующее:
1. Письмо пришло с данными из формы.
2. После отправки на странице появилось сообщение "Обнаружена ошибка при отправке письма!"
3. При вводе одинарных кавычек в прямоугольные скобки после отправки выскакивает сообщение об ошибке в синтаксисе.После удаления этих кавычек получил события по пп 1 и 2.
Почему происходит п.2 и почему такой нюанс по п.3?
А textarea использовал для разнообразия и тренировки.
P.S. Буквально за несколько минут до Вашего сообщения я сам прозрел и увидел, что пытался использовть разные методы в форме и в обработчике.![]()
Последний раз редактировалось Флаперон; 29.08.2011 в 12:49.
Кактус - это разочаровавшийся в жизни и ни во что не верящий огурец.
Поправлюсь.
При использовании ".$_POST['fio']." ошибки синтаксиса не выскакивало. Но ошибка об отправке сообщения есть. Когда я написал $_POST[fio] было то же самое. А вот когда я написал $_POST['fio'] - появилась ошибка синтаксиса.
Кактус - это разочаровавшийся в жизни и ни во что не верящий огурец.
если Вы например пишите просто echo $_POST['fio']; то всё правильно..если вы пишите что-то типа такого - echo "pam pam ".$_POST['fio']." pam pararam"; то пост нужно писать именно так..иначе будет ошибка синтаксиса..можно ещё так - echo "pam pam {$_POST['fio']}";
ах да..вот в чём ваша ошибка..if ($v=="true")
Вы сравниваете $v со строкой "true" а Вам надо сравнить булевый тип..то есть следует переписать так - if ($v == true)
без кавычек..
Ё-моё! Победил этот код!!!Оказывается, у меня перед mail стояла большая V ($V), а в условии if стояла маленька v ($v). Теперь все работает и появляется "Ваше сообщение успешно отправлено!"
Еще раз спасибо Вам, lastride, за подсказки!!!![]()
Кактус - это разочаровавшийся в жизни и ни во что не верящий огурец.
Я офигеваю, дорогая редакция. Флаперон, ну изучите основы языка, читайте документацию, смотрите, что возвращают функции и методы. Потом уже и кошек насилуйте. Мне страшно за вашего сферического покупателя. Как изучите, ставьте себе PhpStorm. Он подобные опечатки хорошо отлавливает.
Считаешь себя украинцем? Изучай украинскую историю и культуру.
Объясняю! У меня внепланово возникла необходимость разобраться с ситуацией, которая никогда меня не интересовала и, возможно, никогда больше не заинтересует. Тем более, я не собираюсь на этом зарабатывать денег (так что мои гипотетические "сферические покупатели"(с) могут облегченно выдохнуть). Взяться за разрешение этой ситуации (проблемы) сподвиг меня праздный интерес и кое-какие элементарные знания HTML-кода и основ программирования. А теперь скажите: вы бы на моём месте стали бы покупать какие-то самоучители (которые стоят немалых денег), стали бы записываться на какие-то курсы? Или просто попросили бы у более грамотных в данном вопросе товарищей помощи по этому вопросу? Ответ очевиден. И моя просьба о помощи в разборе двух строк кода врядли доставила какие-то неудобства людям, которые хорошо разбираются в этом. По крайней мере, lastride, не счел зазорным помочь мне разобраться с кодом, за что говорю ему ещё раз спасибо. При этом я сам полазил в тырнете и поискал информацию, которая могла бы мне помочь в моём вопросе. Поэтому, ваш выпад с упреком на изучение основ языка, мягко говоря, неуместен. Или я "достал" всю местную общественность своими бестолковыми вопросами, которые без конца задаю с начала темы?
Если мне нужен будет этот язык - я его выучу. А потом, возможно, ещё и сам буду здесь кому-то помогать. Но это так, предположения. И поверьте мне: в свои почти 40 лет, имея инженерное образование, я прекрасно знаю, как, где и каким образом получить требуемые мне знания, которых у меня в данный момент нет.
Такие дела. Надеюсь, я доходчиво объяснил свой взгляд на некоторые вещи. За PhpStorm - спасибо! Если буду дальше интересоваться PHP, то поюзаю его.
Кактус - это разочаровавшийся в жизни и ни во что не верящий огурец.
Для начала изучения PHP не нужно никаких учебников, все учебники и самоучители есть в интернете
Все очень подробно описано, разжевано и выложено на тарелочку с голубой каемочкой
PHP.net
PHP.su
на втором есть достаточно интересное руководство начинающему программисту
Социальные закладки