У меня есть таблица кандидатов, которые содержат: Можно их вывести по одному (допустим по id, до последнего), и по нажатию той или иной кнопки (в скрине лайк или дислайк) он отбрасывает обратно на ту же страницу, но выводит уже следующего кандидата? Вот тут например он выводит по факультету, в алфавитном порядке, и по нажатию лайка он записывает имя студента (перед этим стоял логин), имя/фамилию кандидата, ии если нажал лайк, то записывает лайк, дислайк - значит дислайк И ПОСЛЕ ОБРАБОТКИ ОН ВОЗВРАЩАЕТ ОБРАТНО, НО ВЫВОДИТ УЖЕ СЛЕДУЮЩЕЕ ИМЯ? Простите если повторяюсь, просто очень хочу сделать эту запись,
Re: вывод по одному имени. обновил страницу - выводит следую Что-то типа такого http://binom.u-gu.ru/0.php ? Нажал на кнопку получил следующую запись? Да, можно. Можно с обновлением страницы, можно без обновления страницы (ajax). Следует инкрементировать значение переменной и возвращать увеличенное значение пользователю. Например в поле hidden ++$i; <input type="hidden" name="i" value="<?=$i;?>"> При запросе к mysql следует устанавливать в limit '.$i.', 1' Например так: $res = mysql_query('select * from news order by id desc limit '.$i.', 1' ) or die('error!'); Вариант с ajax: http://binom.u-gu.ru/ajax.php Увеличивать переменную можно с помощью JavaScript и просто передавать методом GET, таким образом: xmlHttp.open("GET", "index.php?page="+i++, true);
Re: вывод по одному имени. обновил страницу - выводит следую дададада, ток он должен считывать с одной базы, аааааа пошел проверять, надеюсь разберусь, нооо спасибо за идею, уже давно мучаюсь как бы записать эти лайки для кандидатов реально спасибо)
Re: вывод по одному имени. обновил страницу - выводит следую Если будут затруднения, напишите, я просто сброшу вам весь код.
Re: вывод по одному имени. обновил страницу - выводит следую а можно понаглеть и сразу сбросить весь код? по крайней мере что косается поля hidden о нём слышу первый раз, поэтому не знаю что/как иии этот весь код, он должен стоять при выводе? просто по нажатию лайка/дислайка он отправляет в другой файл, где записывает в базу нужную информацию и с этого файла обратно на первый, Код (Text): <a href="plus.php?plus=<?php echo $candidate_id; ?>"><img src="images/like.png" /></a> вот как он отсылает
Re: вывод по одному имени. обновил страницу - выводит следую Без ajax. Код (Text): <? ++$i; ##Инкремент $c=$i-1; ##Переменная для подстановки в sql запрос require_once 'admin/config.php'; mysql_connect(HOST, USER, PASSWORD) or die('error! No Connection!'); mysql_query("SET NAMES utf8"); mysql_select_db(NAME_BD) or die('error! Check BD connection'); $res = mysql_query('select * from news order by id desc limit '.$c.', 1' ) or die('error!'); $row = mysql_fetch_array($res); #Если вывод пустой, сбросить счетчик if(empty($row['head'])) { $i=0; } ?> <form method="get"> <input type="hidden" name="i" value="<?=$i;?>"> <input type="submit" value="Show News"> </form> <?=$row['head']?> <?=$row['date']?> <?=nl2br($row['text'])?> Я думаю, сумеете перепилить под свои нужды.
Re: вывод по одному имени. обновил страницу - выводит следую не уверен, я в этом деле новичок, ноо попытаюсь... и вот первый вопрос: Код (Text): ++$i; ##Инкремент изначально $i чему равен? Код (Text): $res = mysql_query('select * from candidate order by candidate_id desc limit '. $c .', 1' ) or die('error!'); что берет $c? и самое главное можно ли сделать в одной форме два баттана тоесть, если плюс, он отсылает на один файл, если минус, он отсылает на другой файл, записывает этого кандидата ии значение +, что он за него и возвращает обратно на этот файл, выводя уже следующего кандидата как в скрине
Re: вывод по одному имени. обновил страницу - выводит следую Изначально i=1, ноль теряем. Чтобы вернуть 0 вводим вторую переменную с=i-1. И c=0, ее в запрос. В запросе в limit $c, 1 - это значит начать вывод с 0 значения по 1 записи (0 будет при первой загрузке). Может быть, можно по другому определять переменные, но сути это не меняет. Безусловно можно сделать две кнопки с разными именами: <form> <input type=submit name=name1> <input type=submit name=name2> </form> Далее проверять с помощью isset Если установлена переменная name1 Тогда одни действия Если установлена другая name2 Какие-то иные действия (допустим, декремент) https://php.net/manual/ru/language.operators.increment.php
Re: вывод по одному имени. обновил страницу - выводит следую $res = mysql_query('select * from candidate order by candidate_id desc limit '. $c .', 1' ) or die('error!'); можно объяснить эту часть? Код (Text): <form method="get"> <input type="hidden" name="i" value="<?=$i;?>"> </form> а этот код, почему метод именно get type="hidden" name="i" value="<?=$i;?>" может я туплю, за это дико извиняюсь но как мне это поможет вывести другого кандидата? :сс Код (Text): <?=$row['date']?> <?=nl2br($row['text'])?> ии почему тут nl2br?
Re: вывод по одному имени. обновил страницу - выводит следую Не обращайте внимания ни на переменную $c, ни на остальные конкретные вещи в скрипте, скрипт вырван из конкретного контекста. Ваша задача, как я понял: нажать на ссылку, поставить кому-то лайк и вывести другого кандидата. В общем случае решается так, для примера: <? ##i равно 1 при первой загрузке, первая запись ++$i; ##вывод кандидата из базы, выводим первого. $resault = mysql_query('select * from candidate order by candidate_id desc limit '. $i .', 1' ); Тут ваши данные для вывода, я не знаю, как у вас там организовано. echo "something"; ?> Допустим, ниже после скрипта кнопка, у меня в том случае указан метод get, можно его убрать, запрос все равно get по умолчанию. Можете поставивть post. <form> <input type="hidden" name="i" value="<?=$i;?>"> <input type="submit" value="Show News"> </form> В поле hidden после первой загрузки будет значение 1. Можете проверить заменив hidden на text, Нажали на кнопку, передали переменную name="i", значение получило инкремент 2, и оказалось в запросе к базе, получили вывод второго кандидата, поле hidden получило значение 2, опять нажали, получили 3 и т.д. Далее уже ваша конкретная реализация: действия, если нажали dislike, действия если нажали like - еще какой-то запрос к базе для записи какого-то значения. Какие-то условия и на их основе какой-то вывод.
Re: вывод по одному имени. обновил страницу - выводит следую Код (Text): <table width=600 border="0"> <tr style="font-weight: bold; font-size: 20px;"> <th>Name</th> <th>Surname</th> <th>Faculty</th> <th>+ / -</th> </tr> <?php $i = 0; ++$i; ##Инкремент require_once "connectme.php"; $res = mysql_query("SELECT * FROM candidate ORDER by candidate_id") or die('error!'); $row = mysql_fetch_array($res); #Если вывод пустой, сбросить счетчик if(empty($row['candidate_name'])) { $i=0; } ?> <tr> <th><?=$row['candidate_name']?></th> <th><?=$row['candidate_surname']?></th> <th><?=$row['candidate_faculty']?></th> <th> <form method="get"> <input type="text" name="plus" value="<?=$i;?>"> <input type="submit" value="+" id="like"> </form> <form method="get" action="minus.php"> <input type="hidden" name="minus" value="<?=$i;?>"> <input type="submit" value="-" id="like"> </form> </th> </tr> </table> вот мой код, если сначала $i=1, то он сразу делает инкремент и уже второе значение, проверил заменив hidden на text, дальше, обработка, Код (Text): <form method="get"> <input type="text" name="plus" value="<?=$i;?>"> <input type="submit" value="+" id="like"> </form> <form method="get" action="minus.php"> <input type="hidden" name="minus" value="<?=$i;?>"> <input type="submit" value="-" id="like"> </form> в первой форме он обрабатывает в том же файле, просто я после всего HTML написал Код (Text): if(isset($_GET['plus'])) { $id = $_GET['plus']; $res = mysql_query("SELECT * FROM candidate WHERE candidate_id='$id'") or die('error!'); $row = mysql_fetch_array($res); $candidate_id = $row['candidate_id']; $candidate_name = $row['candidate_name']; $candidate_surname = $row['candidate_surname']; $candidate_faculty = $row['candidate_faculty']; $sqlb = mysql_query("INSERT INTO voting_results (`student_name`, `candidate_name`, `candidate_surname`, `candidate_faculty`, `result_value`) VALUES ('$_SESSION[student_name]', '$row[candidate_name]', '$row[candidate_surname]', '$row[candidate_faculty]', '+')") or die (mysql_error()); } правильная ли у меня обработка? ии как лучше, чтоб он перекидывал на другой файл ( plus.php иminus.php ) или в конце прописать if(isset... как я сделал на первой форме?? ии он мне все равно выводит только первого чувака, тоесть не делает инкремент на ИД я Вам наверное уже надоел, и простиите, ноо этот вывод по одному иии запись лайка/дислайка мне очень нужен, На данный момент даже воздух так сильно не нуженн
Re: вывод по одному имени. обновил страницу - выводит следую Если вы ставите так в скрипте $i=0; потом инкремент ++$i;, при выполнении скрипта, во всех последующих перезагрузках страницы вы получите одно и то же значение переменной $i. Код (Text): <?php $i = 0; ++$i; ##Инкремент require_once "connectme.php"; Добавлено спустя 3 минуты 31 секунду: Re: вывод по одному имени. обновил страницу - выводит следующею Нет, неправильная <?php ++$i; ##Инкремент require_once "connectme.php"; $res = mysql_query("SELECT * FROM candidate ORDER by candidate_id limit '. $i .', 1'") or die('error!'); $row = mysql_fetch_array($res);
Re: вывод по одному имени. обновил страницу - выводит следую если так, то у меня выдает ошибку: Notice: Undefined variable: i in C:\xampp\htdocs\evoting\evote.php on line 50 error! а в 50 у меня икремент ++$i;
Re: вывод по одному имени. обновил страницу - выводит следую Я не заметил, в каких у вас кавычках select, в одинарных попробуйте: Код (Text): $res = mysql_query('SELECT * FROM candidate ORDER by candidate_id limit '. $i .', 1') or die('error!');
Re: вывод по одному имени. обновил страницу - выводит следую уже перед изменил, все равно эта ошибка вот как выглядит и еще он записывает первого участника(ИД 1), а выводит второго (с ИД 2) может у меня сама форма не правильная? Код (Text): <form method="get"> <input type="text" name="plus" value="<?=$i;?>"> <input type="submit" value="+" id="like"> </form>
Re: вывод по одному имени. обновил страницу - выводит следую Notice это не ошибка, а замечание, что переменная не проинициализирована. В начале скрипта $i=$_GET['i']; И здесь вы опять просто вывели кандидата ничего не указав в limit, вообще не указав limit $res = mysql_query("SELECT * FROM candidate WHERE candidate_id='$id'") or die('error!'); Разберитесь заодно, в каком скрипте у вас что лежит. action="minus.php" Только вы знаете, как организован у вас код.
Re: вывод по одному имени. обновил страницу - выводит следую Notice: Undefined index: i in C:\xampp\htdocs\evoting\evote.php on line 50 ВЫВОД Код (Text): <table width=600 border="0"> <tr style="font-weight: bold; font-size: 20px;"> <th>Name</th> <th>Surname</th> <th>Faculty</th> <th>+ / -</th> </tr> <?php $i = $_GET['i']; ++$i; ##Инкремент require_once "connectme.php"; $res = mysql_query('SELECT * FROM candidate ORDER by candidate_id limit '. $i .', 1') or die('error!'); $row = mysql_fetch_array($res); #Если вывод пустой, сбросить счетчик if(empty($row['candidate_name'])) { $i=0; } ?> <tr> <th><?php echo $row['candidate_name']; ?></th> <th><?php echo $row['candidate_surname']; ?></th> <th><?php echo $row['candidate_faculty']; ?></th> <th> <form method="get"> <input type="hidden" name="plus" value="<?=$i;?>"> <input type="submit" value="+" id="like"> </form> <form method="get"> <input type="hidden" name="minus" value="<?=$i;?>"> <input type="submit" value="-" id="like"> </form> </th> </tr> </table> ПЛЮС Код (Text): if(isset($_GET['plus'])) { $i = $_GET['plus']; //$id = $_GET['plus']; $res = mysql_query('SELECT * FROM candidate limit '. $i .', 1') or die('error!'); $row = mysql_fetch_array($res); $candidate_id = $row['candidate_id']; $candidate_name = $row['candidate_name']; $candidate_surname = $row['candidate_surname']; $candidate_faculty = $row['candidate_faculty']; $sqlb = mysql_query("INSERT INTO voting_results (`student_name`, `candidate_name`, `candidate_surname`, `candidate_faculty`, `result_value`) VALUES ('$_SESSION[student_name]', '$row[candidate_name]', '$row[candidate_surname]', '$row[candidate_faculty]', '+')") or die (mysql_error()); } МИНУС Код (Text): if(isset($_GET['minus'])) { $i = $_GET['minus']; //$id = $_GET['plus']; $res = mysql_query('SELECT * FROM candidate limit '. $i .', 1') or die('error!'); $row = mysql_fetch_array($res); $candidate_id = $row['candidate_id']; $candidate_name = $row['candidate_name']; $candidate_surname = $row['candidate_surname']; $candidate_faculty = $row['candidate_faculty']; $sqlb = mysql_query("INSERT INTO voting_results (`student_name`, `candidate_name`, `candidate_surname`, `candidate_faculty`, `result_value`) VALUES ('$_SESSION[student_name]', '$row[candidate_name]', '$row[candidate_surname]', '$row[candidate_faculty]', '-')") or die (mysql_error()); } может проще мне скинуть весь архив и Вы сами посмотрите почему такая лажа?;с
Re: вывод по одному имени. обновил страницу - выводит следую Попробуй так тогда, чтобы убрать предупреждение: Код (Text): if (isset($_GET['i'])) { ++$i; $c=$i-1; } else { $i=0; $c=$i; echo $i; }
Re: вывод по одному имени. обновил страницу - выводит следую спасибо, проблему решил, нашел другой способ с ajax еще раз спасибо <3