=?ISO-8859-2?Q?P=EAtla_po_raz_drugi?=
smok - 27-03-2006 00:07
=?ISO-8859-2?Q?P=EAtla_po_raz_drugi?=
Witam. Zadałem to pytanie kilka dni temu, ale nie otrzymałem żadnej odpowiedzi, postaram się więc uprościć i poprawić moje pytanie. Chciałbym wyświetlić dane z bazy MySQL na stronie. Proste? Oczywiście. Ale jak zrobić żeby dane wyświetlone były na stronie w 3 kolumnach (w tabeli)? Próbowałem coś zmajstrować: <table> <tr> <?php $connection = mysql_connect("localhost","flower","flower"); $db = mysql_select_db("flower", $connection); $sql = "SELECT oferta FROM ofer WHERE day_ofer = '1'"; $sql_result = mysql_query($sql,$connection); while ($row = mysql_fetch_array($sql_result)) { for ($i=0; $i=($i+3); $i++) { print "<td>".$row['oferta'];.</td> } </tr><tr> }
ale to się zapętla, wyświetla we wszystkich miejscach ten sam rekord i na dodatek w jednej kolumnie. Jak zrobić żeby wyświetliło mi taką tabelę: ------------------------------- | rekord1 | rekord2 | rekord3 | ------------------------------- | rekord4 | rekord5 | rekord6 | ------------------------------- | rekord7 | rekord8 | rekord9 | ------------------------------- i tak aż zabraknie rekordów zgodnych z zapytaniem? Dzięki Smok.
-- Slack'it! SMOK of the M.I.B's ping, ping, jest tam kto? Linux - a way of life [gg - 1919241]
Rafos - 27-03-2006 00:07
Użytkownik "smok" <mibs_spamcop_@op.pl> napisał w wiadomości news:e06n41$om2$1@inews.gazeta.pl... > Witam. > Zadałem to pytanie kilka dni temu, ale nie otrzymałem żadnej odpowiedzi, > postaram się więc uprościć i poprawić moje pytanie. Chciałbym wyświetlić > dane z bazy MySQL na stronie. Proste? Oczywiście. Ale jak zrobić żeby > dane wyświetlone były na stronie w 3 kolumnach (w tabeli)? Próbowałem > coś zmajstrować: > <table> > <tr> > <?php > $connection = mysql_connect("localhost","flower","flower"); > $db = mysql_select_db("flower", $connection); > $sql = "SELECT oferta FROM ofer WHERE day_ofer = '1'"; > $sql_result = mysql_query($sql,$connection); > while ($row = mysql_fetch_array($sql_result)) { > for ($i=0; $i=($i+3); $i++) { > print "<td>".$row['oferta'];.</td> > } > </tr><tr> > } > w while wyciagasz po 1 krotce, wiec gdy $i mod 3 == 0 dajesz <tr> czyli nowa linie i po sprawie. w przeciwnym wypadku tylko td. (to przyklad dla $i zaczynajac od 1, w petli masz od 0) oczywiscie na koncu jesli ilsoc danych nie bedzie wielokrotnoscia 3 musisz to obsluzyc, ale to pryszcz
> ale to się zapętla, wyświetla we wszystkich miejscach ten sam rekord i > na dodatek w jednej kolumnie. Jak zrobić żeby wyświetliło mi taką tabelę: > ------------------------------- > | rekord1 | rekord2 | rekord3 | > ------------------------------- > | rekord4 | rekord5 | rekord6 | > ------------------------------- > | rekord7 | rekord8 | rekord9 | > ------------------------------- > i tak aż zabraknie rekordów zgodnych z zapytaniem? > Dzięki > Smok. > > -- > Slack'it! > SMOK of the M.I.B's ping, ping, jest tam kto? > Linux - a way of life > [gg - 1919241]
Rafos - 27-03-2006 00:07
moze zle sie wyrazilem. jesli w kazdej iteracji while wyciagasz 1 krotke to robisz tak :
$ret = ''; $i = 1; // nr kolumny while ($row = mysql_fetch_array($sql_result)) { if(1 == $i mod 3) { // 1-sza kolumna, musimy ja rozpoczac $ret .= '<tr>'; } $ret .= '<td>'.$row['oferta'].'</td>'; if(0 == $i mod 3) { // ostatnia kolumna, musimy ja zakonczyc $ret .= '</tr>'; } $i++; }
echo $ret;
oczywiscie nie musisz robic tak wielkiej konkatenacji i wypluwac po kazdej iteracji.
Alianora - 27-03-2006 00:08
smok napisał(a): A tabelki napewno potrzebne?
> <?php > $connection = mysql_connect("localhost","flower","flower"); > $db = mysql_select_db("flower", $connection); > $sql = "SELECT oferta FROM ofer WHERE day_ofer = '1'"; > $sql_result = mysql_query($sql,$connection); > while ($row = mysql_fetch_array($sql_result)) { > print '<div style="float: left; width: 33%">'.$row['oferta'];.</div> > }
smok - 28-03-2006 00:01
Alianora napisał(a): > A tabelki napewno potrzebne?
Na pewno to niekoniecznie, ale wydało mi się to akurat najprostszym i w miarę ładnie wyglądającym wyjściem.
-- Slack'it! SMOK of the M.I.B's ping, ping, jest tam kto? Linux - a way of life [gg - 1919241]
smok - 28-03-2006 00:01
Rafos napisał(a): > moze zle sie wyrazilem. > jesli w kazdej iteracji while wyciagasz 1 krotke to robisz tak : > > $ret = ''; > $i = 1; // nr kolumny > while ($row = mysql_fetch_array($sql_result)) { > if(1 == $i mod 3) { // 1-sza kolumna, musimy ja rozpoczac > $ret .= '<tr>'; > } > $ret .= '<td>'.$row['oferta'].'</td>'; > if(0 == $i mod 3) { // ostatnia kolumna, musimy ja zakonczyc > $ret .= '</tr>'; > } > $i++; > } > > echo $ret; > > oczywiscie nie musisz robic tak wielkiej konkatenacji i wypluwac po kazdej > iteracji.
Próbuję rozkminić to co napisałeś - na pozór łatwe, ale nie wiem co to jest ten "mod"? Czy chodzi tu o dzielenie modulo? Na dodatek po uruchomieniu wykrzacza mi z związku z nim "unexpected T_STRING" (po usunięciu mod 3 nie krzaczy, ale oczywiście nie działa jak trzeba, wyświetla 1 rekord). -- Slack'it! SMOK of the M.I.B's ping, ping, jest tam kto? Linux - a way of life [gg - 1919241]
orcus - 28-03-2006 00:01
Mon, 27 Mar 2006 20:18:46 +0200, smok wrote:
> Próbuję rozkminić to co napisałeś - na pozór łatwe, ale nie wiem co to > jest ten "mod"? Czy chodzi tu o dzielenie modulo? Na dodatek po > uruchomieniu wykrzacza mi z związku z nim "unexpected T_STRING" (po > usunięciu mod 3 nie krzaczy, ale oczywiście nie działa jak trzeba, > wyświetla 1 rekord).
http://pl.php.net/manual/pl/language...arithmetic.php wstaw zamiast mod odpowedni znak i powino smigac
-- Pozdrawiam orcus
..: Jest 10 rodzajow ludzi: Ci ktorzy rozumieja zapis binarny i pozostali :.
Rafos - 28-03-2006 00:02
Użytkownik "orcus" <orcus@ekoterm.N05P4M.net> napisał w wiadomości news:pan.2006.03.27.18.43.46.261947@ekoterm.N05P4M .net... > Mon, 27 Mar 2006 20:18:46 +0200, smok wrote: > >> Próbuję rozkminić to co napisałeś - na pozór łatwe, ale nie wiem co to >> jest ten "mod"? Czy chodzi tu o dzielenie modulo? Na dodatek po >> uruchomieniu wykrzacza mi z związku z nim "unexpected T_STRING" (po >> usunięciu mod 3 nie krzaczy, ale oczywiście nie działa jak trzeba, >> wyświetla 1 rekord). > > http://pl.php.net/manual/pl/language...arithmetic.php > wstaw zamiast mod odpowedni znak i powino smigac
racja, tak to jest jak sie pisze kod z palca na kolanie... i jak sie na zmiane czyta kody i wyklady z matmy na studiach :D
> -- > Pozdrawiam > orcus > > .: Jest 10 rodzajow ludzi: Ci ktorzy rozumieja zapis binarny i pozostali > :. >
smok - 28-03-2006 00:02
Rafos napisał(a): > racja, tak to jest jak sie pisze kod z palca na kolanie... > i jak sie na zmiane czyta kody i wyklady z matmy na studiach :D No - i prawie się udało - ale tylko prawie. Przerobiłem skrypt żeby robił dokładnie to co ja chcę, ale wyświetla tylko 3 rekordy i do tego w pionie :D A wygląda teraz tak: <table> <TR> <?php $connection = mysql_connect("localhost","user","pass"); $db = mysql_select_db("base", $connection); $sql = "SELECT * FROM ofer WHERE show_ofer = '1'"; $sql_result = mysql_query($sql,$connection); $ret = ''; $i = 1; // nr kolumny while ($row = mysql_fetch_array($sql_result)) { if (1 == $i%3) { // 1-sza kolumna, musimy ja rozpoczac $ret = '<tr>'; } $ret = ('<table class="item"><tr class="item_top"><td>'.$row['ofer_name'].'</td></tr> <tr class="item_middle"><td>'.$row['ofer_pic'].'</td></tr><tr class="item_bottom"><td>'.$row['ofer_price'].'</td></tr></table>'); if(0 == $i%3) { // ostatnia kolumna, musimy ja zakonczyc $ret = '</tr>'; } $i++; echo $ret; } Gdzie go schrzaniłem ?? Straszne dzięki za pomoc. Smok. -- Slack'it! SMOK of the M.I.B's ping, ping, jest tam kto? Linux - a way of life [gg - 1919241]
Rafos - 28-03-2006 00:02
Użytkownik "smok" <mibs_spamcop_@op.pl> napisał w wiadomości news:e09f12$393$1@inews.gazeta.pl... > Rafos napisał(a): >> racja, tak to jest jak sie pisze kod z palca na kolanie... >> i jak sie na zmiane czyta kody i wyklady z matmy na studiach :D > No - i prawie się udało - ale tylko prawie. Przerobiłem skrypt żeby > robił dokładnie to co ja chcę, ale wyświetla tylko 3 rekordy i do tego w > pionie :D A wygląda teraz tak: > <table> > <TR> <tr> raczej piszemy tagi z malej - XHTML
> <?php > $connection = mysql_connect("localhost","user","pass"); > $db = mysql_select_db("base", $connection); > $sql = "SELECT * FROM ofer WHERE show_ofer = '1'"; > $sql_result = mysql_query($sql,$connection); > $ret = ''; > $i = 1; // nr kolumny > while ($row = mysql_fetch_array($sql_result)) { > if (1 == $i%3) { // 1-sza kolumna, musimy ja rozpoczac > $ret .= '<tr>'; musi byc z kropka; sklejamy stringi
> }
ponizej dodalem <td>
> $ret .= ('<td><table class="item"><tr tutaj tez kropka
> class="item_top"><td>'.$row['ofer_name'].'</td></tr> > <tr class="item_middle"><td>'.$row['ofer_pic'].'</td></tr><tr > class="item_bottom"><td>'.$row['ofer_price'].'</td></tr></table></td>');
powyzej na koncu tez zakonczenie </td>
(nie chce sie czepiac ale za duzo tych tebelek tu... sam sie jzu gubie :) )
> if(0 == $i%3) { // ostatnia kolumna, musimy ja zakonczyc > $ret .= '</tr>'; i tu
> } > $i++; > }
echo $ret;
skoro na poczatku otworzylismy tabelke to teraz ja zamknijmy ?> </tr></table> <?
> Gdzie go schrzaniłem ?? > Straszne dzięki za pomoc.
> Smok. > -- > Slack'it! > SMOK of the M.I.B's ping, ping, jest tam kto? > Linux - a way of life > [gg - 1919241]
Pawel - 28-03-2006 00:02
A moze cos takiego ? Powinno dzialac ...
<?php $connect_dbase=mssql_connect('localhost' , 'user' , 'pass'); mssql_select_db('[database]', $connect_dbase); $zapytanie="select .................."; $wynik=mssql_query($zapytanie); print "<table>"; $i=3; print "<tr><td>kolumna1</td><td>kolumna2</td><td>kolumna3</td></tr>"; while ($row=mssql_fetch_array($wynik)) { if ($i%3==0) { print "<tr>"; } $komorka=$row['nazwa']; print "<td>$komorka</td>"; if ($i%3==2) { print "</tr>"; } $i++; } print "</table>"; ?>
Moge sie mylic , jestem poczatkujacy ;-)
Pawel
Rafos - 28-03-2006 00:02
algorytmicznie o to wlasnie chodzi.... ale jako purysta moglbym sie poczepiac troszke :)
Użytkownik "Pawel" <pablodzi@USUN_TO_Z_ADRESU.poczta.onet.pl> napisał w wiadomości news:e09hkn$slb$1@atlantis.news.tpi.pl... >A moze cos takiego ? > Powinno dzialac ... > > <?php > $connect_dbase=mssql_connect('localhost' , 'user' , 'pass'); > mssql_select_db('[database]', $connect_dbase); > $zapytanie="select .................."; > $wynik=mssql_query($zapytanie); > print "<table>"; lepiej chyba uzywac pojedynczych uszek - sa szybsze, nie przetwarza sie w nich zmiennych
> $i=3; > print "<tr><td>kolumna1</td><td>kolumna2</td><td>kolumna3</td></tr>"; > while ($row=mssql_fetch_array($wynik)) > { > if ($i%3==0) warto stosowac konwencje "L-VALUE"m czyli zapisujemy powyzsza linijke jako if (0 == $i%3) dlaczego?? jesli pomylisz sie i dasz = to kompilator zwroci blad; gdybys pomylil sie w swojej wersji to zawsze bylby falsz...
> { > print "<tr>"; > } > $komorka=$row['nazwa']; > print "<td>$komorka</td>"; chyba lepiej print '<td>'.$komorka.'</td>'; a niektorzy preferuja nawet ?><td><?=$komorka?></td><? (to przyklad rownowazny powyzszemu, oczywiscie kiedy decydujemy sie na taki zapis, to "piszemy w htmlu " a dorzucamy jedynei "wstawki" w php - to taki krok ku szablonom, oddzieleniu logiki od prezentacji oraz pracy webmastera od pracy programisty (skryptowca)
> if ($i%3==2) > { > print "</tr>"; > } > $i++; > } > print "</table>"; > ?> > > Moge sie mylic , jestem poczatkujacy ;-) > > Pawel
Pozdrawiam > >
smok - 29-03-2006 00:24
Rafos napisał(a): > Użytkownik "smok" <mibs_spamcop_@op.pl> napisał w wiadomości > news:e09f12$393$1@inews.gazeta.pl... >> Rafos napisał(a): >>> racja, tak to jest jak sie pisze kod z palca na kolanie... >>> i jak sie na zmiane czyta kody i wyklady z matmy na studiach :D >> No - i prawie się udało - ale tylko prawie. Przerobiłem skrypt żeby >> robił dokładnie to co ja chcę, ale wyświetla tylko 3 rekordy i do tego w >> pionie :D A wygląda teraz tak: >> <table> >> <TR> > <tr> raczej piszemy tagi z malej - XHTML
Tiaaaa... Quanta czasami mi takie psikusy robi :) > >> <?php >> $connection = mysql_connect("localhost","user","pass"); >> $db = mysql_select_db("base", $connection); >> $sql = "SELECT * FROM ofer WHERE show_ofer = '1'"; >> $sql_result = mysql_query($sql,$connection); >> $ret = ''; >> $i = 1; // nr kolumny >> while ($row = mysql_fetch_array($sql_result)) { >> if (1 == $i%3) { // 1-sza kolumna, musimy ja rozpoczac >> $ret .= '<tr>'; > musi byc z kropka; sklejamy stringi > >> }
Racja. Zapomniałem o tym że musi być deklaracja komórki.
> (nie chce sie czepiac ale za duzo tych tebelek tu... sam sie jzu gubie :) )
Masz rację. Mnie to też wkurza, ale jakoś nie mogę zupełnie wymyślić jak w tym miejscu zamienić tabele na style. Ogólnie cała strona jest oparta o CSS/DIV ale nie jestem w te klocki jeszcze za dobry i brakuje mi pomysłów.
-- Slack'it! SMOK of the M.I.B's ping, ping, jest tam kto? Linux - a way of life [gg - 1919241]
zanotowane.pldoc.pisz.plpdf.pisz.pleffulla.pev.pl
|
Wydajność baz danych w zależności od poziomu izolacji ANSI/ISO
Czy zna (obsługuje) ktoś program Iso Draw ?
MYSQL - kodowanie w ISO-PL
strona plus baza w iso do utf-8
Kodowanie: z iso na utf
Konwesja znaków w dump'ie bazy danych - ISO -> utf-8 -> ISO -> utf-8
=?iso-8859-2?q?Co_oznacza_b=B3=B1d_Warning:_mysql=5Fconnect() _[function.mysql-connect]:_Can't_connect_to_local_MySQL_server_through_sock et_'/var/run/mysqld/mysqld.sock'_(2)_in?=
=?iso-8859-2?q?Informatyka,_Java,_EJB,_Ajax,_Spring=2E_Czy=BF by_to_koniec_=B6wiata,_czy_te=BF_nasze_uczelnie_b= EAd=B1_uczy=B3y_w_ko=F1cu!_czego_praktycznego_=2E= 2E=2E=2E?=
=?iso-8859-2?q?Ati_Mobility_Radeon_X300_W_Notebooku_Jak_Zwi=E Akszy=E6_Ilo=B6=E6_Grafiki_Poprzez_Wsp=F3=B3dziele nie_Z_Ramu=3F=3F=3F?=
=?ISO-8859-2?Q?=AFegnam_si=EA=2E=2E=2E?=
zanotowane.pldoc.pisz.plpdf.pisz.pltejsza.htw.pl
Cytat
Decede mihi sole - nie zasłaniaj mi słonca. Gdy kogoś kochasz, jesteś jak stworzyciel świata - na cokolwiek spojrzysz, nabiera to kształtu, wypełnia się barwą, światłem. Powietrze przytula się do ciebie, choćby był mróz, a ty masz w sobie tyle radości, że musisz ją rozdawać wokoło, bo się w tobie nie mieści Hoc fac - tak czyń. A tergo - od tyłu; z tyłu. I czarne włosy posiwieją. Safona |
|