За последние 24 часа нас посетили 17538 программистов и 1721 робот. Сейчас ищут 1887 программистов ...

Не получается обновить сразу несколько записей PHP+MySQL

Тема в разделе "PHP и базы данных", создана пользователем New_neo, 1 мар 2016.

  1. New_neo

    New_neo Новичок

    С нами с:
    15 ноя 2015
    Сообщения:
    77
    Симпатии:
    3
    Все равно не пойму!
    Код (PHP):
    1. Array ( [1] => 1 ) Array ( [lolo] => lolo [zoloto] => zoloto )
    2.  
    Вот два массива! И как их объединить в одно целое для обновления (изменения записи)??????

    Добавлено спустя 5 минут 35 секунд:
    Все до меня дошло!!!!! Спасибо ВСЕМ Специалистам! Мой косяк!!!!
    Код (PHP):
    1. //я забыл про name = 'tech1[{$row[id]}]'
    2.  
    3. foreach($tech1 AS $key=>$value){
    4. for($i=0; $i<$length; $i++){
    5.  
    6. $query = "UPDATE table SET tech1='$value', tech2='$tech2' WHERE `id`='$key'";
    7. /* Выполняем запрос. Если произойдет ошибка - вывести ее. */
    8. mysql_query($query) or die (mysql_error());
    9.  
    10. }
    11. }
     
  2. New_neo

    New_neo Новичок

    С нами с:
    15 ноя 2015
    Сообщения:
    77
    Симпатии:
    3
    Еще вопрос. Как сделать по чекбоксу сохранение записей? Т.е. когда отправляешь запрос, те которые выбранные те и сохранять? Спасибо!
     
  3. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    а ты не отправляй другие. ;)
     
  4. New_neo

    New_neo Новичок

    С нами с:
    15 ноя 2015
    Сообщения:
    77
    Симпатии:
    3
    Спасибо! Очень хороший совет, но а если серьезно?
     
  5. mahmuzar

    mahmuzar Старожил

    С нами с:
    6 апр 2012
    Сообщения:
    4.631
    Симпатии:
    425
    Адрес:
    РД, г. Махачкала.
    New_neo, выбранные и будут, так же смотри массив $_POST
     
  6. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
  7. New_neo

    New_neo Новичок

    С нами с:
    15 ноя 2015
    Сообщения:
    77
    Симпатии:
    3
    А подробнее пожалуйста опишите
    я вижу это вот так:
    Код (PHP):
    1. if(isset($_POST['check'])
    2. {
    3. $schek=$_POST['check'];
    4. $lenght=count($schek);
    5. foreach($check AS $key=>$value){
    6. for($i=0; $i<$length; $i++){
    7.  
    8. $query = "UPDATE table SET tech1='".$value."',  WHERE `id`='".$key."'";
    9. /* Выполняем запрос. Если произойдет ошибка - вывести ее. */
    10. mysql_query($query) or die (mysql_error());
    11.  
    12. }
    13. }
    14. }
    15.  
    Только че-то не работает.
     
  8. mahmuzar

    mahmuzar Старожил

    С нами с:
    6 апр 2012
    Сообщения:
    4.631
    Симпатии:
    425
    Адрес:
    РД, г. Махачкала.
    New_neo, не вставляй переменные в одинарные ковычки.
    Покажи форму, где ты определяешь чекбоксы
     
  9. New_neo

    New_neo Новичок

    С нами с:
    15 ноя 2015
    Сообщения:
    77
    Симпатии:
    3
    Код (PHP):
    1. echo ("<form method=\"post\" action= \"edit.php\"  name=\"edit_form\">\n
    2.     
    3.     <th align=\"center\"><b><input type=\"submit\" name=\"submit_edit\" class=\"buttons\" value=\"Сохранить" /></b></th>
    4.     
    5. ");
    6.  
    7.  
    8. while ($row = mysql_fetch_array($res)) {           
    9.     echo "<input type=\"hidden\" name=\"id\" value=\"".$row["id"]."\" />\n";
    10.         echo "<tr>\n";
    11.     echo "<td>".$row["id"]."</td>\n";
    12.         echo "<td>".$row['name']."</td>\n";
    13.     echo "<td>".$row['email']."</td>\n";
    14.     echo "<td>".$row['theme']."</td>\n";
    15.         echo "
    16.          
    17.         <td style='text-align: center;'>
    18.         <a href='' class='spoiler_links'>
    19.         <input type='button' value='Показать' onclick='dawn(this)'>
    20.         </a>
    21.         <div class='spoiler_body'>
    22.         ".$row['message']."</div></td>\n";
    23.  
    24.         echo "<td>";
    25.         include('spt.php');
    26.         echo "</td>\n";
    27.     echo "<td>";
    28.         include('spt2.php');
    29.         echo "</td>\n"; 
    30.         
    31.         echo "<td><input size='7' readonly type=\"text\" value=\"".$row['dreg']."\" name=\"dreg\"/></td>\n";
    32.     echo "<td><input  size='7' readonly type=\"text\" value=\"".$row['drun']."\" name=\"drun\"/>
    33.     <input type=checkbox name='top[{$row[id]}]'  value='on'>
    34.     </td>\n";  
    35. }
    36. echo"<td align=\"center\"><input type=\"submit\" name=\"submit_edit\" class=\"buttons\" value=\"Сохранить\" /></td>";
    37. echo "</tr></td></table>";
    38.       echo "</tr>\n";
    39.  echo "</form>\n\n";
     
  10. mahmuzar

    mahmuzar Старожил

    С нами с:
    6 апр 2012
    Сообщения:
    4.631
    Симпатии:
    425
    Адрес:
    РД, г. Махачкала.
    var_dump($_POST['top']) И выложи что будет на выходе.
     
  11. New_neo

    New_neo Новичок

    С нами с:
    15 ноя 2015
    Сообщения:
    77
    Симпатии:
    3
    Если ничего не выбрано то:
    Код (PHP):
    1. NULL
    Если выбираю 2 чека то:
    Код (PHP):
    1. array(2) { [1]=> string(2) "on" [2]=> string(2) "on" }
     
  12. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    1 и 2 это row['id']

    и не забывай про кавычки!!!!!!!!!!! $row[id] - это неправильно
     
  13. New_neo

    New_neo Новичок

    С нами с:
    15 ноя 2015
    Сообщения:
    77
    Симпатии:
    3
    Спасибо! Обязательно приму к сведению! Как дальше быть?
     
  14. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    "приму к сведению" говорят когда не хотят что-то делать, а надо делать именно так. =)

    ну айдишники записей ты получил, какие хотел. поздравляю. Дальше делай с этими записями в бд что задумал, только экранировать не забывай, в данном случае достаточно будет (int)$var
     
  15. New_neo

    New_neo Новичок

    С нами с:
    15 ноя 2015
    Сообщения:
    77
    Симпатии:
    3
    Все равно не понятно
     
  16. mahmuzar

    mahmuzar Старожил

    С нами с:
    6 апр 2012
    Сообщения:
    4.631
    Симпатии:
    425
    Адрес:
    РД, г. Махачкала.
    New_neo, смотри для обоих переменных массива оба значения "on" подставь нужный id в value и ты получишь нужные id.

    Добавлено спустя 2 минуты 44 секунды:
    в итоге массив примет такой вид
    Код (PHP):
    1. array(2) { [1]=> string(2) "твой id" [2]=> string(2) "твой id" } 
     
  17. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    номерки пришли?
     
  18. New_neo

    New_neo Новичок

    С нами с:
    15 ноя 2015
    Сообщения:
    77
    Симпатии:
    3
    Какие номерки?
     
  19. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    блять

    Эти:
    Добавлено спустя 1 минуту 3 секунды:
    поставь галочку в чекбокс через один и посмотри на номерки, которые придут.
     
  20. New_neo

    New_neo Новичок

    С нами с:
    15 ноя 2015
    Сообщения:
    77
    Симпатии:
    3
    Вот те самые номерки которые вы просили:
    Код (PHP):
    1.  array(3) { [13647]=> string(5) "13647" [14127]=> string(5) "14127" [14138]=> string(5) "14138" }
    Добавлено спустя 2 минуты 19 секунд:
    как вытянуть эти id-ники из массива?
    Код (PHP):
    1. foreach(var_dump($_POST['top']) as $KEY=>$VALUE)
    2. {
    3. }
    4.  
    5.  
    НЕ получается!!!!!
     
  21. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    а, ну вардамп-то не возвращает ничего, он выводит на экран, это просто функция такая.

    foreach($_POST['top'] as $k=>$v)
     
  22. New_neo

    New_neo Новичок

    С нами с:
    15 ноя 2015
    Сообщения:
    77
    Симпатии:
    3
    Это я понял! Я тут наваял след:
    Код (PHP):
    1. $topcheck=$_POST['top'];
    2.  
    3. if(isset($_POST['top']))
    4. {
    5. $lencheck= count($topcheck);
    6.  
    7. foreach($topcheck as $keyc=>$valuec)
    8. {
    9.     
    10. for($i=0; $i<$lencheck; $i++){
    11.  
    12. foreach($tech1 AS $key=>$value){
    13. $query = "UPDATE table SET tech1='$value' WHERE `id`='$valuec'";
    14. /* Выполняем запрос. Если произойдет ошибка - вывести ее. */
    15. mysql_query($query) or die (mysql_error());
    16. }
    17. foreach($tech2 AS $key2=>$value2){
    18. $query = "UPDATE table SET tech2='$value2' WHERE `id`='$valuec'";
    19. /* Выполняем запрос. Если произойдет ошибка - вывести ее. */
    20. mysql_query($query) or die (mysql_error());
    21.  
    22. }
    23.  
    24.  
    25. }
    26.  
    27. }
    Только он все равно сохраняет все записи(выбраные и не выбранные)! А мне нужно только выбранные чекбоксы!
     
  23. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    используй IDE

    Добавлено спустя 27 секунд:
    Код (PHP):
    1. $topcheck = $_POST['top'];
    2.  
    3. if (isset($_POST['top'])) {
    4.   $lencheck = count($topcheck);
    5.  
    6.   foreach ($topcheck as $keyc => $valuec) {
    7.  
    8.     for ($i = 0; $i < $lencheck; $i++) {
    9.  
    10.       foreach ($tech1 AS $key => $value) {
    11.         $query = "UPDATE table SET tech1='$value' WHERE `id`='$valuec'";
    12.         /* Выполняем запрос. Если произойдет ошибка - вывести ее. */
    13.         mysql_query($query) or die (mysql_error());
    14.       }
    15.       foreach ($tech2 AS $key2 => $value2) {
    16.         $query = "UPDATE table SET tech2='$value2' WHERE `id`='$valuec'";
    17.         /* Выполняем запрос. Если произойдет ошибка - вывести ее. */
    18.         mysql_query($query) or die (mysql_error());
    19.  
    20.       }
    21.  
    22.  
    23.     }
    24.  
    25.   }
    26. }
    Добавлено спустя 20 секунд:
    тогда будут отступы.

    Добавлено спустя 57 секунд:
    бредово проверять существование переменной, которую уже не используешь, да ещё и после того, как её использовал выше.

    Добавлено спустя 37 секунд:
    это что вообще? о_О глаза на лоб лезут =) вчитайся.