Таблиране

m3

Registered
Използвам този скрипт, който търси в db.inc и извежда резултатите.
Та въпроса ми е как да го направя да ми искарва резултатите в таблица като DATA.BG

Код:
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251"> 
</head> 
<body bgcolor=white> 
<b> 
<FORM ACTION="search.php" METHOD=POST> 
<INPUT TYPE="text" NAME="search" value="" size="15" maxlength="15"><br> 
<INPUT TYPE=submit value=Search > 
</FORM> 
<?php 

 
$search=$HTTP_POST_VARS['search']; 


$search=str_replace(" ","",$search); 
if ($search=='') 
{exit;} 
$file= file("db.inc"); 
$n=count($file); 
echo '<a>
'; 
//с for обхождаме редовете 
for ($i=0; $i<$n;$i++) 
{ 

$file1=$file[$i]; 
$file1=str_replace(" ","",$file1); 
$file1=str_replace("&","",$file1); 
$file1=str_replace("\n","",$file1); 

if (eregi($search,$file1)) 
{ 
$line = explode ("&",$file[$i] ); 
echo ' 
<p> 
<tr> 
<td>'.$line[0].'</td><td>'.$line[1].'</td><td>'.$line[2].'</td><td>'.$line[3].'</td> 
<td>'.$line[4].'</td><td>'.$line[5].'</td> 
</tr>'; 
} 
} 

?> 
</table> 
<p> 


</body>
 
за редуване на цветове или просто да е във виждаща се таблица?
ако е второто ето отговора:

Код:
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
</head>
<body bgcolor=white>
<b>

<FORM ACTION="search.php" METHOD=POST>
<INPUT TYPE="text" NAME="search" value="" size="15" maxlength="15"><br>
<INPUT TYPE=submit value=Search >
</FORM>
<table border=1>
<?php

 
$search=$HTTP_POST_VARS['search'];


$search=str_replace(" ","",$search);
if ($search=='')
{exit;}
$file= file("db.inc");
$n=count($file);
echo '<a>
';
//с for обхождаме редовете
for ($i=0; $i<$n;$i++)
{

$file1=$file[$i];
$file1=str_replace(" ","",$file1);
$file1=str_replace("&","",$file1);
$file1=str_replace("\n","",$file1);

if (eregi($search,$file1))
{
$line = explode ("&",$file[$i] );
echo '
<p>
<tr>
<td>'.$line[0].'</td><td>'.$line[1].'</td><td>'.$line[2].'</td><td>'.$line[3].'</td>
<td>'.$line[4].'</td><td>'.$line[5].'</td>
</tr>';
}
}

?>
</table>
<p>


</body>

а ако е с цветове.. сега ще пробвам да го направя
 
Мерси много ама със редуване на цветовете би изглеждало по добре.
 
Здравей!

Ето код, който би трябвало да изписва редовете в различен цвят. Малко мешено стана, защото бързам да излизам, а и пишех на парче (още снощи тръгнах да го пиша, но нета ми се скапа), може и да се опрости. Вкарал съм някакви обяснения вътре в кода - махни ги когато го пробваш и огледай за изпуснати знаци.

<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">

<style type="text/css">

.red {color: #800000}
.osnoven {color: #e4e4e4}

</style>


</head>
<body bgcolor=white>
<b>

<FORM ACTION="search.php" METHOD=POST>
<INPUT TYPE="text" NAME="search" value="" size="15" maxlength="15"><br>
<INPUT TYPE=submit value=Search >
</FORM>
<table border=1>
<?php


$search=$HTTP_POST_VARS['search'];


$search=str_replace(" ","",$search);
if ($search=='')
{exit;}
$file= file("db.inc");
$n=count($file);
echo '<a>';

\\две нови променливи: едната компенсира стартовата стойност на променливата от фор-цикъла зарди това, че е 0 - заради масива, нея увеличаваме както $i, другата е с постоянна величина - 2
$flag=3;
$delitel=2;


//с for обхождаме редовете
for ($i=0; $i<$n;$i++)
{

$file1=$file[$i];
$file1=str_replace(" ","",$file1);
$file1=str_replace("&","",$file1);
$file1=str_replace("\n","",$file1);

if (eregi($search,$file1))
{
$line = explode ("&",$file[$i] );

\\ модулно делене - връща остатъка, ако се делят напълно, остатък няма, стойност 0 - в нашия случай всички четни ще дават нула
$red=$flag%$delitel;

if ($red == 0) \\второ подусловие - проверяваме дали е четнен ред
{
$list= '<p> \\ако е - резултата ще е в червен ред
<tr>
<td CLASS=\"red\">'.$line[0].'</td><td CLASS=\"red\">'.$line[1].'</td><td CLASS=\"red\">'.$line[2].'</td><td CLASS=\"red\">'.$line[3].'</td>
<td CLASS=\"red\">'.$line[4].'</td><td CLASS=\"red\">'.$line[5].'</td>
</tr>';
}
else
{

$list= '<p> \\в противен случай - основния цвят
<tr>
<td CLASS=\"ocnoven\">'.$line[0].'</td><td CLASS=\"ocnoven\">'.$line[1].'</td><td CLASS=\"osnoven\">'.$line[2].'</td><td CLASS=\"osnoven\">'.$line[3].'</td>
<td CLASS=\"osnoven\">'.$line[4].'</td><td CLASS=\"osnoven\">'.$line[5].'</td>
</tr>';
}
}

echo "$list;" \\изписваме стойността на променливата в зависимост от това, какво и е зададено в подцикъла

$flag++; \\увеличаваме с 1, така че да върви паралелно със $и
}

?>
</table>
<p>
</body>


Твоя ХТМЛ е малко като моя - мешена скара, вкарал съм два класа от css за цветовете, ти си ги оправи...
По-късно тази вечер ще ти пусна по-опростен код, че сега е доста натоварен...Ако кажеш как точно си определяш цветовете, ще ме улесниш в преработката.

За модулното делене, което решава проблема, може да видиш тук:

http://www4u.search.bg/index2.php?ph&c=1&PHPSESSID=e4c1039e9c2b998695ba801ef64612f8

Дано работи, ако не - принципа е този и грешката ще е в записа, а не в алгоритъма...

Успех!
 
@sizif това:

$red=$flag%$delitel;

if ($red == 0) \\второ подусловие - проверяваме дали е четнен ред
{
$list= '<p> \\ако е - резултата ще е в червен ред
<tr>
<td CLASS=\"red\">'.$line[0].'</td><td CLASS=\"red\">'.$line[1].'</td><td CLASS=\"red\">'.$line[2].'</td><td CLASS=\"red\">'.$line[3].'</td>
<td CLASS=\"red\">'.$line[4].'</td><td CLASS=\"red\">'.$line[5].'</td>
</tr>';
}
else
{
$list= '<p> \\в противен случай - основния цвят
<tr>
<td CLASS=\"ocnoven\">'.$line[0].'</td><td CLASS=\"ocnoven\">'.$line[1].'</td><td CLASS=\"osnoven\">'.$line[2].'</td><td CLASS=\"osnoven\">'.$line[3].'</td>
<td CLASS=\"osnoven\">'.$line[4].'</td><td CLASS=\"osnoven\">'.$line[5].'</td>
</tr>';
}


можеш да го замениш с това:
$color = ($flag % $delitel == 0)? '#800000' : '#e4e4e4';
$list= '<p>
<tr>
<td style="background-color: '.$color.'">'.$line[0].'</td><td CLASS=\"red\">'.$line[1].'</td><td CLASS=\"red\">'.$line[2].'</td><td CLASS=\"red\">'.$line[3].'</td>
<td style="background-color: '.$color.'">'.$line[4].'</td><td CLASS=\"red\">'.$line[5].'</td>
</tr>';


пп
$color =? '#800000' : '#e4e4e4'; това работи като
if ($flag % $delitel == 0) $color = '#800000'; else $color = '#800000';

пп2
не съм преглеждал целия код, ама тоя таг за параграф там ли трябва да е? - $list= '<p>....
 
Здравей, Slavei! :)

За тромавия код:

По-късно тази вечер ще ти пусна по-опростен код, че сега е доста натоварен...Ако кажеш как точно си определяш цветовете, ще ме улесниш в преработката.

А това <Р> в началото на реда идва от незнам къде... просто взех кода на предишния потребител и го допълних :wink:

Иначе решението:

$color =? '#800000' : '#e4e4e4';

е интересно. Признавам, че не ми беше хрумнало :)

Също променливата $delitel е ненужна - стойността и е стабилна, може да се замени само с 2 при проверката :)
 
Аз го направих по друг начин

Код:
<table width="606" border="0" cellspacing="0" cellpadding="0" align='center' background="http://site.com/kartinka.bmp" hoight=19>

За картинка сложих една лента с 2 цвята един под друг се получи.
berbk8.png


Сега остава другия проблем
http://web-tourist.net/forum/viewtopic.php?t=3967
 
m3 каза:
Аз го направих по друг начин

Код:
<table width="606" border="0" cellspacing="0" cellpadding="0" align='center' background="http://site.com/kartinka.bmp" hoight=19>

За картинка сложих една лента с 2 цвята един под друг се получи.
berbk8.png


Сега остава другия проблем
http://web-tourist.net/forum/viewtopic.php?t=3967

@m3 забрави това решение с картинката. Я помисли какво ще стане ако съдържанието на някоя клетка мине на два реда ;) Ще стане мазало.
Пък и е доста грубо решение, при положение, че можеш да ползваш php
имаш печатна грешка: hоight=19 ;)

@sizif ами да за делителя си прав. Аз снощи въобще не можах да ти разбера кода. Боляха ме очите от мъглата и едва фокусирах... бях решил днес да го гледам и да се чудя защо са тия делители и от къде идат. :) мислех, че е някакъв частен случай и си приложил някакво интелигетно решение ;)
 
Направих го с картинк щото по другия начин се появява много гаден бордер.При опер и мозила бордера става черен и дебел а аз не го искам такъв
А как ще стани при онмаусовър да се променя цвета?
 
m3 каза:
Направих го с картинк щото по другия начин се появява много гаден бордер.При опер и мозила бордера става черен и дебел а аз не го искам такъв
дай линк да видя тоя бордер.
m3 каза:
А как ще стани при онмаусовър да се променя цвета?


<tr onMouseOver="this.className='class1'" onMouseOut="this.className='class2'">
 
Здравейте!

Slavei,

@sizif ами да за делителя си прав. Аз снощи въобще не можах да ти разбера кода. Боляха ме очите от мъглата и едва фокусирах... бях решил днес да го гледам и да се чудя защо са тия делители и от къде идат. мислех, че е някакъв частен случай и си приложил някакво интелигетно решение

Абе "частен случай" е, никога не ми е хрумвало да редувам цветовете на реда през ред, но идеята с модулното делене ми остана от предишните напъни да чертая редове и колони за таблицата, в която щях да листвам снимките от вече "прословутата" галерия, дето още е наникъде... Тогава ми помогнахте с <див>-а и престанах с изнасилените експерименти, а това решение го писах "на сухо"...

Ако m3 го е пробвал, ще ми е интересно да видя резултата...

ПП: Снощи ми хрумна, че и променливата $flag=3; е ненужна - наистина първата стойност на $i е 0, но пък на следващия елемент е 1, което при делене на 2 не оставя цяло число (т.е. резултата ще е =/=0), така че пак ще се получи последователно редуване...

т.е. $flag може да се махне, а мястото й да се заеме от $i, $delitel=2; е куха променлива, значи (следвам твоя запис) ще стане:

$color = ($i %2 == 0)? '#800000' : '#e4e4e4';

Толкова по този код, че пак съм зависнал в проблем с колацията на БД :)

Успех в проекта ти, m3!
 

Горе