Jump to content
  • 0

Удаление строки массива Array - PHP


Payalnik610
 Share

Question

Столкнулся с такой проблемой. 

Есть запрос на вывод из SQL БД таблицы. В таблице 15 столбцов.

Хочу "прикрутить" фильтр к этой таблице по 5 столбцам.

 

Мои мысли сводятся к поочередному перебиранию строк массива,

 

т.е. имеем массив, перебираем сначала по условию №1 и удаляем неподходящие строки, потом продолжаем выполнять 4 остальные условия и также отбирать строки.

 

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

Link to comment
Share on other sites

21 answers to this question

Recommended Posts

  • 0

Такое лучше всего делать на SQL. Будет быстрее всего. Пример для PostgreSQL:

SELECT * FROM таблица WHERE колонка1::TEXT like '%значение_поля_поиска%'::TEXT OR колонка2::TEXT like '%значение_поля_поиска%'::TEXT OR колонка3::TEXT like '%значение_поля_поиска%'::TEXT

Какая у вас БД?

Edited by afdw
Link to comment
Share on other sites

  • 0

Такое лучше всего делать на SQL. Будет быстрее всего. Пример для PostgreSQL:

SELECT * FROM таблица WHERE колонка1::TEXT like '%значение_поля_поиска%'::TEXT OR колонка2::TEXT like '%значение_поля_поиска%'::TEXT OR колонка3::TEXT like '%значение_поля_поиска%'::TEXT

Какая у вас БД?

mySQL 5.0.8  а если в одном столбце дата, и нужно выбрать попадает в промежуток или нет? 

Допустим задан в форме промежуток от А до В. А в строке таблицы Б...

Link to comment
Share on other sites

  • 0

Такое лучше всего делать на SQL. Будет быстрее всего. Пример для PostgreSQL:

SELECT * FROM таблица WHERE колонка1::TEXT like '%значение_поля_поиска%'::TEXT OR колонка2::TEXT like '%значение_поля_поиска%'::TEXT OR колонка3::TEXT like '%значение_поля_поиска%'::TEXT

Какая у вас БД?

А может вместо OR использовать AND, мне нужно все условия использовать в случае наличия данных в форме фильтра, если какие то параметры пустые, то реализовать меньше условий.... 

Link to comment
Share on other sites

  • 0
А может вместо OR использовать AND, мне нужно все условия использовать в случае наличия данных в форме фильтра, если какие то параметры пустые, то реализовать меньше условий.... 
 

Конечно да. А в чём проблема?

Link to comment
Share on other sites

  • 0

сейчас буду проверять, Читал просто пару книг про SQL синтаксис. ну вот ничего нет про то, что какое количество фильтров можно применить к "Where". А в примерах только по 2 максимум.

Link to comment
Share on other sites

  • 0

сейчас буду проверять, Читал просто пару книг про SQL синтаксис. ну вот ничего нет про то, что какое количество фильтров можно применить к "Where". А в примерах только по 2 максимум.

Ограничение, скорее всего, есть, но вряд ли вы до него дойдёте.

Link to comment
Share on other sites

  • 0

Проверяю, что-то не так. 

$resultat = mysql_query("SELECT`fail`.`id_fail`,`fail`.`date_fail`,`type_doc`.`type_doc`,`fail`.`num_doc`,`fail`.`date_doc`,`num_hel`.`num_hel_ru`,`num_hel`.`num_hel_in`,`fail`.`narabotka`,`device`.`shot_name`,`fail`.`num_dev`,`fail`.`num_sisdev`,`fail`.`num_newdev`,`fail`.`manual_fail1`,`fail`.`manual_fail2`,`fail`.`repair`,`fail`.`date_reparing`,`fail`.`closed`FROM `fail`JOIN `type_doc` ON `fail`.`id_doc`=`type_doc`.`id_doc`JOIN `num_hel` ON `fail`.`id_hel`=`num_hel`.`id_hel`JOIN `device` ON `fail`.`id_dev`=`device`.`id_dev`WHERE `fail`.`id_doc`='2'ORDER BY `date_fail` ",$db);$array = mysql_fetch_array($resultat) || die(mysql_error()); 

Пишу такой запрос, и ничего не выводит, ошибки нет. просто нет информации.
пробовал c LIKE такая же ерунда...

Edited by Payalnik610
Link to comment
Share on other sites

  • 0

При join нужно, чтобы в присоединяемых таблицах тоже была информация. Если её там может не быть, то надо делать left join, тогда там будет просто null, но сам запрос выполнится.

Link to comment
Share on other sites

  • 0

При join нужно, чтобы в присоединяемых таблицах тоже была информация. Если её там может не быть, то надо делать left join, тогда там будет просто null, но сам запрос выполнится.

Есть Inner join, есть Left join, а что значит просто Join?

Edited by afdw
Link to comment
Share on other sites

  • 0

При join нужно, чтобы в присоединяемых таблицах тоже была информация. Если её там может не быть, то надо делать left join, тогда там будет просто null, но сам запрос выполнится.

При работе без фильтра WHERE работает все исправно. и на написание JOIN был уделен целый день.  поэтому проблема была именно при фильтре. а там было условие которое при выводе определенного ID строки - ничего не выводило...

Link to comment
Share on other sites

  • 0

Как правильно объединить запросы:

 

1.

$filter = "WHERE `fail`.`id_doc` LIKE '2' AND `fail`.`id_dev` LIKE '1' AND `fail`.`closed` LIKE '4' AND `fail`.`closed` LIKE '4'"

Так работает.

 

2.

$filter = "WHERE `fail`.`id_doc` LIKE '2' AND `fail`.`id_dev` LIKE '1' AND `fail`.`closed` LIKE '4' AND `fail`.`closed` LIKE '4' AND DATE(`fail`.`date_doc`) BETWEEN '2014-01-01' AND '2015-01-01'"

Так не работает.

 

3.

WHERE DATE(`fail`.`date_doc`) BETWEEN '2014-01-01' AND '2015-01-01'

Так работает...

 

Как правильно объединить 1 и 3 в одном запросе.....

Link to comment
Share on other sites

  • 0

Попробуйте обернуть в скобки:

WHERE (`fail`.`id_doc` LIKE '2') AND (`fail`.`id_dev` LIKE '1') AND (`fail`.`closed` LIKE '4') AND (`fail`.`closed` LIKE '4') AND (DATE(`fail`.`date_doc`) BETWEEN '2014-01-01' AND '2015-01-01')

И да, посмотрите, есть ли общие строки между результатами выполнения 1 и 3.

Link to comment
Share on other sites

  • 0

Payalnik610, если `fail`.`id_doc` (int) то его надо и сравнивать с int  т.е. `fail`.`id_doc` = 2, а не `fail`.`id_doc` = '2'

строки со строками, числа с числами, приводите типы данных заранее, если требуется, не надейтесь на автоприведение, сюрпризов не оберётесь

Link to comment
Share on other sites

  • 0

Payalnik610, если `fail`.`id_doc` (int) то его надо и сравнивать с int  т.е. `fail`.`id_doc` = 2, а не `fail`.`id_doc` = '2'

строки со строками, числа с числами, приводите типы данных заранее, если требуется, не надейтесь на автоприведение, сюрпризов не оберётесь

согласен, вначале искал проблему, поэтому все пробовал, что можно. А вот про данные что-то не додумался. а Про скобки вообще не знал. :blink::ph34r:

Попробуйте обернуть в скобки:

WHERE (`fail`.`id_doc` LIKE '2') AND (`fail`.`id_dev` LIKE '1') AND (`fail`.`closed` LIKE '4') AND (`fail`.`closed` LIKE '4') AND (DATE(`fail`.`date_doc`) BETWEEN '2014-01-01' AND '2015-01-01')

И да, посмотрите, есть ли общие строки между результатами выполнения 1 и 3.

Спасибо, скобки помогли. (handshake) 

 

про результаты уж я специально выбирал, чтобы были....

Link to comment
Share on other sites

  • 0

Пример: 

 Where (`fail`.`id_doc` NOT LIKE 'NULL') AND (`fail`.`id_dev` NOT LIKE 'NULL') AND (`fail`.`closed` LIKE 1) AND (DATE(`fail`.`date_doc`) BETWEEN '2011-01-01' AND '2015-06-16') AND (DATE(`fail`.`date_reparing`) BETWEEN '2015-01-01' AND '2015-06-16')

Можно закрывать, далее работаем с фантазией...

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

  • Similar Content

    • By Only091
      Помогите пожалуйста, не получается сделать постраничную навигацию. Делал все по урокам. в Итоге получилось сделать два разных каталога один с фильтрами другой с постраничной навигацией. И теперь я пытаюсь объединить два каталога. Но не получается. Сами файлы урока в архике каталог. Буду очень благодарен если мне помогут! catalog.phpcatalogDB.js
      каталог.7z
    • By stonelabs
      Всем привет!

      Наша компания (https://stone-labs.com/) ищет команды (!) разработчиков для реализации ряда заказных проектов. Местоположение не важно - мы практикуем удаленную работу.
       
      Обязательные требования:
      Laravel или Symfony frameworks jQuery (UI), JavaScript, Ajax, Bootstrap MySQL REST API, опыт внедрения Third-party APIs английский на уровне чтения и понимания технической документации опыт в разработке веб приложений и их архитектуры с нуля корректное использование git & pull request flow работа в дневное время во временной зоне UTC +3  
      Будет плюсом, если у вашей команды есть:
      опыт с GitLab CI/CD, Jenkins опыт с MySQL Cluster, MongoDB, PostgreSQL, Redis опыт с Vue.js опыт Linux администрирования, SSH, Nginx, DevOps  
      Если вам интересно сотрудничество, пожалуйста, пишите на наш ящик wanted@stone-labs.com 
    • By Defroing
      <form method="POST" action= "action_handler.php" id="form"> <section class="table_1"> <table class="iksweb"> <tbody> <tr> <td rowspan="3"><b>История компании «Mc donald's»</b> <h3 class="the">Кто основал компанию «Mc donald's»?</h3> <section class="conteiner"> <div class="checkbox"> <input type="checkbox" class="i-6" id="i6" value="0" name="formDoor[]"> <label for="i6" tabindex="12">Роналд Макдоналд</label> </div> <div class="checkbox"> <input type="checkbox" class="i-6" id="i7" value="0" name="formDoor[]"> <label for="i7" tabindex="13">Рэй Крок</label> </div> <div class="checkbox"> <input type="checkbox" class="i-6" id="checkbox_68" value="1" name="formDoor[]"> <label for="checkbox_68" tabindex="14">Братья Дик и Мак Макдоналд</label> </div> <div class="checkbox"> <input type="checkbox" class="i-6" id="checkbox_170" value="0" name="formDoor[]"> <label for="checkbox_170" tabindex="14">Клинт Иствуд</label> </div> <div class="out-block out-6"></div> </section> </td> </tr> </tbody> </table> <div class="dsw"> <button class="b-6" tabindex="11" id="btn-1" type="submit" name="formSubmit">Отправить</button> </div> </form> <?php mysql_connect("localhost", "root", ""); mysql_select_db('olala') or die(mysql_error()); if(isset($_GET['submit'])){ $arr=$_GET; foreach ($arr as $key => $value) { $reg="/^check/";//отбираю нужные элементы if( preg_match ($reg,$key )) { //$new_mass[]=$arr[$key]; //print_r($new_mass); echo $arr[$key]; $sql_1="INSERT INTO `table_one` (`name`) VALUES('$arr[$key]')"; mysql_query($sql_1) or die(mysql_error()); } } } ?>  Создаю опросник и хочу, чтобы чекбоксы заносились в БД(таблицу пока не создавал). Хотелось узнать на счёт php кода, сможете подсказать, что в нём не так (дать какие нибудь советы). В openserver опросник пока не выкладывал.
    • By seoww
      Доброго времени суток. Я не сильно знающий веб-разработчик, но учусь. Начал создавать интернет магазин. Написал код самого сайта, посмотрел видео как делаются интернет-магазины и теперь не могу разобраться с PhpMyAdmin. Я не понимаю как она взаимодействует с сайтом. В интернете погуглил, так ничего дельного найти и не смог. Помогите пожалуйста.
      P.S сильно в меня камни не кидайте, я только учусь 
      Всем добра!
    • By Gmansurov
      Нужно отправить текст на сайт, не знаю как это сделать и не могу найти форумы по этим темам. Google Cloud Platform. Помогите пожалуйста.
×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy