Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 25.02.2018, 16:15
Новичок на форуме
Отправить личное сообщение для SIGTTD Посмотреть профиль Найти все сообщения от SIGTTD
 
Регистрация: 25.02.2018
Сообщений: 6

Выбор элемента
Подскажите, пожалуйста, как выбрать элементы, которые отрисовываются в цикле php? Ни по id, ни по class не получается
Код php:
for($i = 300; $i >= 0; $i--) {
  $resultDB = mysql_query("SELECT * FROM ".$userName." WHERE id = $i") or die(mysql_error());
  $dab = mysql_fetch_assoc($resultDB);
  if (($dab["id"] != 0) && ($dab["class"] == $postClass)) {
    echo "<div><form id='editForm' method='post' action='edit.php'>
      <p class='postContentClass' id='postContent'>".htmlspecialchars($dab["content"])."</p>
      <textarea class='editedPostClass' id='editedPost' name='editedPost".$dab['id']."'>".htmlspecialchars($dab["content"])."</textarea>
      <input type='submit' name='editPost".$dab['id']."' value='Изменить'>
    </form>
    </div>";}}

Нужно по клику мыши на #postContent убрать его и сделать видимым #edited Post

Последний раз редактировалось SIGTTD, 25.02.2018 в 16:37.
Ответить с цитированием
  #2 (permalink)  
Старый 25.02.2018, 16:24
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 11,621

А готовый html как результат работы РНР нельзя показать или религия не позволяет?
Ответить с цитированием
  #3 (permalink)  
Старый 25.02.2018, 16:34
Новичок на форуме
Отправить личное сообщение для SIGTTD Посмотреть профиль Найти все сообщения от SIGTTD
 
Регистрация: 25.02.2018
Сообщений: 6

Вы имеете в виду веб-страницу? Она на локальном сервере, могу только картинку приложитьhttps://javascript.ru/forum/attachme...d=151956562 6
Изображения:
Тип файла: jpg Безымянный.jpg (80.3 Кб, 5 просмотров)
Ответить с цитированием
  #4 (permalink)  
Старый 25.02.2018, 16:38
Аватар для Белый шум
Профессор
Отправить личное сообщение для Белый шум Посмотреть профиль Найти все сообщения от Белый шум
 
Регистрация: 19.01.2012
Сообщений: 371

Сообщение от SIGTTD Посмотреть сообщение
Нужно выбрать #postContent, убрать его, сделать видимым #edited Post
for($i = 300; $i >= 0; $i--) {
  $resultDB = mysql_query("SELECT * FROM ".$userName." WHERE id = $i") or die(mysql_error());
  $dab = mysql_fetch_assoc($resultDB);
  if (($dab["id"] != 0) && ($dab["class"] == $postClass)) {
    echo "<div id='i" . $i . "'><form class='editForm' method='post' action='edit.php'>
      <p class='postContentClass postContent'>".htmlspecialchars($dab["content"])."</p>
      <textarea class='editedPostClass editedPost' name='editedPost".$dab['id']."'>".htmlspecialchars($dab["content"])."</textarea>
      <input type='submit' name='editPost".$dab['id']."' value='Изменить'>
    </form>
    </div>";}}


id должен быть уникальным в пределах страницы.

Последний раз редактировалось Белый шум, 25.02.2018 в 17:16. Причина: убрал лишний параметр class
Ответить с цитированием
  #5 (permalink)  
Старый 25.02.2018, 16:41
Новичок на форуме
Отправить личное сообщение для SIGTTD Посмотреть профиль Найти все сообщения от SIGTTD
 
Регистрация: 25.02.2018
Сообщений: 6

Понимаю, но CSS почему-то классу такого элемента не задает стиль... только id. Думал, что JS так же себя поведет
Ответить с цитированием
  #6 (permalink)  
Старый 26.02.2018, 01:03
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 11,621

Сообщение от SIGTTD
Вы имеете в виду веб-страницу? Она на локальном сервере, могу только картинку
Если картинку можно, то почему html нет? Открываем отладчик браузера, выбираем участок html-кода в нем, копируем и выставляем здесь.

А вот увлекаться id таким образом <div id='i" . $i . "'> не стоит, это бессмыслица, а вот тут name='editedPost".$dab['id']."' польза. Только используйте кавычки наоборот.

for($i = 300; $i >= 0; $i--)
$resultDB = mysql_query("SELECT * FROM ".$userName." WHERE id = $i") or die(mysql_error());

Это что такое?

Последний раз редактировалось laimas, 26.02.2018 в 01:13.
Ответить с цитированием
  #7 (permalink)  
Старый 26.02.2018, 15:50
Новичок на форуме
Отправить личное сообщение для SIGTTD Посмотреть профиль Найти все сообщения от SIGTTD
 
Регистрация: 25.02.2018
Сообщений: 6

Это невероятно,я с ошибкой написал имя метода , теперь работает
Сама функция
function editClicked() {
	var postView = document.getElementById('postContent');
	postView.addEventListener('click', function() {
		var postArea = document.getElementById('editedPost');
		postView.style.visibility = 'hidden';
		postView.style.zIndex = '0';
		postArea.style.display = 'block';
		postArea.style.zIndex = '50';
	});
}

Но все же непонятно, почему с одинаковыми id получается, вот три элемента:
<div>id: 63; content: <br><form id='editForm' method='post' action='edit.php'>
	<p class='postContentClass' id='postContent'>АК</p>
	<textarea class='editedPostClass' id='editedPost' name='editedPost63'>АК</textarea>
	<div>
		<input type='submit' name='editPost63' value='Изменить'>
		<input id='deletePost' type='submit' name='deletePost63' value='Удалить'>
		<span class='postMeta'>23, January, 1:5</span>
	</div>
</form></div>
<div>id: 62; content: <br><form id='editForm' method='post' action='edit.php'>
	<p class='postContentClass' id='postContent'>Shick!</p>
	<textarea class='editedPostClass' id='editedPost' name='editedPost62'>Shick!</textarea>
	<div>
		<input type='submit' name='editPost62' value='Изменить'>
		<input id='deletePost' type='submit' name='deletePost62' value='Удалить'>
		<span class='postMeta'>22, January, 21:21</span>
	</div>
</form></div>
<div>id: 57; content: <br><form id='editForm' method='post' action='edit.php'>
	<p class='postContentClass' id='postContent'>I wanna know more</p>
	<textarea class='editedPostClass' id='editedPost' name='editedPost57'>I wanna know more</textarea>
	<div>
		<input type='submit' name='editPost57' value='Изменить'>
		<input id='deletePost' type='submit' name='deletePost57' value='Удалить'>
		<span class='postMeta'>22, January, 21:13</span>
	</div>
</form></div>

Сообщение от laimas
for($i = 300; $i >= 0; $i--)
$resultDB = mysql_query("SELECT * FROM ".$userName." WHERE id = $i") or die(mysql_error());
А в цикле просто записи выцепляются по очереди, криво сделано?

Последний раз редактировалось SIGTTD, 26.02.2018 в 15:57.
Ответить с цитированием
  #8 (permalink)  
Старый 26.02.2018, 16:01
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 11,621

Сообщение от SIGTTD
А в цикле просто записи выцепляются по очереди, криво сделано?
И криво, и просто ужасно. Во-первых $i >= 0 просто не может быть, если id, это уникальные значения формируемые автоматически полем с автоинкрементом - никогда не будет сформирован ID со значением 0.

Во-вторых это полнейшая глупость, ибо записи могут удаляться, а будучи уникальным значением они повторно не будут использованы, то есть запрос id=45 может ничего и не вернуть.

В третьих, это насилование базы, а не выборка из нее. Если необходимо получить 300 записей, значит:

mysql_query("SELECT * FROM ".$userName." ORDER BY id LIMIT 300")

и уже результат выборки в цикле и помещать в нужное.

И or die(mysql_error()); - это тоже плохо. Ошибки нужно выводить по условию - режим отладки? вывод, иначе что-то, но не mysql_error().

<form id='editForm' - такого быть не должно, вам уже говорилось, что id должно быть уникальным. Да и не нужно столько форм, форма должна быть одна.

Последний раз редактировалось laimas, 27.02.2018 в 07:16.
Ответить с цитированием
  #9 (permalink)  
Старый 26.02.2018, 16:11
Новичок на форуме
Отправить личное сообщение для SIGTTD Посмотреть профиль Найти все сообщения от SIGTTD
 
Регистрация: 25.02.2018
Сообщений: 6

Спасибо за дельные советы, буду исправлять
А id у формы только по той причине, что CSS по классу не хотел задавать ей стиль, лучше не придумал
Ответить с цитированием
  #10 (permalink)  
Старый 26.02.2018, 16:30
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 11,621

Сообщение от SIGTTD
А id у формы только по той причине, что CSS по классу не хотел задавать ей стиль, лучше не придумал
Не надо выдумывать, стиль можно и по ID определить, и по классу.

Вы вообще лишнего написали - все это нужно делать одной формой, все id что есть выбросить (и не только у форм), они вообще не нужны. Поля единственной формы именовать так:

<textarea class="editedPostClass" name="edit[<?=$dab['id']?>"><?=htmlspecialchars($dab['content'])?></textarea>
<input type="checkbox" name="del[]" value="<?=$dab['id']?>">
.....
<textarea class="editedPostClass" name="edit[<?=$dab['id']?>"><?=htmlspecialchars($dab['content'])?></textarea>
<input type="checkbox" name="del[]" value="<?=$dab['id']?>">


с выводом html, или ' ... name="edit['.$dab['id'].'>" если echo.

Те, что надо удалить отмечать флажком. Сервер под ключом del получит id записей для удаления, которые нужно вычесть из id редактируемых (ключ edit), если после этого массив edit будет не пуст, то обновить записи id которых он содержит. Записи del удалить одним запросом.

Удаление/редактирование по одному может быть удобным только в случае асинхронного обмена.

Последний раз редактировалось laimas, 27.02.2018 в 07:15.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Выбор рандомного элемента из массива для элемента Бипач Общие вопросы Javascript 8 10.01.2018 23:14
Элемент select. Выбор элемента в списке nayldock Элементы интерфейса 3 06.01.2015 18:40
сэмулировать выбор первого элемента select evgeniy123 jQuery 2 05.02.2014 01:37
Выбор текущего (при прокрутке) элемента slon_js Events/DOM/Window 4 04.01.2014 17:49
теги в выделенном фрагменте woojin Events/DOM/Window 48 15.08.2012 19:13