Ситуация: PHP: $count_vakans = "SELECT count(*) FROM status_vakans_has_vakans WHERE idstatus_vakans = 1"; $count_query = mysqli_query($dsd, $count_vakans); $result_count = mysqli_fetch_row($count_query); $count_vakans2 = "SELECT count(*) FROM status_vakans_has_vakans WHERE idstatus_vakans = 2"; $count_query2 = mysqli_query($dsd, $count_vakans2); $result_count2 = mysqli_fetch_row($count_query2); echo "$result_count[0]"; echo "$result_count2[0]"; И так десять раз. Можно ли один раз сделать select и выводить idstatus_vakans от 1 до 10 ?
@viktor72 Конечно можно так сделать, что у вас за поле idstatus_vakans за что оно отвечает? Пожалуйста выложи полный код, так будет легче помочь.
@viktor72 группируешь по своему полю idstatus_vakans добавляешь его в поля выборки. На выхлопе получаешь таблицу из двух колонок - значение твоего поля и кол-во строк с таким значением.
idstatus_vakans = 1 - заказ открытый idstatus_vakans = 2 - закза в обсулуживании и т.д... это значения из справочника Надо суммировать цифры с каждым соответствующим статусом заказа.... Дополнительного кода выкладывать .. там просто не чего выкладывать Рекомендацию не понял..
формы нету. я вывожу на страницу статистику по каждому заказу HTML: <tr> <td>Сумма открытых заказов</td><td>сумма</td> </tr> <tr> <td>Закрытые заказы</td><td>сумма</td> </tr> На странице таблица и в каждую ячейку вставляются суммы в соответствии с статусом заказа. Статусов закзов -10
@viktor72 У тебя должна быть единая переменная которая отвечает за статус заказов 1..10. Вот тебе эту переменную и надо будет подставлять в запрос.
@viktor72 ничего не надо показывать. Он просто воду льёт. Группировка тебя спасёт. @_ne_scaju_ не надо никаких переменных и не надо спрашивать никаких лишних данных. Ты вообще программированием пробовал заниматься?
Блин да уж снизойдите с высоты, подскажите... групировать? GROUP BY ? не представляю себе..а как потом в каждую ячейку разложить соответствующий результат..? --- Добавлено --- програмирую в меру своего понимания...и знаний
@viktor72 а я думаю что он вопрос не понял, и меня унижает, хотя я начинающий @Ganzal так покажи как правильно, человеку ждет же.
@viktor72 да, GROUP BY. SELECT idstatus_vakans, count(*) cnt FROM status_vakans_has_vakans GROUP BY idstatus_vakans Дальше справишься? --- Добавлено --- Внимательно посмотри на пост ТСа. Видишь там два одинаковых запроса? Я вот вижу. И таких запросов однотипных у него 10 штук. И каждый раз он выбирает одно значение фильтруя по одному значению одного поля. Выборка с группировкой заменяет ему 10 запросов. В результирующей таблице у него 2 поля - значение по которому он любит фильтровать и и кол-во строк с таким значением. Один раз итерацией раскладываешь это в массив пар статус=колво и потом легко выводишь обращаясь к этому массиву через ключ статуса. А теперь поясни мне, зачем ты запрашиваешь какие-то дополнительные данные, которые не нужны для решения задачи? Хочешь завести человека в тупик? Потратить его время? Тогда ок.
@Ganzal Ок я не прав, не люблю просто спорить если на 90% не уверен! Но в заблуждения я не кого не хочу ставить, я стараюсь вообще помочь как могу! Да кстати а зачем в запросе в конце единица, потом идет двойка и так до 10? А я думал создать массив от одного до 10 и присвоить в массиве каждому номеру из массива свое значения. а этот массив подставить в запрос.
Это, конечно, похвально, но посмотри на это с другой стороны. У тебя мало опыта, ты сам что-то недопонимаешь. Приходит такой же новичок, задает вопрос. Ты начинаешь "помогать", просишь какие-то неуместные данные, даешь какие-то неуместные советы. В итоге ни тебе саморазвития, ни твоему собеседнику решения задачи. Взглянем же скорее на тебя в этом же топике: эти данные тебе не нужны для решения задачи уменьшения числа однотипных запросов с Н до 1 (тм). полный код тоже не нужен для решения задачи уменьшения числа однотипных запросов с Н до 1 (тм). есть всякие демоны, консольные программы и банальные генераторы медиафайлов. У них у всех по определению не будет формы. Хотя тут еще нужно уточнить, что ты под формой подразумеваешь, но я думаю ты про хтмл-форму на странице в браузере. И... Эти данные тебе не нужны для решения задачи уменьшения числа однотипных запросов с Н до 1 (тм). Должна быть? Точно вот должна быть? У ТСа я смотрю вообще константы идут. Живет же как то без такой обязательной единой переменной. Архитектура его приложения тебе не важна для решения задачи уменьшения числа однотипных запросов с Н до 1 (тм). В смысле? ТС хочет уйти от 10 запросов а ты ему предлагаешь переменную с 10 значениями, которую потом каким-то раком надо заталкать в запрос к СУБД? Мне кажется это не путь решения задачи уменьшения числа однотипных запросов с Н до 1 (тм), но я могу ошибаться. Унижается тот кто хочет быть униженным. А вопрос, похоже, не понял не я, а ты. Умеешь признавать ошибки. Это тоже заслуживает уважения. Как-то так Успехов!
Предполагаю что дальше через for надо действовать.. ......query..... fetch_array.... PHP: $x = $row [idstatus_vakans]; for ($x = 1; $x <= 10; $x++) { echo $row[0]; } правильно я рассудил?
блин ганзал, ну харош те чмырить мелких помогают как умеют в процессе сами начинают разбираться в чем-то
Нет, ты еще не закончил с запросом, for не нужен тебе. Прекрасно справиться while. ------- https://www.w3schools.com/sql/sql_in.asp --- Добавлено --- или еще лучше: https://www.w3schools.com/sql/sql_between.asp
@igordata Верные слова говоришь я помогаю как могу, а даже если и ошибаюсь а ошибаюсь я часто потом после ошибки осознаю и не делаю так как надо.
@_ne_scaju_ ты если будешь видеть умирающего человека - бросишься делать ему открытый массаж сердца? Он потом естественно умрёт, и значительная доля вины в этом будет на тебе. Но ты же в фильмах видел, что так делают, поэтому решил "помочь", да?
@_ne_scaju_, читай больше, вникай почему так а не так как ты думаешь. Так быстрее будешь обучаться, нежели набивая шишки сам. Все начинали как ты (ну, наверно почти все) только я не стремился отвечать в темах, я много читал, вникал в ответы опытных пользователей, тем самым я получал опыт. Конечно это не значит, что ты должен 50 лет учиться как шаулинский манах познавая истину, ты можешь отвечать в темах, помогать, но прежде убедивщись, что ты даешь верный совет. Учись перенимать опыт. Прочитал? Ну и ладно, теперь можно продолжать в том же духе ))). p.s. я до сих пор больше читаю чем пишу)).
@viktor72 PHP: <?php // У тебя есть таблица status_vakans_has_vakans, в которой idstatus_vakans построчно имеет такие значения: $status_vakans_has_vakans = [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 1, 3, 5, 7, 9, 11, 1, 2, 3, 5, 7, 11, 13, 17, 1, 3, 5, 7, 11, 4, 6, 8, 8, 9, 10, ]; // В этот массив мы упакуем статистику вхождения значений idstatus_vakans $stats = []; // А вот так у нас описываются статусы $statuses = [ 1 => 'Один', 2 => 'Два', 3 => 'Три', 4 => 'Четыре', 5 => 'Пять', 6 => 'Шесть', 7 => 'Семь', 8 => 'Восемь', 9 => 'Девять', 10 => 'Десять', 11 => 'Одинадцать', 13 => 'Двенадцать-тринадцать', 17 => 'Тринадцать-семнадцать', 19 => 'Пятнадцать-девятнадцать-пусто' ]; // У меня тут нет реального обмена с СУБД, а нижеследующий код **немного** с ним связан if (0) { // Вот такой будет запрос к СУБД $sql = "SELECT `idstatus_vakans`, COUNT(*) `cnt` FROM `status_vakans_has_vakans` GROUP BY `idstatus_vakans`"; // Вот сюда мы помещаем ресурс результата запроса к СУБД $res = $mysqli->query($sql); /* Результирующая таблица будет вот такая: idstatus_vakans | cnt ----------------+---- 1 | 4 2 | 2 3 | 4 4 | 2 5 | 4 6 | 2 7 | 4 8 | 3 9 | 3 10 | 2 11 | 4 13 | 1 17 | 1 */ // Вот так мы построчно получаем записи из результирующей таблицы while ($row = $res->fetch_assoc()) { // И вот так мы складываем статистику в массив $stats[$row['idstatus_vakans']] = $row['cnt']; } } else { // И теперь то же самое но без СУБД $stats = array_count_values($status_vakans_has_vakans); } // На выхлопе получаем: var_dump($stats); /* array(13) { [1] => int(4) [2] => int(2) [3] => int(4) [4] => int(2) [5] => int(4) [6] => int(2) [7] => int(4) [8] => int(3) [9] => int(3) [10] => int(2) [11] => int(4) [13] => int(1) [17] => int(1) } */ // Осталось вывести эту порнографию в виде таблички ?><table> <thead> <tr> <th> Статус (код) </th> <th> Кол-во </th> </tr> </thead> <tbody> <?php foreach ($statuses as $id => $title): $cnt = isset($stats[$id]) ? $stats[$id] : '-'; ?> <tr> <td> <?= htmlspecialchars($title) ?> (<?= $id ?>) </td> <td> <?= $cnt ?> </td> </tr> <?php endforeach; ?> </tbody> </table> Как же мы с тобой хорошо потрудились. Теперь и отдохнуть можно. Заслужили.
@Ganzal ты думаешь я брошусь помогать? буду делать массаж сердца? я тебя лучше попрошу ты же опытней а я начинающий, или в лучшем случае в скорую позвоню либо людей на помощь позову, я же добрый на самом деле не кину в беде человека . Если я не знаю как этот массаж сердца делать лучше не лезть не в свое дело и-бо хуже будет. А если даже хоть не много знал бы как его делать, то хоть бы не много, хоть как ни-будь или чем не-будь помог бы человеку. Вот так и в программировании, помогаю если хоть не много знаю. Лан давай без шуток, я же согласился что я не прав а ты опять за свое взялся убеждать меня, в том что я такой сякой и подсказки делаю не правильно, плюс в этом есть один, и он заключается в том, что кто-то лучше понимающий или знающий ответ поправит меня и объяснит что не так, а я себе это на ус наматаю и запомню чтобы в следующий раз не делать такой ошибки).
Красота! Спасибо! я пишу по старинке - $query = mysqli_query()... стиль которым вы пишите - $res = $mysqli->query($sql); мне не знаком. Мне надо переделывать ? почему порнография? в чём зло?
В ходе расследования у меня появилась боль.. вернее две Боль первая: вывести надо так: Статус вакансии | количество вакансий | Вакансий на сумму ----------------------------------------------------------------------------------------------- Открытых --- | --- --------- 5 -------- | -------100 000 В работе ----- | ---- ------- 10 --------- | ----- 250 000 и т.д. То есть , надо вывести все 10 статусов, колличестов вакансий в каждом статусе и на какую сумму вакансий в каждом статусе. Боль вторая, главная. У одной vakans в конкретный момент времени только один status. Значит таблица посредник не нужна. Я её сделал чтоб туда даты вносить ..но позже создал специальнуютаблицу для дат.. Вопрос - надо удалять лишнюю таблицу и переделывать все запросы или приспосабливаться к тому что есть? Важный момент - в течении жизни вакансия проходит все статусы и хочется зафиксировать каждую дату изменения статуса. Нету ли в апдейте каких то подводных камней?..... Погружаюсь в раздумья ... Если кто то может, подскажите Всем спасибо!
@Ganzal если детям говорить "не умеешь - не берись" они вырастают трусливыми тупицами они все должны делать, пробовать и стараться не зависимо от того, насколько хорошо они разбираются. помощь на форуме это не операция на сердце. тут никто не умирает у нас к счастью. так что ты вполне можешь говорить им, где и как они ошибаются, и что делают неправильно но нельзя говорить, что они делают это зря и делать этого нельзя ты им говори, что поправить - так они будут учиться у твоего опыта