Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Вывод данных из базы данных в столбик
 
 автор: Костян   (22.02.2010 в 23:14)   письмо автору
 
 

Здравствуйте, не могу победить: В БД есть поля с name1 по name20. Мне нужно их вывести в столбик. Пытаюсь сделать это так:

require_once("config.php");

$query5 = mysql_query("select *  from names WHERE id>0") or die(mysql_error()); 
$prof = mysql_fetch_array($query5);

for($i = 0; $i+1 < 20; $i++)  
{
$name[$i]=$prof['name".$i."']; 
echo "name=".$name[$i];


Выводит ошибку.

  Ответить  
 
 автор: kostiaGt   (22.02.2010 в 23:46)   письмо автору
 
   для: Костян   (22.02.2010 в 23:14)
 

а нельзя ли сделать это при промщи sql: SELECT * FROM names LIMIT 0, 20
а что такое $i+1 че-то я не вкурил? это не тоже самое что ( $i = 1; $i <= 20) ?

  Ответить  
 
 автор: neadekvat   (22.02.2010 в 23:50)   письмо автору
 
   для: Костян   (22.02.2010 в 23:14)
 

Что значит, "поля с name1 по name20"?
Структура бд какая?

  Ответить  
 
 автор: Trianon   (22.02.2010 в 23:54)   письмо автору
 
   для: neadekvat   (22.02.2010 в 23:50)
 

>Что значит, "поля с name1 по name20"?
>Структура бд какая?

Хреновая Не выдерживающая критики.

  Ответить  
 
 автор: kostiaGt   (23.02.2010 в 00:00)   письмо автору
 
   для: Trianon   (22.02.2010 в 23:54)
 

не нужно обижать человека, если он только начинает программировать.

  Ответить  
 
 автор: Trianon   (23.02.2010 в 00:10)   письмо автору
 
   для: kostiaGt   (23.02.2010 в 00:00)
 

>не нужно обижать человека, если он только начинает программировать.

Где я обидел человека?!
По-моему, я о человеке слова не сказал.
Вся оценка пришлась на массу структуры БД.
Или может я структуру базы данных обидел?

И второе. Почему если только ?
А если он еще не начал, или уже занимается этим лет несколько, тогда нужно чтоли?

  Ответить  
 
 автор: neadekvat   (23.02.2010 в 00:04)   письмо автору
 
   для: Trianon   (22.02.2010 в 23:54)
 

То есть, я правильно понял, что там нечто такое:
name 1| name 2|.... name 20
value 1 | value 2 | value 20
?
А куда "value 21" тогда девать?)

  Ответить  
 
 автор: Trianon   (23.02.2010 в 00:43)   письмо автору
 
   для: neadekvat   (23.02.2010 в 00:04)
 

Дело не только в том, что очередное значение оказывается девать некуда.
Дело еще и в том что у SQL-языка нет средств выполнить поиск (отобрать, отсортировать) столбики.
Всё это можно сделать со значениями в строках и нельзя - со значениями в столбцах.
Перечислимыми могут быть только строки.

  Ответить  
 
 автор: kostiaGt   (23.02.2010 в 00:16)   письмо автору
 
   для: Костян   (22.02.2010 в 23:14)
 

Извини не правильно понял.
А если сделать так:


$index = 1;
while( $prof = mysql_fetch_array($query5, MYSQL_ASSOC) ) {
 if( isset($prof["name$index"])  ) {
  echo $prof["name$index"];
  $index++;
 }
}

  Ответить  
 
 автор: neadekvat   (23.02.2010 в 00:25)   письмо автору
 
   для: kostiaGt   (23.02.2010 в 00:16)
 

Во-первых, зачем mysql_fetch_array($query5, MYSQL_ASSOC), если можно mysql_fetch_assoc($query5)
Во-вторых, вы, кхм, _такое_ пишете в принципе, к тому же, не то, что нужно автору.

  Ответить  
 
 автор: kostiaGt   (23.02.2010 в 01:42)   письмо автору
 
   для: neadekvat   (23.02.2010 в 00:25)
 

БЛИИИИН !!! Я указал mysql_fetch_array потому, что так указанно у ватора для того, что так можно срезать массив на половину.
То, что я не засунул данные в массив и сразу же не напечатал его - сделат я это для краткости.
А автора, на сколько я понял, хочет вывести список полей, а не его заначений.

  Ответить  
 
 автор: Trianon   (23.02.2010 в 01:44)   письмо автору
 
   для: kostiaGt   (23.02.2010 в 01:42)
 

>А автора, на сколько я понял, хочет вывести список полей, а не его заначений.

для этого есть итератор mysql_fetch_field()
Но автор, вроде, такого не спрашивал.

  Ответить  
 
 автор: kostiaGt   (23.02.2010 в 01:48)   письмо автору
 
   для: Trianon   (23.02.2010 в 01:44)
 

запись - $prof = mysql_fetch_array($query5);
говорит о том, что автор хочит прочитать первую (т.е. не все строки, а одну ) строку в таблице БД.

  Ответить  
 
 автор: neadekvat   (23.02.2010 в 01:51)   письмо автору
 
   для: kostiaGt   (23.02.2010 в 01:48)
 

1. Какая, как вы думаете, структура бд
2. Сколько строчек в бд записано?

  Ответить  
 
 автор: Trianon   (23.02.2010 в 01:51)   письмо автору
 
   для: kostiaGt   (23.02.2010 в 01:48)
 

Вы б не только прочли ответ, но и постарались понять его, чтоли...

  Ответить  
 
 автор: kostiaGt   (23.02.2010 в 01:54)   письмо автору
 
   для: Trianon   (23.02.2010 в 01:51)
 

протупил. Извините!

  Ответить  
 
 автор: Костян   (23.02.2010 в 11:52)   письмо автору
 
   для: Trianon   (23.02.2010 в 01:51)
 

Я извиняюсь за долгое отсутствие. Много интересного, конечно, о себе узнал. Но это не важно. Задачка на самом деле простая, я это понимаю, но справиться с ней у меня ума не хватает. вот и обратился к Вам. Структура базы тоже простая: первое поле - id, второе - name, далее идут name1, name2, ..., name20. На самом деле выборку из БД нужно делать по имени пользователя name. Строка из базы может быть выбрана только одна. И мне нужно просто вывести содержание всех заполненных полей с name1 по name20 в столбик. Вот и все.

  Ответить  
 
 автор: Trianon   (23.02.2010 в 12:02)   письмо автору
 
   для: Костян   (23.02.2010 в 11:52)
 

примерно так.
<? 
$name 
'Костян';  
$sql "SELECT * FROM `tbl` WHERE `name` = ". ("'".mysql_real_escape_string($name)."'");
$res mysql_query($sql) or die("Error in $sql : "mysql_error());
$row mysql_fetch_row($res);
if(!
$row)  exit("Нет такого имени");
for(
$i 2$i count($row); $i++)
{
  
$n $i 1;
  echo 
"name$n : ".htmlspecialchars($row[$i]) ."<br />\r\n";
}

Тем не менее прочтите замечания по структуре. 23.02.2010 в 00:04 и 23.02.2010 в 00:43
Так SQL-таблицы не организуют. Это не Excel.

  Ответить  
 
 автор: Костян   (23.02.2010 в 12:50)   письмо автору
 
   для: Trianon   (23.02.2010 в 12:02)
 

Спасибо

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования