Выбор элемента
Подскажите, пожалуйста, как выбрать элементы, которые отрисовываются в цикле 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 |
А готовый html как результат работы РНР нельзя показать или религия не позволяет?
|
Вложений: 1
Вы имеете в виду веб-страницу? Она на локальном сервере, могу только картинку приложитьhttps://javascript.ru/forum/attachme...d=151956562 6
|
Цитата:
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 должен быть уникальным в пределах страницы. |
Понимаю, но CSS почему-то классу такого элемента не задает стиль... только id. Думал, что JS так же себя поведет
|
Цитата:
А вот увлекаться 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()); Это что такое? |
Это невероятно,я с ошибкой написал имя метода :cray: , теперь работает
Сама функция 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> Цитата:
|
Цитата:
Во-вторых это полнейшая глупость, ибо записи могут удаляться, а будучи уникальным значением они повторно не будут использованы, то есть запрос id=45 может ничего и не вернуть. В третьих, это насилование базы, а не выборка из нее. Если необходимо получить 300 записей, значит: mysql_query("SELECT * FROM ".$userName." ORDER BY id LIMIT 300") и уже результат выборки в цикле и помещать в нужное. И or die(mysql_error()); - это тоже плохо. Ошибки нужно выводить по условию - режим отладки? вывод, иначе что-то, но не mysql_error(). <form id='editForm' - такого быть не должно, вам уже говорилось, что id должно быть уникальным. Да и не нужно столько форм, форма должна быть одна. |
Спасибо за дельные советы, буду исправлять :)
А id у формы только по той причине, что CSS по классу не хотел задавать ей стиль, лучше не придумал |
Цитата:
Вы вообще лишнего написали - все это нужно делать одной формой, все 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 удалить одним запросом. Удаление/редактирование по одному может быть удобным только в случае асинхронного обмена. |
Часовой пояс GMT +3, время: 09:49. |