Сюжет: Человек может оставлять свои заявки на вступление в команду или её создание по играм. Человек имеет по одной заявке в каждой из этих игр (создание или вступление - без разницы). Человек хочет иметь возможность редактировать свои заявки. Вот код, который печатает форму, в которой находиться табличка со всеми данными заявки (сделано, что при клике на ячейку, ее содержимое можно менять). При малейшем изменении любого поля появляется кнопка сохранения данных. PHP: <?php // $id = isset($_SESSION['steamid']) ? $_SESSION['steamid'] : $_SESSION['id']; //id залогинившегося // $login = $_SESSION['login']; // login залогинившегося // $qery1 = mysqli_query($connect,"SELECT * FROM `dotaplayers` WHERE `user_id` = '$id'"); // $query2 = mysqli_query($connect,"SELECT * FROM `dotateams` WHERE `user_id` = '$id'"); // $query3 = mysqli_query($connect,"SELECT * FROM `csgoteams` WHERE `user_id` = '$id'"); // $query4 = mysqli_query($connect,"SELECT * FROM `csgoplayers` WHERE `user_id` = '$id'"); // $query = mysqli_query($connect,"SELECT * FROM `users` WHERE `login` = '$login' "); // $data = mysqli_fetch_array($query); // $sql_steam ="SELECT * FROM `steam_auth` WHERE `steam_id` = '$steamid'"; // $steam_authing = mysqli_query($connect,$sql_steam); // $steam_data_table = mysqli_fetch_array($steam_authing); if(mysqli_num_rows($query1) > 0 || mysqli_num_rows($query2) > 0 || mysqli_num_rows($query3) > 0 || mysqli_num_rows($query4) > 0 ){ echo "<p><b>Ваши заявки: </b> </p>"; echo "<div style=' margin-bottom: 5px ; border: 1px solid rgba(255, 165, 0, 0.27); padding: 0;background-color: rgba(255, 224, 0, 0.18);'><p style='margin:0;'><img src='img/znak.png' height='40' style='float:left;'>Для редактирования просто щелкните по ячейке, затем на появившуюся кнопку.<br><span style='margin-left: 10px;'>Обычно выполнение операции длиться до 5 сек.</span> </p></div>"; echo "<div id='save' style='margin:0; padding:0; position: relative;bottom: 0;top: 4px;'> </div>"; //Если ищет тиму в доте if(mysqli_num_rows($query1) > 0){ $z = mysqli_fetch_array($query1); printf(" <form method='post' id='change'> <table style='border-collapse:collapse;background:#d8d6d0; border: 1px #5964f1; margin:0;' border='1' id='tablee' width='834'> <tr align='center'> <td height='45' ><input class='mine_z' type'text' value='%s' size='10' name='nick_player_dota'></td> <td><input class='mine_z' type'text' value='%s' size='10' name='role_player_dota'></td> <td><input class='mine_z' type='text' value='%s' size='10' name='mmr_player_dota'></td> <td><input class='mine_z' type='text' value='%s' size='5' name='time_player_dota'></td> <td><input class='mine_z' type='text' value='%s' size='10' name='db_player_dota'></td> <td><input class='mine_z' type='text' value='%s' size='10' name='sign_player_dota'></td> <td><input class='mine_z' type='text' value='%s' size='10' name='contacts_player_dota'></td> <td align='center' style='padding:0; background: #ff6666;' width='60'><label for='delete'><img src='img/crest.png' class='block'></label><input type='submit' name='delete_dota_player' style='display: none;' id='delete'> </td> </tr> </table> </form> <br><br> ",$z['nick'],$z['role'], $z['mmr'],$z['db'],$z['t1me'],$z['sign'],$z['contacts']); } //Если создает тиму в доте elseif(mysqli_num_rows($query2) > 0){ $z = mysqli_fetch_array($query2); printf(" <form method='post' id='change' > <script> function newWin%s() {window.open('preview_team.php?team_id=%s', 'Профиль команды', 'width=430,height=500,left=400,top=100');} </script> <table style='border-collapse:collapse;background:#d8d6d0; border: 1px #5964f1; margin:0;' border='1' id='tablee' width='834'> <tr align='center'> <td height='45'><span onclick='newWin%s()' style='cursor:pointer;'><img src='%s' width='70' ></span></td> <td><input class='mine_z' type'text' value='%s' size='10' name='name_team_dota'></td> <td><input class='mine_z' type='text' value='%s' size='10' name='role_team_dota'></td> <td><input class='mine_z' type='text' value='%s' size='3' name='mmr_team_dota'></td> <td><textarea class='mine_z' rows='4' cols='30' name='about_team_dota'>%s</textarea></td> <td><input class='mine_z' type='text' value='%s' size='10' name='contacts_team_dota'></td> <td align='center' style='padding:0; background: #ff6666;' width='60'><label for='delete'><img src='img/crest.png' class='block'></label><input type='submit' name='delete_dota_team' style='display: none;' id='delete'> </td> </tr> </table> </form> <br><br> ",$id,$id,$id,$z['avatar_short'], $z['name'],$z['roles'],$z['mmr'],$z['about'],$z['contacts']); } //Если ищет тиму в csgo if(mysqli_num_rows($query4) > 0){ $c = mysqli_fetch_array($query4); printf(" <form method='post' id='change' > <table style='border-collapse:collapse;background:#d8d6d0; border: 1px #5964f1; margin:0;' border='1' id='tablee' width='834'> <tr align='center'> <td width='104'><input class='mine_z' type'text' value='%s' size='10' name='nick_player_csgo'></td> <td width='219'><img src='%s'></td> <td width='68'><input class='mine_z' type'text' value='%s' size='5' name='time_player_csgo'></td> <td width='105'><input class='mine_z' type'text' value='%s' size='10' name='primetime_player_csgo'></td> <td><input class='mine_z' type'text' value='%s' size='20' name='contacts_player_csgo'></td> <td align='center' style='padding:0; background: #ff6666;' width='60'><label for='delete'><img src='img/crest.png' class='block'></label><input type='submit' name='delete_csgo_player' style='display: none;' id='delete'> </td> </tr> </table> </form> <br><br> ",$c['nick'],$c['rank'],$c['time'],$c['game_time'],$c['contacts']); } if(isset($_POST['delete_dota_team'])){ mysqli_query($connect,"DELETE FROM `dotateams` WHERE `user_id` = '$id'"); header("Location:".$_SERVER['PHP_SELF']."#zayavka"); } if(isset($_POST['delete_dota_player'])){ mysqli_query($connect,"DELETE FROM `dotaplayers` WHERE `user_id` = '$id'"); header("Location:".$_SERVER['PHP_SELF']."#zayavka"); } if(isset($_POST['delete_csgo_player'])){ mysqli_query($connect,"DELETE FROM `csgoplayers` WHERE `user_id` = '$id'"); header("Location:".$_SERVER['PHP_SELF']."#zayavka"); } } ?> <script> var elem = document.getElementsByClassName('mine_z'); for (var i = 0; i < elem.length; i++) { elem[i].oninput = function() { var save = document.getElementById('save'); save.innerHTML = "<label><img src='img/save.png' style='cursor:pointer; margin:0;'><input type='submit' name='submit_changes' style='display:none;' form='change'></label>"; } } </script> <?php if(isset($_POST['submit_changes'])){ //dota teams $c_name = $_POST['name_team_dota']; $c_role = $_POST['role_team_dota']; $c_mmr = $_POST['mmr_team_dota']; $c_about = $_POST['about_team_dota']; $c_contacts = $_POST['contacts_team_dota']; //dota plsyers $c_nick_p = $_POST['nick_player_dota']; $c_role_p = $_POST['role_player_dota']; $c_mmr_p = $_POST['mmr_player_dota']; $c_db_p = $_POST['db_player_dota']; $c_sign_p = $_POST['sign_player_dota']; $c_time_p = $_POST['time_player_dota']; $c_contacts_p = $_POST['contacts_player_dota']; //csgp players $c_nick_pcs = $_POST['nick_player_csgo']; $c_time_pcs = $_POST['time_player_csgo']; $c_gametime_pcs = $_POST['primetime_player_csgo']; $c_contacts_pcs = $_POST['contacts_player_csgo']; //------- if($c_name != '' and $c_role != '' and $c_mmr != '' and $c_about != '' and $c_contacts != ''){ $sql_cahnge_query = "UPDATE `dotateams` SET `name` = '$c_name' , `roles` ='$c_role' , `mmr` = '$c_mmr' , `about` = '$c_about' , `contacts` = '$c_contacts' WHERE `user_id` = '$id'"; mysqli_query($connect, $sql_cahnge_query); header("Location:".$_SERVER['PHP_SELF']."#zayavka"); } if($c_nick_p != '' and $c_role_p != '' and $c_mmr_p != '' and $c_db_p != '' and $c_sign_p != '' and $c_time_p != '' and $c_time_p != '') { $sql_cahnge_query_p = "UPDATE `dotaplayers` SET `nick` = '$c_nick_p' , `role` ='$c_role_p' , `mmr` = '$c_mmr_p' , `t1me` = '$c_time_p' , `db` = '$c_db_p', `sign` = '$c_sign_p', `contacts` = '$c_contacts_p' WHERE `user_id` = '$id'"; mysqli_query($connect, $sql_cahnge_query_p); header("Location:".$_SERVER['PHP_SELF']."#zayavka"); } if($c_nick_pcs != '' and $c_time_pcs != '' and $c_gametime_pcs != '' and $c_contacts_pcs != ''){ $sql_change_query = "UPDATE `csgoplayers` SET `nick` = '$c_nick_pcs' , `time` ='$c_time_pcs' , `game_time` = '$c_gametime_pcs' , `contacts` = '$c_contacts_pcs' WHERE `user_id` = '$id'"; mysqli_query($connect,$sql_change_query); header("Location:".$_SERVER['PHP_SELF']."#zayavka"); } } ?> Если Человек имеет всего одну заявку, то все работает прекрасно. Если же он имеет две заявки, то возможность к редактированию и удалению имеет только ТА, ЧТО НАХОДИТЬСЯ ВЫШЕ. Не могу понять, в чем причина данный проблемы, надеюсь на вашу помощь. Вот небольшое видео (50 сек) с описанием проблемы более подробно. Сорян за качество, но впринципе там все понятно.
типично. Результат запроса с БД выдает многомерный массив. var_dump ( результат ); покажет структуру массива. Далее с циклом нужно работать или что там за задумка, вам решать.
@MouseZver На сколько я понял мысль, у меня при двух заявках должен массив post быть двумерным. На деле же он обычный.
А где у тебя ID заявок? должно же быть в запросе не WHERE `user_id` = '$id' а WHERE `zayavka_id` = '$id ' грубо говоря. А уже заявки прикреплять а ID юзера.
@teleoperator, Дело в том, что у меня каждая заявка прикрепляется к id пользователя. Разница в вашем варианте и моем лишь в наименовании столбцов. У меня они, для удобства, одинаковые.
@Cyrius неверно. дело не в разнице названия. Что бы все корректно работало, не может быть двух заявок с одинаковым ID. А ты добавляешь и обновляешь заявки, привязанные к ID юзера, то есть, получается заявки у тебя получаются с одинаковыми айдишками - айдишками юзера. Поэтому и выполняется одна форма - та, которая первая в БД нашлась. А вторая, с этим же ID, выполняться уже не будет. Покажи структуру БД. Как минимум таблица заявок должна быть так - id_заявки | id_юзера | дальше остальные столбцы И вот по ID заявки уже обновлять и тд.
@teleoperator, заявки пользователя находятся в разных таблицах, так как по разным играм --- Добавлено --- @teleoperator, вы наверное подумали, что обе заявки в одной таблице?
Да ну, под каждую игру свою таблицу - зачем? Просто поле ввести для игры и всё. И да, заявки должны иметь свой id, не только к юзверю крепиться, иначе вы не можете точно предсказывать, какая обновится по запросу.
@Cyrius А вот теперь то, о чем я и говорил - где у каждой заявки уникальный ID? Именно у КАЖДОЙ ЗАЯВКИ, а не у каждого юзверя, который делает заявку? --- Добавлено --- должно быть: уникальный ID заявки с AUTO INCREMENT. Потом ID юзера, который сделал заявку. Потом остальные поля. И обновлять это все надо по айди заявки.
@teleoperator, [туплю], как мне обновить по ид заявки, если он будет уникальным? Все равно придется обновлять WHERE user_id = $id, разве нет?
при чем тут таблицы? Нет, обновлять ты будешь по ID заявки, а не ID юзера. То есть, каждая вот эта табличка должна быть привязана к своему id, понимаешь, к чему я веду? --- Добавлено --- Ну напиши мне, пока не сплю и не более 5 минут))