Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Отправка формы AJAX/PHP [3]

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (4): « 1 2 [3] 4 »   

> Описание: где ошибка?
IllusionMH
Отправлено: 19 Июня, 2015 - 17:04:16
Post Id



Активный участник


Покинул форум
Сообщений всего: 4254
Дата рег-ции: Февр. 2011  
Откуда: .kh.ua


Помог: 242 раз(а)




Qwertty, точно хромовские девтулы и точно вкладка Сеть/Network? Похоже на консоль. В общем на сайте по девтулам есть инфа где это искать.
 
 Top
Qwertty
Отправлено: 22 Июня, 2015 - 11:44:17
Post Id


Новичок


Покинул форум
Сообщений всего: 33
Дата рег-ции: Июнь 2015  


Помог: 0 раз(а)




Итак, что у меня получилось (не без помощи добрых людей)
CODE (html):
скопировать код в буфер обмена
  1.  
  2. <script src="//code.jquery.com/jquery-1.11.3.min.js"></script>
  3. <script>
  4.     $(document).ready(function(){
  5.         $('#sub').click(function(e){
  6.             e.preventDefault();
  7.             $.ajax({
  8.                 url:'up4.php',//адрес обработчика
  9.                 type:'post',
  10.                 data: $('#f').serialize(),
  11.                 success:function(msg){
  12.                     $('#res').html(msg);
  13.                     if(msg == '1'){//если удаление прошло успешно, удаляем товары из формы
  14.                         var ch = $("#f :checkbox:checked");
  15.                         $.each(ch,function(i,val){
  16.                             $(val).parent().remove();
  17.                            
  18.                         });
  19.                         $('#message').text('Tovar udalyon');
  20.                     }
  21.                     else{
  22.                         $('#message').html(msg);
  23.                     }
  24.                 }
  25.             });
  26.         });
  27.     });
  28.     </script>
  29.     <div id="message"></div>
  30. <?php
  31. $con = mysql_connect('localhost','root','') or die(mysql_error());
  32. $db = mysql_select_db('auto' , $con);
  33.  
  34. if($db==false)
  35. die( mysql_error() );
  36.  
  37. $sql="SELECT * FROM spisok";
  38. $res=mysql_query($sql) or die( mysql_error() );
  39.  
  40. if(mysql_num_rows($res) > 0 ) {
  41.     echo '<form method="POST" id="f">';
  42.     while($row=mysql_fetch_assoc($res) ) {
  43.        echo'<p>';
  44.        echo ' ID : ' . $row["id"].'<br />';
  45.        echo ' brand :<br> <input type="text" name="brand['.$row["id"].']" value="'.$row["brand"].'"><br />'."\n";
  46.        echo ' model :<br> <input type="text" name="model['.$row["id"].']" value="'.$row["model"].'"><br />'."\n";
  47.        echo ' color :<br> <input type="text" name="color['.$row["id"].']" value="'.$row["color"].'"><br />'."\n";
  48.        echo ' price :<br> <input type="number" name="price['.$row["id"].']" value="'.$row["price"].'"> RUR<br />'."\n";
  49.        echo '<input type="hidden" name="id[]" value="'.$row["id"].'"> '."\n";
  50.        echo '<br>delete <input type="checkbox" name="delete[]" value="'.$row["id"].'"> ' . "\n";
  51.        echo "<hr>\n";
  52.        echo '</p>';
  53.    }
  54.    echo '<input type="submit" name="sub" id="sub" value="SAVE/DELETE">';
  55.    echo '</form>';
  56.  }
  57.  



и обработчик:

PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3. $connect = mysql_connect('localhost','root','') or die(mysql_error());
  4. mysql_select_db('auto', $connect);
  5. $str = '';
  6. $count = count($_POST['delete']);
  7. $i = 1;
  8.  
  9.  
  10. foreach($_POST['delete'] as $v){
  11.     $com = $i==$count?'':',';
  12.     $str .= "'".$v."'".$com;
  13.     $i++;
  14. }
  15.  
  16. $sql = "delete from `spisok` where `id` in(".$str.")";
  17.  
  18. // удаляем выбранные товары
  19. // если все нормально удалилось возвращаем 1.
  20. if(mysql_query($sql)){
  21.     echo "1";
  22. }
  23. else{
  24.     echo 'chto-to ne tak';
  25. }
  26.  
  27.  
  28. foreach($_POST["id"] AS $id)
  29.  {
  30.  $brand = mysql_real_escape_string ($_POST["brand"][$id]);
  31.  $model = mysql_real_escape_string ($_POST["model"][$id]);
  32.  $color = mysql_real_escape_string ($_POST["color"][$id]);
  33.  $price = mysql_real_escape_string ($_POST["price"][$id]);
  34.  $update=" UPDATE `spisok` SET `brand` = '$brand', `model` = '$model', `color` = '$color', `price` = '$price' WHERE `id` = $id LIMIT 1 ; ";
  35.  
  36.  mysql_query($update) or die( mysql_error() );
  37.  }
  38.  
  39. ?>
  40.  



Всё работает, но если не удаляешь, а редактируешь товар, то ругается Warning: Invalid argument supplied for foreach() in Z:\...\up4.php on line 9

Чё сделать что бы не ругался? Улыбка

(Отредактировано автором: 22 Июня, 2015 - 11:45:05)

 
 Top
Viper
Отправлено: 22 Июня, 2015 - 13:40:02
Post Id



Активный участник


Покинул форум
Сообщений всего: 4555
Дата рег-ции: Февр. 2007  
Откуда: Симферополь


Помог: 98 раз(а)




вот это
PHP:
скопировать код в буфер обмена
  1. foreach($_POST['delete'] as $v){
  2.     $com = $i==$count?'':',';
  3.     $str .= "'".$v."'".$com;
  4.     $i++;
  5. }
  6.  
  7. $sql = "delete from `spisok` where `id` in(".$str.")";


проще так сделать с использованием implode. К тому же одинаковые инпуты можно разбивать на группы в массиве

т.е.
CODE (html):
скопировать код в буфер обмена
  1. <input name="a[]" .../>
  2. <input name="a[]" .../>
  3. <input name="a[]" .../>

получите массив $_POST['a'][array][values...]


-----
Список фильмов с описанием, блекджеком и... для Joomla? -> https://киноархив[dot]com
Демо нового движка для сайта php.su -> php[dot]su, проект на гитхабе
 
 Top
Qwertty
Отправлено: 22 Июня, 2015 - 14:13:28
Post Id


Новичок


Покинул форум
Сообщений всего: 33
Дата рег-ции: Июнь 2015  


Помог: 0 раз(а)




Viper пишет:
вот это
PHP:
скопировать код в буфер обмена
  1. foreach($_POST['delete'] as $v){
  2.     $com = $i==$count?'':',';
  3.     $str .= "'".$v."'".$com;
  4.     $i++;
  5. }
  6.  
  7. $sql = "delete from `spisok` where `id` in(".$str.")";


проще так сделать с использованием implode. К тому же одинаковые инпуты можно разбивать на группы в массиве

т.е.
CODE (html):
скопировать код в буфер обмена
  1. <input name="a[]" .../>
  2. <input name="a[]" .../>
  3. <input name="a[]" .../>

получите массив $_POST['a'][array][values...]


Не, мне пока с этим надо разобраться, а то я ещё неделю буду переделывать по-другому.
Как сделать что бы при пустом значении первая функция просто не выполнялась?
 
 Top
Viper
Отправлено: 22 Июня, 2015 - 16:40:33
Post Id



Активный участник


Покинул форум
Сообщений всего: 4555
Дата рег-ции: Февр. 2007  
Откуда: Симферополь


Помог: 98 раз(а)




Qwertty пишет:
Как сделать что бы при пустом значении первая функция просто не выполнялась?
пишите что за функция и где.


-----
Список фильмов с описанием, блекджеком и... для Joomla? -> https://киноархив[dot]com
Демо нового движка для сайта php.su -> php[dot]su, проект на гитхабе
 
 Top
Qwertty
Отправлено: 22 Июня, 2015 - 16:57:37
Post Id


Новичок


Покинул форум
Сообщений всего: 33
Дата рег-ции: Июнь 2015  


Помог: 0 раз(а)




Viper пишет:
пишите что за функция и где.


PHP:
скопировать код в буфер обмена
  1.  
  2. foreach($_POST['delete'] as $v){
  3.     $com = $i==$count?'':',';
  4.     $str .= "'".$v."'".$com;
  5.     $i++;
  6. }
  7.  
  8. $sql = "delete from `spisok` where `id` in(".$str.")";
  9.  
  10. // удаляем выбранные товары
  11. // если все нормально удалилось возвращаем 1.
  12. if(mysql_query($sql)){
  13.     echo "1";
  14. }
  15. else{
  16.     echo 'chto-to ne tak';
  17. }
  18.  
 
 Top
Viper
Отправлено: 22 Июня, 2015 - 19:05:05
Post Id



Активный участник


Покинул форум
Сообщений всего: 4555
Дата рег-ции: Февр. 2007  
Откуда: Симферополь


Помог: 98 раз(а)




isset(), empty(), array_key_exists() для таких проверок


-----
Список фильмов с описанием, блекджеком и... для Joomla? -> https://киноархив[dot]com
Демо нового движка для сайта php.su -> php[dot]su, проект на гитхабе
 
 Top
Sail
Отправлено: 22 Июня, 2015 - 19:17:32
Post Id



Участник


Покинул форум
Сообщений всего: 1131
Дата рег-ции: Февр. 2014  


Помог: 57 раз(а)




Qwertty пишет:
если все нормально удалилось возвращаем 1

Проверяется функцией mysql_affected_rows(); или им подобными из более современных расширений/библиотек
 
 Top
Qwertty
Отправлено: 22 Июня, 2015 - 19:50:41
Post Id


Новичок


Покинул форум
Сообщений всего: 33
Дата рег-ции: Июнь 2015  


Помог: 0 раз(а)




Sail пишет:

Проверяется функцией mysql_affected_rows(); или им подобными из более современных расширений/библиотек


Да не, зачем мне подсчитывать что-то, проблема то в другом. Всё работает, но криво.
Т.е. пока я второй foreah не добавил всё путём было. Но мне надо что бы скрипт проверял и чекбоксы на удаление, и обновление записей в полях. Я конечно уже штурмую теорию с самых азов, т.к. замучился с этими камнями преткновения, но скрипт надо доделать уже, а то я его так ещё месяц буду делать, пока сам дойду до всего этого )
 
 Top
Viper
Отправлено: 22 Июня, 2015 - 20:54:16
Post Id



Активный участник


Покинул форум
Сообщений всего: 4555
Дата рег-ции: Февр. 2007  
Откуда: Симферополь


Помог: 98 раз(а)




Sail пишет:
Проверяется функцией mysql_affected_rows(); или им подобными из более современных расширений/библиотек
ой ли?!


-----
Список фильмов с описанием, блекджеком и... для Joomla? -> https://киноархив[dot]com
Демо нового движка для сайта php.su -> php[dot]su, проект на гитхабе
 
 Top
LIME
Отправлено: 22 Июня, 2015 - 21:18:48
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




Viper а что не так? ты о чем?

(Отредактировано автором: 22 Июня, 2015 - 21:20:03)

 
 Top
Viper
Отправлено: 22 Июня, 2015 - 21:31:28
Post Id



Активный участник


Покинул форум
Сообщений всего: 4555
Дата рег-ции: Февр. 2007  
Откуда: Симферополь


Помог: 98 раз(а)




LIME пишет:
а что не так? ты о чем?
мне несколько непонятно зачем в данном случае знать сколько чего изменено? Нам нужно знать выполнился ли запрос или нет, а в случае ошибки будет false.


-----
Список фильмов с описанием, блекджеком и... для Joomla? -> https://киноархив[dot]com
Демо нового движка для сайта php.su -> php[dot]su, проект на гитхабе
 
 Top
LIME
Отправлено: 22 Июня, 2015 - 21:32:28
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




Viper а...ясно
(Добавление)
Вот насколько бэло бэ прощще и быстрее прчитать книжку типа пхп зп 7 дней
И время бэ в итоге сэкономил
Но....дело каждого
 
 Top
Viper
Отправлено: 22 Июня, 2015 - 22:07:29
Post Id



Активный участник


Покинул форум
Сообщений всего: 4555
Дата рег-ции: Февр. 2007  
Откуда: Симферополь


Помог: 98 раз(а)




LIME может Попова ещё читнуть?


-----
Список фильмов с описанием, блекджеком и... для Joomla? -> https://киноархив[dot]com
Демо нового движка для сайта php.su -> php[dot]su, проект на гитхабе
 
 Top
LIME
Отправлено: 22 Июня, 2015 - 22:10:47
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




Viper берега то видьУлыбкаУлыбка
(Добавление)
Хотя для начала тс и попов пойдет в плюс
 
 Top
Страниц (4): « 1 2 [3] 4 »
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB