Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.85/13: Рейтинг темы: голосов - 13, средняя оценка - 4.85
0 / 0 / 0
Регистрация: 04.09.2015
Сообщений: 16

Скрипт вывода пунктов из базы данных на pdo

21.12.2015, 21:12. Показов 2787. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте, начала мучить pdo и возник такой вопрос: как проверить прошел ли запрос или нет
PHP
1
2
3
4
5
6
7
8
9
10
11
12
$result_podcat = $pdo->prepare("SELECT id, id_cat, title FROM `podcat` WHERE id_cat=:id_cat");
$result_podcat ->bindParam(':id_cat', $row_cat['id'], PDO::PARAM_INT);
$result_podcat ->execute();
 
    if(count($result_podcat) > 0) // Здесь написано неправильно, пробовала и true и count, но я видимо не так все понимаю, в mysql писала mysql_num_rows($result_podcat) > 0
    {
        echo "YES";
    }
    else
    {
        echo "NO";
    }
Сейчас все работает по такому принципу, но мне кажется можно как то компактнее, слишком нагромождено
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
$result_cat = $pdo->query('SELECT id, title FROM categories'); // выбор категории
 
while ($row_cat = $result_cat->fetch())
{
    $num_podcat = $pdo->prepare("SELECT COUNT(0) AS ROW_NUM FROM `podcat` WHERE id_cat=:id_cat"); // выбор подкатегории
    $num_podcat->bindParam(':id_cat', $row_cat['id'], PDO::PARAM_INT);
    $num_podcat->execute();
    $num_c = $num_podcat->fetch(PDO::FETCH_ASSOC);
    $num = $num_c['ROW_NUM'];
    
    echo "<li><a href=''>".$row_cat['title']."</a>";
    echo "</li>";
    if($num > 0) // если в категории есть подпункты, то выполняем запрос и выводим подкатегории
    {
        $result_podcat = $pdo->prepare("SELECT id, id_cat, title FROM `podcat` WHERE id_cat=:id_cat");
        $result_podcat->bindParam(':id_cat', $row_cat['id'], PDO::PARAM_INT);
        $result_podcat->execute();
        while ($row_podcat = $result_podcat->fetch())
        {
            echo "$row_podcat[title]";  
        }
    }
    else
    {
        echo "0 <br>";
    }
}
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
21.12.2015, 21:12
Ответы с готовыми решениями:

Вывод профиля из базы данных PDO
Как вывести фото, имя пользователя при его авторизации, допустим что фото хранится в таблице profil , где id пользователя 3 , вывести его...

Вывод данных из базы (подключение PDO)
есть две таблицы в одной хранится список сайтов во второй таблице жалоба на сайт запрос к списку сайтов (к первой таблице) $stmt...

Получить список всех таблиц с базы данных - PDO
Привет. Не могу вывести список всех таблиц в базе данных: &lt;?php //получаем значения с html формы $host = $_POST; $db = $_POST; ...

10
471 / 399 / 169
Регистрация: 04.01.2013
Сообщений: 1,675
21.12.2015, 22:23
Делайте примерно так
PHP
1
2
3
4
5
6
7
$result_podcat ->execute();
$result = $result_podcat->fetchAll();
if(empty($result)) {
    //выборка пустая
}else {
//делаем что надо
}
0
0 / 0 / 0
Регистрация: 04.09.2015
Сообщений: 16
21.12.2015, 22:41  [ТС]
Я так пробовала, но отказалась от этого из-за того что не знаю как правильно вывести данные из этого массива, делала так:
PHP
1
2
3
4
5
6
7
8
9
    $result = $result_podcat->fetchAll();
    if(empty($result)) {
        echo "0 <br>";
    }else {
        foreach($result as $k => $v)
        {
            echo "$k - $v,<br>"; // выводит 0 - Array, 1 - Array и т.д.
        }
    }
получается нужно делать вложенный foreach, я так понимаю это ведь неправильно?
0
471 / 399 / 169
Регистрация: 04.01.2013
Сообщений: 1,675
21.12.2015, 22:55
Ну почему неправильно, немного громоздко, но как мне кажется имеет право на жизнь)
0
Фрилансер
Эксперт PythonЭксперт JSЭксперт PHP
 Аватар для Azdeman
1871 / 1362 / 604
Регистрация: 12.01.2011
Сообщений: 5,470
21.12.2015, 23:00
PHP
1
2
3
4
5
if(!empty($result)) {
        while($result=$result_podcat->fetchAll()){
echo $result['title']."<br/>";
}
    }else echo "Пусто";
0
0 / 0 / 0
Регистрация: 04.09.2015
Сообщений: 16
21.12.2015, 23:08  [ТС]
Попробовала еще раз через вложенный foreach
таблица в mysql такая: id, id_cat, title
PHP
1
2
3
4
5
6
7
8
9
10
11
12
    $result = $result_podcat->fetchAll();
    if(empty($result)) {
        echo "0 <br>";
    }else {
        foreach($result as $k => $v)
               {
            foreach($v as $a => $b)
            {
                echo "$a - $b,<br>"; // выводит id - 1, id_cat - 1, title - bla-bla, id - 2, id_cat - 1, title - bla-bla, и т.д.
            }
               }
    }
А как сделать чтобы выводил только надпись title? foreach выводит все столбцы подряд.
Изменить запрос sql на выбор определенного столбца не могу, нужно чтобы формировалась ссылка
HTML5
1
<a href='art.php?id=1'>bla-bla</a>
Добавлено через 2 минуты
Azdeman, так попробовала выдало пусто несколько раз и все

Весь скрипт
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
$result_cat = $pdo->query('SELECT id, title FROM categories');
 
while ($row_cat = $result_cat->fetch())
{
    $result_podcat = $pdo->prepare("SELECT id, id_cat, title FROM `podcat` WHERE id_cat=:id_cat");
    $result_podcat->bindParam(':id_cat', $row_cat['id'], PDO::PARAM_INT);
    $result_podcat ->execute();
    $result = $result_podcat->fetchAll();
    
    if(!empty($result))
    {
        while($result=$result_podcat->fetchAll())
        {
            echo $result[0];
        }
    }
    else 
    {
        echo "Пусто<br>";
    }
}
0
Фрилансер
Эксперт PythonЭксперт JSЭксперт PHP
 Аватар для Azdeman
1871 / 1362 / 604
Регистрация: 12.01.2011
Сообщений: 5,470
21.12.2015, 23:11
Цитата Сообщение от Аннушка30 Посмотреть сообщение
echo $result[0];
что за 0?

Добавлено через 24 секунды
Цитата Сообщение от Аннушка30 Посмотреть сообщение
А как сделать чтобы выводил только надпись title?
Пример вам сделал
PHP
1
2
     $arr =array("title"=>array("1","2","3"),"id_cat"=>array("1","2","3","4","5"));
foreach($arr['title'] as $v) echo $v;
123
Вам нужно понять как вообще обращаться к элементам массива по ключу.

У вас разве в БД столбец 0 есть ? вы же сами пишите что у вас title,id_cat . А вы обращаетесь к 0?
0
471 / 399 / 169
Регистрация: 04.01.2013
Сообщений: 1,675
21.12.2015, 23:19
Лучший ответ Сообщение было отмечено Аннушка30 как решение

Решение

Может вот так тогда?
PHP
1
2
3
4
5
6
7
8
<?php
if(!empty($result)) {
    foreach($result as $array) {
 
    <a href='art.php?id=<?=$array['id']?>'><?=$array['title']?></a><br>
 
    }
}
1
0 / 0 / 0
Регистрация: 04.09.2015
Сообщений: 16
21.12.2015, 23:22  [ТС]
Azdeman, [0] - это индекс в массиве. Ваш пример к сожалению не работает. Я умею выводить массивы foreach
PHP
1
2
3
4
5
6
7
8
9
10
11
12
    if(!empty($result))
    {
        echo "while не работает <br>";
        while($result=$result_podcat->fetchAll())
        {
            echo "результат - ".$result['title']."<br>";
        }
    }
    else 
    {
        echo 'пусто<br>';
    }
выводит это:

while не работает
пусто
while не работает

У меня массив готов из запроса и он имеет вложенность. А индекс стоит правильный, ставят от 0, можно писать названием столбца разницы нет
0
Фрилансер
Эксперт PythonЭксперт JSЭксперт PHP
 Аватар для Azdeman
1871 / 1362 / 604
Регистрация: 12.01.2011
Сообщений: 5,470
21.12.2015, 23:24
Цитата Сообщение от Аннушка30 Посмотреть сообщение
Ваш пример к сожалению не работает
Вот этот не работает? Он работает точно, т.к я только что проверил.
PHP
1
2
$arr =array("title"=>array("1","2","3"),"id_cat"=>array("1","2","3","4","5"));
foreach($arr['title'] as $v) echo $v;
0
0 / 0 / 0
Регистрация: 04.09.2015
Сообщений: 16
21.12.2015, 23:26  [ТС]
СлаваВирус, Спасибо огромное, заработало!!! А то я уже голову сломала )) Теперь все верно выдает
Верный ответ
PHP
1
2
3
4
5
6
7
8
<?php
if(!empty($result)) {
    foreach($result as $array) {
?>
    <a href='art.php?id=<?=$array['id']?>'><?=$array['title']?></a><br>
<?
    }
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
21.12.2015, 23:26
Помогаю со студенческими работами здесь

Сортировка данных вывода из базы данных
Доброго времени суток друзья! У меня вот такой вопрос, помогите найти решение. Есть сайт, там есть почта , как сделать чтобы на первом...

Скрипт вывода данных с текстого файла
Добрый вечер. В bash скриптах новичок. Буду рад любой помощи. Нужно написать скрипт,который будет выводить в терминал, данные результата...

Скрипт вывода графика в зависимости от данных
Есть у кого скрипт вывода графика в зависимости от данных.

Базы Данных. Кодировка ввода/вывода.
Здравствуйте! Последнее время на форуме часто проскакивает вопрос на тему &quot;Кодировка в MySQL&quot; или нечто подобное. Создано множество...

Правила вывода связанных данных из базы
Вопрос немного теоретического характера. Пример. Имеем, две таблицы. Users и Purchases (Пользователи и покупки). Два класса...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru