Перейти к содержимому

Реферальная программа Мегаплана


Объединить php с базой mysql

#1 кипятильник

кипятильник
  • Пользователь
  • 102 сообщений
  • Репутация: 0
0

Отправлено 23 Ноябрь 2009 - 11:30

не могу объеденить с базой.

$data = array(
array('175', '70', '13'),
array('175', '75', '13'),
array('175', '70', '14'),
);
$tmp = array();
foreach ($data as $row)
{
$tmp[$row[2]][] = $row;
}
$data = $tmp;
$tmp = null;
foreach ($data as $key => $rows)
{
echo $key.':<br>';
foreach ($rows as $row)
{
printf("%s<br>", implode(', ', $row));
}
}



как записи можно брать с базы ?

или как переписать код что бы к примеру

в базе есть записи (записей много и динамические)
175 70 13
175 65 14
175 70 14

а выдавало

13
175 70 13

14
175 65 14
175 70 14

 

 

  • 0

#2 gaaarfild

gaaarfild
  • Пользователь
  • 596 сообщений
  • Репутация: 0

Отправлено 23 Ноябрь 2009 - 14:27

А 175 и 70 и 13 хранятся в разных полях или в одном?
Если в одном, то explode(" ", "строка"); и потом выводите записи под соответствующим индексом. Если колическто элементов не всегда 3 а разное, тогда элемент под максимальным индексом берите.

Если в разных, тогда просто в запросе делаете ORDER BY.

потом просто в цикле, который вытаскивает данные из БД делаете вывод данных

 
$result = $db->sql_query("SELECT `stroka` FROM nazvanie_tablicy");
while(list($stroka) = $db->sql_fetchrow($result)) {
$arr = explode(" ", $stroka);
echo $arr[2]."<br />".$stroka."<br /><br />";
}


Еще как вариант, можно сделать двумерный массив.
  • 0

#3 кипятильник

кипятильник
    Topic Starter
  • Пользователь
  • 102 сообщений
  • Репутация: 0

Отправлено 23 Ноябрь 2009 - 19:33

175 и 70 и 13 храняться в разных полях, и всегда в одинаковом количестве,
результат должен быть такого типа

13
175 70 13

14
175 65 14
175 70 14
но то что ты предложил не подходит.


  • 0

#4 ZiTosS

ZiTosS
  • Пользователь
  • 5 148 сообщений
  • Репутация: 8

Отправлено 23 Ноябрь 2009 - 20:55

кипятильник,

<?php

$base = array(); // пустышка для формирования данных из базы
$format = array(); // пустышка для формирования форматированных данных

$sql = "SELECT * FROM table ORDER_BY poleN"; // poleN - поле по которому сортируем, надеюсь, у тебя оно целого типа
$res = mysql_query($sql); // получаем все строки со всеми полями

if(mysql_num_rows($res) > 0) // если запрос вернул записи
while($temp = mysql_fetch_assoc($res)) // обходим все записи
$base[] = $temp; // заносим записи(массивы) в массив $base

/* если массив $base не пуст */
if(count($base))
{
foreach($base as $temp) // объодим все записи
{
if(!array_key_exists($temp["poleN"], $format)) // если ключа $temp["poleN"] ещё не встречалось в $format
$format[$temp["poleN"]] = array(); // обозначаем, что $format[с индексом] будет массивом

$format[$temp["poleN"]][] = implode(" ", $temp); // заносим в конец массива $format[$temp["poleN"]] строку, собранную из $temp
}
}

echo "<pre>";
print_r($format); // выведем для показа наш массив
echo "</pre>";

?>


Конечно в конце концов ты не получишь нужный тебе результат, но массив для вывода будет сформирован. Тебе стоит только решить задачу о его выводе :blink: Я думаю это тебе по силам.
Сначала думал сделать всё в БД, но понял, что одним запросом не обойтись и мы создадим нагрузку на сервер своими циклами.
  • 0


Оформление форума – IPBSkins.ru