Proste, a jednak trudne. Wynik bazy w dynamicznej tabeli.

Języki, których efekty są wykonywane po stronie serwera. PHP, ASP czy CGI w połączeniu z bazami danych SQL dają niezwykłe możliwości budowy i zarządzania stron WWW. Tu zadajemy pytania oraz demonstrujemy kod, z którym mamy problem.
joka2
Nowy
Nowy
Posty: 62
Rejestracja: śr lis 15, 2006 5:02 pm
Kontakt:

Proste, a jednak trudne. Wynik bazy w dynamicznej tabeli.

Post autor: joka2 »

Witam,

posiadam bazę danych mysql, w której znajduje się 8 rekordów,

Wyświetlenie danych z bazy za pomoca php wygląda tak:

Kod: Zaznacz cały

require('config.php');
$wynik=mysql_query("SELECT dane FROM baza ORDER BY dane ASC");
while ($wiersz = mysql_fetch_assoc($wynik)){
echo $wiersz["dane"];
echo '<br>';
}
mysql_free_result($wynik);
Niestety, ale wynik powyższego zapytania nie satysfakcjonuje mnie.
Mnie nurtuje dynamiczne wyświetlenie danych...

|1 dana | 2 dana | 3 dana | 4 dana|
|5 dana | 6 dana | 7 dana | 8 dana|

to znaczy, że będę mógł wpływać na ilość kolumn, a dane by się dopisywały.

|1 dana | 2 dana|
|3 dana | 4 dana|
|4 dana | 6 dana|
|5 dana | 8 dana|

Sądzicie, że da się cos takiego zrobić?
joka2
Nowy
Nowy
Posty: 62
Rejestracja: śr lis 15, 2006 5:02 pm
Kontakt:

Re: Proste, a jednak trudne. Wynik bazy w dynamicznej tabeli.

Post autor: joka2 »

Próbowałem coś sklecić z pętlami:

Kod: Zaznacz cały

echo '<table border="1">';
for ($a=1; $a<=2; $a++)
     {
     echo '<tr>';
     for ($b=1; $b<=4; $b++)
          {
          echo '<td>dana</td>';
          }
     echo '</tr>';
}
echo '</table>';
Niestety, bez powodzenia.
szczypior
Nowy
Nowy
Posty: 46
Rejestracja: pn lut 26, 2007 1:38 pm
Kontakt:

Re: Proste, a jednak trudne. Wynik bazy w dynamicznej tabeli.

Post autor: szczypior »

Pisane na szybko, w zmiennej $kolumny ustawiasz ilość kolumn jaką ma mieć tabela:

Kod: Zaznacz cały

$kolumny = 2;
$pozycja = 1;

echo '<table border="1">';
while ($wiersz = mysql_fetch_assoc($wynik))
{
if ($pozycja == 1)
{
echo '<tr>';
}
echo '<td>'.$wiersz['dane'].'</td>';
if ($pozycja == $kolumny)
{
echo '</tr>';
$pozycja = 0;
}
$pozycja++;
}
echo '</table>';
joka2
Nowy
Nowy
Posty: 62
Rejestracja: śr lis 15, 2006 5:02 pm
Kontakt:

Re: Proste, a jednak trudne. Wynik bazy w dynamicznej tabeli.

Post autor: joka2 »

Dziękuję @szczypior.

Jednak... okazało się to bardzo proste rozwiązanie mojego problemu.

Pozdrawiam.
joka2
Nowy
Nowy
Posty: 62
Rejestracja: śr lis 15, 2006 5:02 pm
Kontakt:

Re: Proste, a jednak trudne. Wynik bazy w dynamicznej tabeli.

Post autor: joka2 »

Działa wspaniale @szczypior, ale czy istniej możliwość dodania do każdej wyświetlonej danej ilości, jakie się znajdują w bazie i są powiązane z tą daną?

Wyświetlana baza wygląda tak:

|1 dana | 2 dana | 3 dana | 4 dana|
|5 dana | 6 dana | 7 dana | 8 dana|

Chciałbym jednak dodać licznik danych:

|1 dana (2) | 2 dana (5) | 3 dana (2) | 4 dana (1)|
|5 dana (1) | 6 dana (9) | 7 dana (4) | 8 dana (0)|

Liczby w nawiasie, to liczba danych znajdujących się w bazie i nazywających się "1 dana, 2 dana, 3 dana..."

Kod

Kod: Zaznacz cały

$kolumny = 2;
$pozycja = 1;

echo '<table border="1">';
while ($wiersz = mysql_fetch_assoc($wynik))
{
if ($pozycja == 1)
{
echo '<tr>';
}
echo '<td>'.$wiersz['dane'].'</td>';
if ($pozycja == $kolumny)
{
echo '</tr>';
$pozycja = 0;
}
$pozycja++;
}
echo '</table>';
próbowałem zmodyfikować we fragmencie:

Kod: Zaznacz cały

echo '<td>'.$wiersz['dane'].'</td>';
dodając zapytanie do bazy:

Kod: Zaznacz cały

SELECT COUNT(*) FROM nazwa_tabeli WHERE imie=Kasia;
Zamieniając imię Kasia na zmienną $wiersz['imie']

Reasumując,
chciałbym, aby obok wyświetlanej nazwie, np.: Kasia, znalazła się liczba tych nieszczęsnych Kasi w tabeli: nazwa_tabeli.

Pomożecie?
joka2
Nowy
Nowy
Posty: 62
Rejestracja: śr lis 15, 2006 5:02 pm
Kontakt:

Re: Proste, a jednak trudne. Wynik bazy w dynamicznej tabeli.

Post autor: joka2 »

Dało radę!

Kod: Zaznacz cały

$kolumny = 2;
$pozycja = 1;

echo '<table border="1">';
while ($wiersz = mysql_fetch_assoc($wynik))
{
if ($pozycja == 1)
{
echo '<tr>';
}
echo '<td>'.$wiersz['dane'].'

'tu JEST liczba wyswietlanych rekordow w bazie'

</td>';
if ($pozycja == $kolumny)
{
echo '</tr>';
$pozycja = 0;
}
$pozycja++;
}
echo '</table>';
Wystarczyło poprawnie zadać pytanie do bazy i ubrać to w php:

Kod: Zaznacz cały

$zmienna_testowa = $wiersz['kat'];//przypisanie do zmiennej wiersz nazwy kategowii
$query = "SELECT COUNT(tabela1.id_kat) AS num from tabela1 JOIN tabela2 WHERE tabela2.kat='$zmienna_testowa' AND tabela1.id_kat=tabela2.id_k AND tabela1.akt='1'";
$result = mysql_db_query("nazwa_bazy",$query);
$mycount = mysql_result($result,0,"num");
echo ' ('.$mycount.')';
Legenda:
kat - rekord z tabeli kategoria "nazwa kategorii",
id_kat - id powyższej kategorii,
akt - czy wpis jest aktywny, tzn. czy posiada cyferkę "1".

Dzięki temu ślicznie zliczają się rekordy z danej kategorii. Gotowiec: http://4oo.pl.
ODPOWIEDZ