Делаю рейтинг для игровых серверов и так... Я вывожу список серверов из бд через цикл. Код (PHP): <?php do { echo '<div class="servers"> <form method="POST" action=""> <div class="rank_block"> <div class="rank" align="right"> rank<br><font size="3" color="#000">'.$array['value'].'</font> </div> <div class="rank_up"> <center><input type="submit" name="votes" value=""></input></center> </div> </div> </form> <div class="servers_info"> <div class="name_serv">' .$array['servername']. '</div> <div class="players_serv">' .$array['pl'].'/'.$array['maxpl']. '</div> <div class="mode_serv">' .$array['gamemode']. '</div> <div class="add_to_samp"> '.$array['ip'].':'.$array['port'].' </div> <div class="site"> [url="http://'.$url.'"]Сайт[/url] </div> </div> </div> <a href="samp://'.$array['ip'].':'.$array['port'].'"> <div class="play"> <div class="text_play"> PLAY! </div> </div></a> </br>'; // Блок голосования if(isset($_POST['votes'])){ $idds = $array['id']; $s = $array['value']; $vs = ++$s; mysqli_query($connect,"UPDATE servers SET value='$vs' WHERE id LIKE $idds "); } } while($array = mysqli_fetch_array($query3)); mysqli_close($connect); ?> Выводит список как надо уже в готовом виде, у каждой строчки с сервером есть кнопка и счетчик голосов, так вот при нажатии на кнопку у ОПРЕДЕЛЕННОГО сервера нужно +1 к общему числу голосов записать в бд, и тут встает вопрос? как выдернуть id определенной строчки... Как делаю я, получаю ID из массива $array['id'] и сравниваю этот id с id в бд если они равны то делаю запись. Запись в бд производится после нажатия кнопки выделено цветом выше в коде. Т.к сделано у меня при нажатии кнопки, он плюсует 1 ко всем записям в цикле, но мне надо у определенного, Подскажите как лучше реализовать это?! Пример сайта gtamonточкаru
echo $array['id'] только 1. не используй больше цикл do..while, используй while. 2. эскейпить хтмл надо.
$array['id'] - он мне показывает ид но мне кажется, что из-а цикла он записывает данные всем строчкам а мне нужно определенной... Экронизация вроде в норме ошибок не выдает и выводит все как надо) у меня один большой минус то что данную операцию он делает всем строчкой а не той которой я выбираю... как вообще этот рейтинг реализовать можно, дайте советы... целый день сижу думаю и надумать не могу...
Код (PHP): UPDATE table SET votes = ((SELECT votes FROM table WHERE id = '$id') + 1) WHERE id = '$id' Добавлено спустя 26 секунд:Наверно так
Не катит, с таким интересным запросом вообще перестал записывать в бд, прогнал запрос через var_dump вообе тип bool(false)показывает
machetero, здесь вложенный запрос лишний, трата времени. Можно и без него, раз запрос завязан на одном id ((
Gruts, а рекомендации igordata выполнил?? а то какая-то херь в первом посту, что даже вдаваться в подробности и разбираться не хочется во все... ((
А какие у него советы-то, цикл сменил а с html все в порядке. может как-то по другому можно сделать? хотелось бы сделать что при нажатии на кнопку добавлялось 1 к значению у определенного сервера а потом при выводе сделал бы сортировку массива по убыванию... но я не могу сделать что бы кол. голосов изменялось у каждой строчки отдельно.... а не все вместе... я думаю что это из-за цикла, т.к и кнопка и запрос находится в нем.
выкладывай тогда, как изменил к человеко-понятному коду, а дальше видно будет, если смысл дальше разговаривать...((
И так весь код находится на одной страничке с подключение конфигурационого файла ну там соединение с бд, я не сильно шарю в пхп и код полный 0, но все же он работает), выслушаю любую критику и сделаю выводы! Так вот что мне нужно: Начиная от строчки "// вывод списка серверов" пошел вывод серверов с бд через цикл While, и генерация блоков ну HTML разметка выведена через echo, так вот. В этом HTML так же встроена кнопка через <form> ну при нажатии которой идет POST запрос (который в бд якобы должен записать новое значение), она записывает значение но записывает всем строчкам..... не могу понять в чем дело... думаю что это из за цикла то, что кнопка сделана в цикле... сайт с работой скрипта http://gtamon.ru/ кнопка - стрелка Код (PHP): <!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <?php include_once('config/config.php'); ?> <html xmlns="http://www.w3.org/1999/xhtml" lang="ru"><head profile="http://gmpg.org/xfn/11"> <link rel="shortcut icon" href="/img/favicon.png" type="image/png"> <meta http-equiv="Content-Type" content="text/html; charset=windows-1251" /> <meta http-equiv="Content-Style-Type" content="text/css"> <meta name="keywords" content="samp, мониторинг, sa-mp, самп, гта, gta, маниторинг gta, маниторинг, сервера, гта онлайн, gta онлайн, online, список серверов samp"> <meta name="description" content="GTAMON - это мониторинг SAMP серверов. Хотите найти сервер, что бы провести время или желаете рассказать о своем сервере, тогда скорее переходите на сайт. Постоянные акции и подарки от администрации твоего любимого сервера. Ждем тебя!"> <title>GTAMON - МОНИТОРИНГ СЕРВЕРОВ</title> <link rel="stylesheet" href="./css/style.css" type="text/css"> <style> src: url(./css/UniSans.ttf); </style> </head> <body> <div class="wrapper"> <div class="otp"> </div> <div class="content"> <div class="block_up"> <div class="logo_block"> <div class="logo"> </div> <a href="module/addserver.php"><div class="add_server"> <center><div class="text_add_server"> Добавить сервер </div></center></a> </div> </div> <div class="piar_block"> <div class="server_1"> <div class="logo_server_1"> [url="index.html"]<img src="/img/play_bot.png" alt="PLAY!">[/url] </div> <div class="text_server_1"> <div class="name_server_1"> RUSSIAN SERVER [RUS/LT] </div> <div class="ip_server_1"> 23.435.432.23:7777 </div> <div class="mode_server_1"> ROLE PLAY </div> </div> </div> <div class="server_2"> <div class="logo_server_2"> [url="index.html"]<img src="/img/play_bot.png" alt="PLAY!">[/url] </div> <div class="text_server_2"> <div class="name_server_2"> RUSSIAN SERVER [RUS/LT] </div> <div class="ip_server_2"> 23.435.432.23:7777 </div> <div class="mode_server_2"> ROLE PLAY </div> </div> </div> <div class="podblock"> РЕКОМЕНДОВАНО ВАМ </div> </div> </div> <?php // проверка на работоспособность сервера while($array = mysqli_fetch_array($query3)) { if(!$array['gamemode'] != null){ unset($array['ip']); unset($array['port']); } else{ // вывод списка серверов $url = $array['web']; echo '<div class="servers"> <form method="POST" action=""> <div class="rank_block"> <div class="rank" align="right"> rank<br><font size="3" color="#000">'.$array['value'].'</font> </div> <div class="rank_up"> <center><input type="submit" name="votes" value=""></input></center> </div> </div> </form> <div class="servers_info"> <div class="name_serv">' .$array['servername']. '</div> <div class="players_serv">' .$array['pl'].'/'.$array['maxpl']. '</div> <div class="mode_serv">' .$array['gamemode']. '</div> <div class="add_to_samp"> '.$array['ip'].':'.$array['port'].' </div> <div class="site"> [url="http://'.$url.'"]Сайт[/url] </div> </div> </div> <a href="samp://'.$array['ip'].':'.$array['port'].'"> <div class="play"> <div class="text_play"> PLAY! </div> </div></a> </br>'; // Блок голосования if(isset($_POST['votes'])){ $idds = $array['id']; $s = $array['value']; $vs = ++$s; mysqli_query($connect,"UPDATE servers SET value='$vs' WHERE id = $idds "); } } } mysqli_close($connect); ?> </div> <?php // Проверяем нужны ли стрелки назад if ($page != 1) $pervpage = '<a href=index.php?page=1><<</a> | <a href=index.php?page='. ($page - 1) .'><</a> | '; // Проверяем нужны ли стрелки вперед if ($page != $total) $nextpage = ' | <a href=index.php?page='. ($page + 1) .'>></a> | <a href=index.php?page=' .$total. '>>></a>'; // Находим две ближайшие станицы с обоих краев, если они есть if($page - 5 > 0) $page5left = ' <a href=index.php?page='. ($page - 5) .'>'. ($page - 5) .'</a> | '; if($page - 4 > 0) $page4left = ' <a href=index.php?page='. ($page - 4) .'>'. ($page - 4) .'</a> | '; if($page - 3 > 0) $page3left = ' <a href=index.php?page='. ($page - 3) .'>'. ($page - 3) .'</a> | '; if($page - 2 > 0) $page2left = ' <a href=index.php?page='. ($page - 2) .'>'. ($page - 2) .'</a> | '; if($page - 1 > 0) $page1left = '<a href=index.php?page='. ($page - 1) .'>'. ($page - 1) .'</a> | '; if($page + 5 <= $total) $page5right = ' | <a href=index.php?page='. ($page + 5) .'>'. ($page + 5) .'</a>'; if($page + 4 <= $total) $page4right = ' | <a href=index.php?page='. ($page + 4) .'>'. ($page + 4) .'</a>'; if($page + 3 <= $total) $page3right = ' | <a href=index.php?page='. ($page + 3) .'>'. ($page + 3) .'</a>'; if($page + 2 <= $total) $page2right = ' | <a href=index.php?page='. ($page + 2) .'>'. ($page + 2) .'</a>'; if($page + 1 <= $total) $page1right = ' | <a href=index.php?page='. ($page + 1) .'>'. ($page + 1) .'</a>'; // Вывод меню если страниц больше одной echo "<div class=\"page\">"; echo "<center><div class=\"block_page\">"; if ($total > 1) { Error_Reporting(E_ALL & ~E_NOTICE); echo ''.$pervpage.$page5left.$page4left.$page3left.$page2left.$page1left.'<b>'.$page.'</b>'.$page1right.$page2right.$page3right.$page4right.$page5right.$nextpage.''; } echo "</div>"; echo "</div></center>"; ?> </div> </div> </body> </html> Подсказка от модератора: Любой код или текст конфигурации пишите между тегом [code=php] и [/code]. Используйте отступы в коде для форматирования текста. Это помогает быстрее понять вас, увеличивает шанс на получение ответа. Что выделять? Например: PHP, HTML, CSS, JavaScript, SQL, XML, .htaccess, ini, регулярные выражения, код шаблонизаторов, любая другая разметка, результаты array/object dump и т. д.
я бы для начало: 1) в hidden поместил бы id-шники в форме; 2) и в самом начале, после подключения конфига, делал бы уже UPDATE, по переданному id как-то так... ( может кто-то что-то интереснее предложит ((
хммм сейчас попробую Добавлено спустя 6 минут 8 секунд: Сделал, но происходит непонятна хрень Код (PHP): <!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <?php include_once('config/config.php'); if(isset($_POST['votes'])){ $idds = $_POST['id']; $s = $array['value']; $vs = ++$s; mysqli_query($connect,"UPDATE servers SET value='$vs' WHERE id = $idds "); } ?> <html xmlns="http://www.w3.org/1999/xhtml" lang="ru"><head profile="http://gmpg.org/xfn/11"> <link rel="shortcut icon" href="/img/favicon.png" type="image/png"> <meta http-equiv="Content-Type" content="text/html; charset=windows-1251" /> <meta http-equiv="Content-Style-Type" content="text/css"> <meta name="keywords" content="samp, мониторинг, sa-mp, самп, гта, gta, маниторинг gta, маниторинг, сервера, гта онлайн, gta онлайн, online, список серверов samp"> <meta name="description" content="GTAMON - это мониторинг SAMP серверов. Хотите найти сервер, что бы провести время или желаете рассказать о своем сервере, тогда скорее переходите на сайт. Постоянные акции и подарки от администрации твоего любимого сервера. Ждем тебя!"> <title>GTAMON - МОНИТОРИНГ СЕРВЕРОВ</title> <link rel="stylesheet" href="./css/style.css" type="text/css"> <style> src: url(./css/UniSans.ttf); </style> </head> <body> <div class="wrapper"> <div class="otp"> </div> <div class="content"> <div class="block_up"> <div class="logo_block"> <div class="logo"> </div> <a href="module/addserver.php"><div class="add_server"> <center><div class="text_add_server"> Добавить сервер </div></center></a> </div> </div> <div class="piar_block"> <div class="server_1"> <div class="logo_server_1"> [url="index.html"]<img src="/img/play_bot.png" alt="PLAY!">[/url] </div> <div class="text_server_1"> <div class="name_server_1"> RUSSIAN SERVER [RUS/LT] </div> <div class="ip_server_1"> 23.435.432.23:7777 </div> <div class="mode_server_1"> ROLE PLAY </div> </div> </div> <div class="server_2"> <div class="logo_server_2"> [url="index.html"]<img src="/img/play_bot.png" alt="PLAY!">[/url] </div> <div class="text_server_2"> <div class="name_server_2"> RUSSIAN SERVER [RUS/LT] </div> <div class="ip_server_2"> 23.435.432.23:7777 </div> <div class="mode_server_2"> ROLE PLAY </div> </div> </div> <div class="podblock"> РЕКОМЕНДОВАНО ВАМ </div> </div> </div> <?php // проверка на работоспособность сервера while($array = mysqli_fetch_array($query3)) { if(!$array['gamemode'] != null){ unset($array['ip']); unset($array['port']); } else{ // вывод списка серверов $url = $array['web']; $ids = $array['id']; echo '<div class="servers"> <form method="POST" action=""> <div class="rank_block"> <div class="rank" align="right"> rank<br><font size="3" color="#000">'.$array['value'].'</font> </div> <div class="rank_up"> <input type="hidden" name="id" value="'.$ids.'"> <center><input type="submit" name="votes" value=""></input></center> </div> </div> </form> <div class="servers_info"> <div class="name_serv">' .$array['servername']. '</div> <div class="players_serv">' .$array['pl'].'/'.$array['maxpl']. '</div> <div class="mode_serv">' .$array['gamemode']. '</div> <div class="add_to_samp"> '.$array['ip'].':'.$array['port'].' </div> <div class="site"> [url="http://'.$url.'"]Сайт[/url] </div> </div> </div> <a href="samp://'.$array['ip'].':'.$array['port'].'"> <div class="play"> <div class="text_play"> PLAY! </div> </div></a> </br>'; // Блок голосования } } mysqli_close($connect); ?> </div> <?php // Проверяем нужны ли стрелки назад if ($page != 1) $pervpage = '<a href=index.php?page=1><<</a> | <a href=index.php?page='. ($page - 1) .'><</a> | '; // Проверяем нужны ли стрелки вперед if ($page != $total) $nextpage = ' | <a href=index.php?page='. ($page + 1) .'>></a> | <a href=index.php?page=' .$total. '>>></a>'; // Находим две ближайшие станицы с обоих краев, если они есть if($page - 5 > 0) $page5left = ' <a href=index.php?page='. ($page - 5) .'>'. ($page - 5) .'</a> | '; if($page - 4 > 0) $page4left = ' <a href=index.php?page='. ($page - 4) .'>'. ($page - 4) .'</a> | '; if($page - 3 > 0) $page3left = ' <a href=index.php?page='. ($page - 3) .'>'. ($page - 3) .'</a> | '; if($page - 2 > 0) $page2left = ' <a href=index.php?page='. ($page - 2) .'>'. ($page - 2) .'</a> | '; if($page - 1 > 0) $page1left = '<a href=index.php?page='. ($page - 1) .'>'. ($page - 1) .'</a> | '; if($page + 5 <= $total) $page5right = ' | <a href=index.php?page='. ($page + 5) .'>'. ($page + 5) .'</a>'; if($page + 4 <= $total) $page4right = ' | <a href=index.php?page='. ($page + 4) .'>'. ($page + 4) .'</a>'; if($page + 3 <= $total) $page3right = ' | <a href=index.php?page='. ($page + 3) .'>'. ($page + 3) .'</a>'; if($page + 2 <= $total) $page2right = ' | <a href=index.php?page='. ($page + 2) .'>'. ($page + 2) .'</a>'; if($page + 1 <= $total) $page1right = ' | <a href=index.php?page='. ($page + 1) .'>'. ($page + 1) .'</a>'; // Вывод меню если страниц больше одной echo "<div class=\"page\">"; echo "<center><div class=\"block_page\">"; if ($total > 1) { Error_Reporting(E_ALL & ~E_NOTICE); echo ''.$pervpage.$page5left.$page4left.$page3left.$page2left.$page1left.'<b>'.$page.'</b>'.$page1right.$page2right.$page3right.$page4right.$page5right.$nextpage.''; } echo "</div>"; echo "</div></center>"; ?> </div> </div> </body> </html>
Да все включено, но ничего толкового нет.... подскажите как реализовать рейтинг этот долбаный вот мне только его и осталось сделать...
Теме уже примерно три дня, этого достаточно чтобы прочитать книгу для начинающих по PHP и MySQL. Просто основ ты не знаешь, и мы не можем помочь. Только всё сделать за тебя, но мало кто это захочет делать. На этот случай в книгах рассказывают про отладку, чтобы ты мог проследить весь путь выполнения программы, так ты сможешь понять где начинается проблема, и обычно это можно сделать только самостоятельно. http://phpfaq.ru/debug https://netbeans.org/kb/docs/php/debugging_ru.html
Странно и за три дня толковых ответов не нашлось.... Смысл тему вообще перенесли в "сделать за меня" я не говорю, что кто-то должен все сделать и дать готовое! Парадокс подсказал, я попробовал но не получилось, это единственный совет за три дня.
ты просто не знаешь основ и не можешь понять ответы. пытаемся подсказать, так как не кому не интересно всё делать за тебя. дал инструкцию на отладку, но лучше книгу почитать, с помощью отладки всё сможешь сам исправить. тут просто много чего делать, и много всякого так как версии php разные, окружение разное, не весь код есть, вот по этому и подсказывают тебе чтобы ты самостоятельно всё смог сделать.