Как вывести из MYSQL все строки одного поля в одну переменную?

Фанат

oncle terrible
Команда форума
с какой стати?
но даже если бы и было можно, то не нужно.
массивы - второй класс.
первый - строки.
надо ведь учиться от простого к сложному, а не наоборот.
 

krum

Новичок
Я, конечно не претендую на мастака в этом деле, я лишь начинающий самоучка. Но вот это:
PHP:
$str=array();
$str[]="Some string";
$str[]="Some other string";
...
$str[]="The last string";
$str=implode("",$str);
Что и приведено мной, как решение вопроса, взято как раз с твоей последней ссылки ))
Мне нужно не объединение строк типа:
PHP:
<?php
$a = "Hello ";
$b = $a . "World!"; // $b содержит строку "Hello World!"

$a = "Hello ";
$a .= "World!";     // $a содержит строку "Hello World!"
?>
А нужно выбрать все строки в одну переменную, т.е. в любом случае это массив!
Если сделать так:
PHP:
while( $row = mysql_fetch_array ($result)) { 
$output.=$row['text'];
}
То выводится только одна первая строка.
 

Фанат

oncle terrible
Команда форума
т.е. в любом случае это массив!
с чего это ты взял? а почему не строка или число?
выводится только одна первая строка.
это опять упрощенный для понимания код? если так, то упрости и реальный. потому что этот код выводит все строки.
 

krum

Новичок
Ты оказался прав )) Теперь понял. Все получилось. Видимо, когда я пробовал этот вариант, даже и не задумался о сути и где то сделал ошибку. Сейчас все работает.
Вот код:
PHP:
while( $row = mysql_fetch_array ($result)) {
$output.=substr($row['text'], 0, 100). "... <a href=\"?page=news&id=".$row['id']."\">Читать далее.</a><hr />";
}
Но в этом случае у меня происходит вот как:
тра ля ля, тра ля ля, тра ля ля.тра ля ля, т... <a href="?page=news&id=тра">Читать далее</a><hr />
бла бла бла... <a href="?page=news&id=бла">Читать далее</a><hr />
трям трям, т... <a href="?page=news&id=трям">Читать далее</a><hr />
Т.е. сначала выводится полностью вся первая строка, затем сразу же первые 100 символов этой же первой строки и только потом все как надо. Как решить эту проблему?
 

Фанат

oncle terrible
Команда форума
опять использовать тот код, который здесь написан
я с таким феноменом сталкиваюсь впервые.
 

krum

Новичок
Объясни.. Я не понял... Что не так?
Я думал, что ты говорил про этот код:
PHP:
while( $row = mysql_fetch_array ($result)) { 
$output.=$row['text'];
}
Говоря,
что этот код выводит все строки.
Это же ведь уже не массив, а слияние строк. Я правильно понимаю?
Проблема здесь в том, что первая строка не форматируется, а происходит
слияние целиком первой строки и потом уже всех последущих, начиная с первой,
но уже отформатированных.
 

Фанат

oncle terrible
Команда форума
я про твой последний код. который должен выводить обрезки, безо всякой целой строки.
 

Активист

Активист
Команда форума
krum
> слияние целиком первой строки и потом уже всех последущих,
> начиная с первой,
> но уже отформатированных.

Что курим?
Представь что ты на уроке (лекции) пишешь текст. Рисуешь одну букву, потом вторую, потом треть.

$text .= $string

тоже самое

> потом уже всех последущих, начиная с первой,
Или по твоему, пишешь ты так
1. Сначала на черновике пишешь весь текст
2. Потом уже начинаешь переписывать, да так, что сначала пишешь первый слог, потом пишешь первый и второй, потом первый второй третий и т.п.

Совет - иди учи основы
[ps]
Попробуй так
PHP:
$output = null;
while( $row = mysql_fetch_array ($result)) { 
$output.=$row['text'];
}
 

krum

Новичок
Я же не придумываю чего то )) Я сразу проверяю код в работе и пишу результаты. Именно первая строка целиком сливается с собой же, но уже обрезанной, а затем идет все как надо.
 

Фанат

oncle terrible
Команда форума
значит, ты ее сам, в своем коде добавляешь.
найди это место и убери
 

krum

Новичок
Вот так все получилось:
PHP:
$output = null;
while( $row = mysql_fetch_array ($result)) { 
$output.=$row['text'];
}
Всем спасибо.
А вот про совет идти и учить основы, мне кажется зря, т.к. ничего глупого в моих вопросах я не вижу - это первое, второе - ни одной строки кода в помощь я не увидел, приводил только свой код. Но все равно из всего выше сказанного спасибо за идеи "не использовать массив" и за последнюю поправку "$output = null;" . Это мне действительно помогло.
 

x-yuri

Новичок
ну вот, *****, человек теперь думает, что эту задачу с помощью массивов решить нельзя
 

krum

Новичок
С помощью массивов можно )) И это было первым решением. Но,как сказал *****, это не совсем правильно, с чем я полностью согласен. Не надо одевать трусы через голову.
 

x-yuri

Новичок
С помощью массивов можно )) И это было первым решением. Но,как сказал *****, это не совсем правильно, с чем я полностью согласен. Не надо одевать трусы через голову.
и чем же строки значительно лучше массивов?
может мне больше нравится сделать массив нужных мне строк, а потом уже объединить все в одну строку. А у тебя все в куче
 

Фанат

oncle terrible
Команда форума
ну я же писал.
тем, что ты получаешь сразу то что тебе нужно - строку.
зачем здесь массив?
 

x-yuri

Новичок
я не говорю, что массив лучше - это равноценные решения, просто вопрос вкуса. Кому-то важно сразу он получит строку или не сразу, а кто-то хочет все выполнять последовательно
 

Фанат

oncle terrible
Команда форума
нафига последовательно выполнять ЛИШНЮЮ операцию?
 

x-yuri

Новичок
нафига последовательно выполнять ЛИШНЮЮ операцию?
я не знаю, какой бы я вариант выбрал в данном случае, но от использования массива никому плохо не станет
Вариант с массивом может быть субъективно читабельнее, в то время как вариант без него - субъективно правильнее
 
Сверху