Форум программистов, компьютерный форум, киберфорум
PHP: базы данных
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
452 / 443 / 21
Регистрация: 11.04.2012
Сообщений: 2,076
1

Из базы выводится только самый первый товар

08.01.2013, 08:20. Показов 997. Ответов 8
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
вот галерейка у меня есть - смотреть рисунок

чтобы выводились товары в 2 строки как на рисунке - цикл
PHP
1
2
3
4
5
6
7
8
9
10
11
12
<table class="tab_group44"width="590px;" style="margin-left:30px;margin-top:10px;"><tbody>
             <?php 
             for($j=1;$j<=2;$j++)
        {
             ?>
             <tr>
                 /* ...................... */
             </tr>
            <?php 
            }
            ?>
          </tbody></table>
чтобы выводилось по три товара в одной строке - добавим еще один цикл

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
<table class="tab_group44"width="590px;" style="margin-left:30px;margin-top:10px;"><tbody>
             <?php 
             for($j=1;$j<=2;$j++)
        {
             ?>
             <tr> 
              <?php 
             
             for($k=1;$k<=3;$k++)
            {
             ?>
 
             <td style="text-align:center;width:213px;" class="colored244">
             <div class="round">
                 
                   /* ...........здесь типо сам товар - картинка и описание........... */
              
                  </div>
             </td>
             <?php 
             }
             ?>
              </tr>
            <?php 
            }
            ?>
          </tbody></table>
Ну а теперь собсно сама проблема - почему у меня из базы выводится только самый первый товар?????? хотя должно выводится по порядку вроде товары!!???

Тут типо я добавил еще вывод описания, производителя, цены ии фотки товара из базы:
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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
<table class="tab_group44"width="590px;" style="margin-left:30px;margin-top:10px;"><tbody>
 
             <?php 
             for($j=1;$j<=2;$j++)
        {
             ?>
             <tr> 
 
              <?php 
             
             for($k=1;$k<=3;$k++)
            {
             ?>
 
             <td style="text-align:center;width:213px;" class="colored244">
             <div class="round">
              <?php 
 
                      /* почему данный запрос вытаскивает из базы только самый первый товар??? */
             $query = "SELECT *,catalog.id as cid,prigroup.name as pname FROM `catalog`,`prigroup` where catalog.main_hot='1' and catalog.group2=prigroup.id  order by catalog.id limit 0,18";
$result = mysql_query($query) or die("Invalid query: " . mysql_error());
             while($row = mysql_fetch_assoc($result))         //где-то здесь ошибка видимо
                        { 
                        $marka = $row['MARKA'];
                        $pname= $row['pname'];
                        $cost = $row['COST4'];
                        $cid = $row['cid'];
                                                  $fotka=$row['fotka'];
                        }   
             ?>
             <img width="70" height="70" src="/catalog/image/<?php echo $fotka;?>">
 
             <a href="#"><?php echo $marka;?></a> <span class="metalic">&nbsp;</span>Производитель: <?php echo $pname; ?><br/>Цена: <span class="cena"><?php echo $cost;?></span><br/>Наличие: <span class="cena">Уточняйте</span>  
             </div>
             </td>
             <?php 
             }
             ?>
              </tr>
            <?php 
            }
            ?>
          </tbody></table>
Миниатюры
Из базы выводится только самый первый товар  
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
08.01.2013, 08:20
Ответы с готовыми решениями:

Вывод из базы всех. Но выводится только по 1
Единственная проблема в том, что выводятся к Radiant b Dire по 1 человеку, хотя в игре 10. echo...

Function SUMIF на листе считает только первый товар
ПРИ АКТИВАЦИИ шита TOTAL функции которые встроены в шита TOTAL работает, но когда я ввожу туда же...

Выводится только первый элемент списка
здравствуйте, посмотрите пожалуйста что не так в данно коде . Хоть убейте , не понимаю что не так...

Выводится только первый символ строки
Имеется код: #include &lt;iostream&gt; using namespace std; int main() { string k, s =...

8
121 / 66 / 9
Регистрация: 15.08.2012
Сообщений: 266
08.01.2013, 10:30 2
вместо while пробовали foreach использовать?
0
452 / 443 / 21
Регистрация: 11.04.2012
Сообщений: 2,076
08.01.2013, 10:32  [ТС] 3
mack_91, неа
а как?
0
121 / 66 / 9
Регистрация: 15.08.2012
Сообщений: 266
08.01.2013, 11:03 4
Посмотрел код подробней, и оказалось, что вы сделали не так, как я подумал.
Лучше вынесите запрос в БД за пределы циклов.
Пусть все нужные записи занесутся в двумерный массив $row одним запросом.
Массив получится таким:
PHP
1
2
3
4
5
6
7
$row=array(
0=>array('MARKA'=>'марка1', 'pname'=>'Название товара1', 'COST4'=>'Цена товара1', ...),
1=>array('MARKA'=>'марка2', 'pname'=>'Название товара2', 'COST4'=>'Цена товара2', ...),
2=>array('MARKA'=>'марка3', 'pname'=>'Название товара3', 'COST4'=>'Цена товара3', ...),
3=>array('MARKA'=>'марка4', 'pname'=>'Название товара4', 'COST4'=>'Цена товара4', ...),
....
);
Тогда цикл вывода будет таким (HTML теги для таблицы уже думаю сами добавите, я описал идею)
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
$a=0; //номер товара в двумерном массиве
for($i=1;$i<=2;$i++)
{
for ($j=1;$j<=3;$j++)
{
$marka = $row['$a']['MARKA'];
$pname= $row['$a']['pname'];
$cost = $row['$a']['COST4'];
$cid = $row['$a']['cid'];
$fotka=$row['$a']['fotka'];
a++;
}
 
}
0
0 / 0 / 0
Регистрация: 08.01.2013
Сообщений: 3
08.01.2013, 11:07 5
Цитата Сообщение от Sergio Aguero Посмотреть сообщение
mack_91, неа
а как?
вместо
PHP
1
2
3
4
5
6
7
8
9
10
$query = "SELECT *,catalog.id as cid,prigroup.name as pname FROM `catalog`,`prigroup` where catalog.main_hot='1' and catalog.group2=prigroup.id  order by catalog.id limit 0,18";
$result = mysql_query($query) or die("Invalid query: " . mysql_error());
             while($row = mysql_fetch_assoc($result))         //где-то здесь ошибка видимо
                        { 
                        $marka = $row['MARKA'];
                        $pname= $row['pname'];
                        $cost = $row['COST4'];
                        $cid = $row['cid'];
                                                  $fotka=$row['fotka'];
                        }
напишите
PHP
1
2
3
4
5
6
7
8
9
10
11
$query = "SELECT *,catalog.id as cid,prigroup.name as pname FROM `catalog`,`prigroup` where catalog.main_hot='1' and catalog.group2=prigroup.id  order by catalog.id limit 0,18";
$query = mysql_query($query) or die("Invalid query: " . mysql_error());
$results = mysql_fetch_array($query);
foreach($results as $result)         //в $result каждый раз новый обьект (идет перебор)
{
    $marka = $result['MARKA'];
    $pname= $result['pname'];
    $cost = $result['COST4'];
    $cid = $result['cid'];
    $fotka = $result['fotka']; 
}
0
121 / 66 / 9
Регистрация: 15.08.2012
Сообщений: 266
08.01.2013, 11:14 6
next768, foreach не поможет, так вывод товара за пределами цикла foreach.


Sergio Aguero, В данный момент
PHP
1
$row = mysql_fetch_assoc($result)
в вашем массиве $row что находится? только 1 товар или все товары?
Просто судя из запроса к БД там находятся все 18 товаров. А если смотреть по логике циклов, то там должен быть один товар.
0
0 / 0 / 0
Регистрация: 08.01.2013
Сообщений: 3
08.01.2013, 11:31 7
Цитата Сообщение от mack_91 Посмотреть сообщение
next768, foreach не поможет, так вывод товара за пределами цикла foreach.


Sergio Aguero, В данный момент
PHP
1
$row = mysql_fetch_assoc($result)
в вашем массиве $row что находится? только 1 товар или все товары?
Просто судя из запроса к БД там находятся все 18 товаров. А если смотреть по логике циклов, то там должен быть один товар.
Согласен, посмотрел ваш пост и написал:
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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
<table class="tab_group44"width="590px;" style="margin-left:30px;margin-top:10px;"><tbody>
 
             <?php 
            $query = "SELECT *,catalog.id as cid,prigroup.name as pname FROM `catalog`,`prigroup` where catalog.main_hot='1' and catalog.group2=prigroup.id  order by catalog.id limit 0,18";
            $query = mysql_query($query) or die("Invalid query: " . mysql_error());
            $results = mysql_fetch_array($query);
            foreach($results as $result)         //берем все товары, потом формируем массив
            {
                $tovar_array[] = array(
                        "marka" => $result['MARKA'],
                        "pname" => $result['pname'],
                        "cost" => $result['COST4'],
                        "cid" => $result['cid'],
                        "fotka" => $result['fotka'],
                );
            } 
            $id_array = 0; // номер товара в массиве
            for($j=1;$j<=2;$j++)
            {
             ?>
             <tr> 
 
              <?php 
             
            for($k=1;$k<=3;$k++)
            {
             ?>
 
             <td style="text-align:center;width:213px;" class="colored244">
             <div class="round">
            <?php 
                $marka = $tovar_array[$id_array]['MARKA'];
                $pname= $tovar_array[$id_array]['pname'];
                $cost = $tovar_array[$id_array]['COST4'];
                $cid = $tovar_array[$id_array]['cid'];
                $fotka = $tovar_array[$id_array]['fotka'];
             ?>
             <img width="70" height="70" src="/catalog/image/<?php echo $fotka;?>">
 
             <a href="#"><?php echo $marka;?></a> <span class="metalic">&nbsp;</span>Производитель: <?php echo $pname; ?><br/>Цена: <span class="cena"><?php echo $cost;?></span><br/>Наличие: <span class="cena">Уточняйте</span>  
             </div>
             </td>
             <?php 
             $id_array++;
             }
             ?>
              </tr>
            <?php 
            }
            ?>
          </tbody></table>
Думаю этот вариант будет рабочим.

Sergio Aguero, советую вам больше не называть переменные и название столбцов в таблицах именами на подобие "fotka", приучайте себя к нормальному коддингу)

Добавлено через 6 минут
И к стати переходите на ООП))
0
121 / 66 / 9
Регистрация: 15.08.2012
Сообщений: 266
08.01.2013, 11:51 8
Цитата Сообщение от next768 Посмотреть сообщение
PHP
1
2
3
4
5
6
7
8
9
10
foreach($results as $result)
{
                $tovar_array[] = array(
                        "marka" => $result['MARKA'],
                        "pname" => $result['pname'],
                        "cost" => $result['COST4'],
                        "cid" => $result['cid'],
                        "fotka" => $result['fotka'],
                );
}
Этот цикл не будет работать. А если так сделать, то будет
PHP
1
foreach($results as $key=> $result)
0
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
16844 / 6723 / 880
Регистрация: 12.06.2012
Сообщений: 19,967
08.01.2013, 15:50 9
Может проще будет так?
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
$query = 'SELECT COUNT(1) as `count`, ......';
//выполняем запрос
$status = false;
$i = 1;
 
echo '<table><tr>';
 
while($row = mysql_fetch_assoc($res)) {
 
    if(!$status)
        $count = round($row['count'] / 2);
 
//выводишь столбцы
 
    if($i % $count === 0)
        echo '</tr><tr>';
 
$i++;
 
}
 
echo '</tr></table>';
Добавлено через 46 секунд
выведет нормально, в две строки, зачем мучаться то?
0
08.01.2013, 15:50
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
08.01.2013, 15:50
Помогаю со студенческими работами здесь

Ошибка: Выводится только первый элемент массива
выводит только первый элемент. Подскажите пожалуйста, как исправить? char* massivImpl::outmass()...

Распечатка двумерного массива: Выводится только первый столбец
Не могу распечатать двумерный массив символов Выводится только первый столбец // Nr -...

Правильно выводится только первый элемент полученного массива
char *IntToChar(long long chislo) { long long INT; int count=0; char str;...

После INSERT в datagridview выводится только первый символ
Добрый день! Помогите, пожалуйста, найти ошибку. Есть главная форма и есть форма для добавления...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru