SearchEngines.bg

Това е примерно съобщение за гост. Регистрирайте безплатен акаунт днес, за да станете потребител на SearchEngines.bg! След като влезете, ще можете да участвате в този сайт, като добавите свои собствени теми и публикации, както и да се свържете с други членове чрез вашата лична входяща кутия! Благодарим ви!

Текст между резултати изкарани от БД

vkusno

New member
Имам думи в БД подредени по азбучен ред и искам когато ги изкарвам да излизат така

А

думите започващи с А

Б

думите започващи с Б

някак трябва да правя проверка ако думите започват с А след края им да слага това
<br />
Б
<br />
след него да изкарва буквите започващи с Б и т.н.
как да ги направя пробвах с

if ($name == "А"):
echo "<br /><br />
<b>Б</b>
<br /><br />";
elseif ($name == "Б"):
echo "<br /><br />
<b>В</b>
<br /><br />";

endif;

но си прави каквото си иска :)
 
Re: Текст между резултати изкарани от БД

Код:
$query = 'SELECT * FROM `whatever`'; //or what ever
$res = mysql_query($query);
$LastFirstLetter = '';
while($row = mysql_fetch_object($res))
{
	$word = $row->word;
	$CurFirstLetter = $word{0}; //взема първата буква
	if($LastFistrLetter != $CurFirstLetter)
	{
		//ако новата буква е различна от последната 
		$LastFirstLetter = $CurFirstLetter;
		echo '<br/><br/><b>'.$CurFirstLetter.'</b><br/><br/>';
	}
	echo $word . '<br/>';
}

Нещо такова?
 
Re: Текст между резултати изкарани от БД

Мне не става това, ето до какво стигнах и резултата е че си ги подрежа както си иска.

PHP:
$query = " SELECT * FROM `abc` ORDER BY `abc`.`name` ASC";
$result = mysql_query($query) or die('Error, query failed');
$row = mysql_numrows($result);

while($row = mysql_fetch_array($result))
{
$name=$row[name];
$links=$row[links];

echo "<a href=\"site.php?word=$links\">$name</a>, ";

	
if ($name == "A"):
echo "<br /><br />
<b>Б</b>
<br /><br />";
elseif ($name == "Б"): 
echo "<br /><br />
<b>В</b>
<br /><br />";
elseif ($name == "В")):
echo "<br /><br />
<b>Г</b>
<br /><br />";
elseif ($name == "Г")):
echo "<br /><br />
<b>Д</b>
<br /><br />";
endif;
}
 
Re: Текст между резултати изкарани от БД

Има няколко варианта да се направи.
Първия, който ми дойде на акъля :D е този в кода по-долу.
Забележи, че енкодинга е cp1251, понеже с utf8 не знам работеща функция на strtoupper( и кирилица).
Та е тоя код долу ти вади първата буква(като я прави голяма), след нея всички записи, които ГИ ИМА с тая буква като първа.
Пробвах го с моя база и е ОК.

Черпиш? :D
PHP:
<?
mysql_pconnect("localhost","user","pass") or die("CAN NOT CONNECT");
mysql_query("SET NAMES 'cp1251'");
mysql_select_db("db_name")  or die("Cannot SELECT db");

$query = mysql_query("SELECT * FROM `table` order by `name`");
$letter = "";
while ($res = mysql_fetch_array($query)) {
	if ($letter != strtoupper(substr($res['name'], 0, 1))) {
		$letter = strtoupper(substr($res['name'], 0, 1));
		echo '<strong>'.$letter."</strong><br />";
	}
	echo $res['name']."<br />";
}
?>

Едит:
Всъщност, варианта е като на колегата по-горе, само не знам защо не ти работи с неговата версия...
 
Последно редактирано:
Re: Текст между резултати изкарани от БД

Е златен си, мерси много. Цял ден се чудя как да стане и се пробвам с разни if-ве и не и не. Горния код не знам и аз защо не проработи по правилния начин но твоя стана перфектно, ще трябва да науча някои функции та да не се чудя цял ден как да стане. :) Мерси отново.
 

Горе