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 :: Специфичечкий вывод данных из базы

 PHP.SU

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


 Страниц (1): [1]   

> Описание: Подскажите, возможно ли это сделать?
Kosteg
Отправлено: 29 Января, 2009 - 01:20:00
Post Id


Новичок


Покинул форум
Сообщений всего: 27
Дата рег-ции: Март 2008  


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




имеется таблица:

V | O | R |
----------------
1`| 1 | - |
1`| 2 | - |
1`| 3 | + |
1`| 4 | - |
2`| 5 | - |
2`| 6 | + |
2`| 7 | - |

Цифры - это значения в таблице(просто цифрами прощеУлыбка), как видно в 1м столбце они повторятся, а во 2м нет.
Если я делаю вывод следующим образом:
PHP:
скопировать код в буфер обмена
  1.  
  2. $result1=mysql_query($query1);
  3. while($row=mysql_fetch_array($result1))
  4.  {
  5.   echo ($row['v']);
  6.   echo ($row['o']);
  7.   echo ($row['r']);
  8.  }

то получаетс следующее:
1` 1 -
1` 2 -
1` 3 +
1` 4 -
...... и т.д. Т.е. получается выводит по строкам, как и в таблице.
Возможно ли сделать так, что бы вывод выглядел следующим образом?:

1` 1- 2- 3+ 4-
2` 5- 6+ 7-

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

(Отредактировано автором: 29 Января, 2009 - 01:31:44)

 
 Top
Бублик
Отправлено: 29 Января, 2009 - 09:08:41
Post Id


Частый гость


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


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

[+]


Самое простое:

PHP:
скопировать код в буфер обмена
  1. <?PHP
  2.  
  3. $result1=mysql_query($query1);
  4. $last_v;
  5. while($row=mysql_fetch_array($result1))
  6.  {
  7.   if($last_v == $row['v']) break;
  8.   echo ($row['v']);
  9.   echo ($row['o']);
  10.   echo ($row['r']);
  11.   $last_v = $row['v'];
  12.  }
  13. ?>


Вроде так
 
 Top
Kosteg
Отправлено: 29 Января, 2009 - 12:38:37
Post Id


Новичок


Покинул форум
Сообщений всего: 27
Дата рег-ции: Март 2008  


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




Спасибо, но результат не тот. Выводит только одну строку из базы. Походу когда натыкается на дублирующую запись в 1м столбце, то из-за "break" прекращается вывод остальных строк.
Есть ли еще варианты, пусть и не самые простые?
 
 Top
Бублик
Отправлено: 29 Января, 2009 - 15:40:40
Post Id


Частый гость


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


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

[+]


Замените break на continue
 
 Top
Kosteg
Отправлено: 29 Января, 2009 - 17:24:36
Post Id


Новичок


Покинул форум
Сообщений всего: 27
Дата рег-ции: Март 2008  


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




Ситуация поменялась, но результат не тот, теперь из таблицы:

1`| 1 | - |
1`| 2 | - |
1`| 3 | + |
1`| 4 | - |
2`| 5 | - |
2`| 6 | + |
2`| 7 | - |

скрипт выводит следующие строки:

1`| 1 | - |
2`| 5 | - |

Т.е. Если значение в первом столбце повторяется, то строка не выводится.
хм. Есть еще варианты? ??? Непонял!
 
 Top
valenok
Отправлено: 29 Января, 2009 - 17:42:22
Post Id



Здесь могла бы быть ваша реклама


Покинул форум
Сообщений всего: 4574
Дата рег-ции: Июль 2006  
Откуда: Israel


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




PHP:
скопировать код в буфер обмена
  1.  
  2. <?
  3. $result1=mysql_query($query1);
  4. $last_v;
  5. while($row=mysql_fetch_array($result1))
  6.  {
  7.   if($last_v != $row['v'])  echo '<br>', $row['v'];
  8.   echo ($row['o']);
  9.   echo ($row['r']);
  10.   $last_v = $row['v'];
  11.  }
  12. ?>
  13.  


-----
Truly yours, Sasha.
 
My status
 Top
Kosteg
Отправлено: 29 Января, 2009 - 17:47:56
Post Id


Новичок


Покинул форум
Сообщений всего: 27
Дата рег-ции: Март 2008  


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




Большое спасибо. Теперь все отлично.
 
 Top
Kosteg
Отправлено: 29 Января, 2009 - 21:42:39
Post Id


Новичок


Покинул форум
Сообщений всего: 27
Дата рег-ции: Март 2008  


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




Извиняюсь, но возник следующий вопрос. Вкратце о ситуации. Та же таблица:

V | O | R |
----------------
1`| 1 | - |
1`| 2 | - |
1`| 3 | + |
1`| 4 | - |
2`| 5 | - |
2`| 6 | + |
2`| 7 | - |
3`| 8 | + |
3`| 9 | - |

Данные выводятся как и хотелось(за что еще раз спасибо):

1` 1- 2- 3+ 4-
2` 5- 6+ 7-
3` 8+ 9-

Требуется что то по типу рандома. Т.е. вывод должен выглядеть:

2` 5- 6+ 7-
1` 1- 2- 3+ 4-
3` 8+ 9-

или:

3` 8+ 9-
2` 5- 6+ 7-
1` 1- 2- 3+ 4-

В общем думаю объяснил понятно. Своего рода разброс, каждый вывод по разному.
З.Ы. Использовал RAND() и ORDER BY RAND() в самом запросе - получается каша =\

(Отредактировано автором: 29 Января, 2009 - 21:43:01)

 
 Top
Kosteg
Отправлено: 31 Января, 2009 - 01:28:22
Post Id


Новичок


Покинул форум
Сообщений всего: 27
Дата рег-ции: Март 2008  


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




Походу, вариантов нет Растерялся
 
 Top
Agassi
Отправлено: 31 Января, 2009 - 11:15:05
Post Id



Частый гость


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


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




$str="";$str_str="";
$result1=mysql_query($query1);
$last_v;
while($row=mysql_fetch_array($result1))
{
if($last_v != $row['v'])
{

$r=rand(1, 2);
if($r===1)
$str_str.=$str;
else
$str_str=$str.$str_str;
$str='<br>'.$row['v'];
}

$str.=$row['o'];
$str.=$row['r'];
$last_v = $row['v'];
}
 
 Top
Kosteg
Отправлено: 31 Января, 2009 - 17:26:36
Post Id


Новичок


Покинул форум
Сообщений всего: 27
Дата рег-ции: Март 2008  


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




Очень благодарен за ответ. Но пробывал несколько вариантов его использования. Но, либо выводит не так как надо - дублирует $row['v'], либо выводит как мне и нужно было изначально, но без рандома. Возможно если я приведу полный кусок кода, вы подскажите мне куда именно вставить скрипт рандома.

PHP:
скопировать код в буфер обмена
  1.  
  2. $query1="SELECT * FROM otvet LEFT JOIN vopros ON otvet.vopros=vopros.vopros LEFT JOIN test ON vopros.test_name=test.test_name WHERE test.test_name='$go_test'";
  3.                 $result1=mysql_query($query1);
  4.                 $last_v;
  5.                 $i=1; $j=1; $k=1; $l=1;
  6.                
  7.         while($row=mysql_fetch_array($result1))
  8.         {      
  9.                 if($last_v != $row['vopros'])  echo "<hr width='90%'>".++$h.": <input type='text' readonly='readonly' name='Vopros".$i++."' size='100' value='".$row['vopros']."'> <br>";
  10.                        
  11.                         if(empty($row['otvet']))
  12.                         {
  13.                         echo "<input type='text' name='Otvet_o".$j++."' value=''>";
  14.                         }       else
  15.                                         {
  16.                                         echo "<input type='text' readonly='readonly' name='Otvet_z".$k++."' value='".($row['otvet'])."'><input type='checkbox' name='Resultat".$l++."'> ";
  17.                                         }
  18.                         $last_v=$row['vopros'];
  19.                         echo "<br>";
  20.                 }
  21.                
  22.         mysql_close($conn);
  23.  

(Отредактировано автором: 31 Января, 2009 - 17:27:12)

 
 Top
Agassi
Отправлено: 31 Января, 2009 - 18:10:35
Post Id



Частый гость


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


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




<?
@mysql_connect("localhost","root","root") or die('Database connection error');
@mysql_select_db("user") or die('Database error!');
@mysql_query ("set names=cp1251");
error_reporting(E_ALL);
$query1="select *from user";
$str="";$str_str="";
$last_v="";
$result1=mysql_query($query1);

while($row=mysql_fetch_array($result1))
{
if($last_v != $row['v'])
{

$r=rand(1, 2);
if($r===1)
$str_str.=$str;
else
$str_str=$str.$str_str;
$str='<br>'.$row['v'];
}

$str.=$row['o'];
$str.=$row['r'];
$last_v = $row['v'];
}
$r=rand(1, 2);
if($r===1)
$str_str.=$str;
else
$str_str=$str.$str_str;
echo $str_str;
?>



Вот тебе код который работает.А куда ты уже сам выбери.Изначально написал без проверки,думал сам добёшь,главное мысль тебе обяснил((,но оказалось мало
 
 Top
Kosteg
Отправлено: 01 Февраля, 2009 - 15:46:45
Post Id


Новичок


Покинул форум
Сообщений всего: 27
Дата рег-ции: Март 2008  


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




Agassi, большое спасибо, теперь все встало на свои места. Поклон
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« SQL и Архитектура БД »


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



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

 
Powered by ExBB FM 1.0 RC1. InvisionExBB