3aran Napisano 27 Sierpnia 2009 Napisano 27 Sierpnia 2009 Witam. Jako, że jest tu trochę informatyków mam nadzieję, że mi ktoś pomoże. Mam skrypt php pobierający dane z bd mysql: <?php require_once('funkcje.php'); function pobierz_ogloszenia() { $lacz = lacz_bd(); $wynik = $lacz->query("select * from wiad"); if (!$wynik) return false; $tablica_ogl = array(); for ($licznik = 0; $wiersz = $wynik->fetch_row(); ++$licznik) { $tablica_ogl[$licznik] = $wiersz[0]; } return $tablica_ogl; } i drugi skrypt mający za zadanie wyświetlić to w tabeli: function pokaz_ogloszenia($tablica_ogl) { global $tabela_ogl; $tabela_ogl = true; ?> <br /> <form name=tabela_ogl action="usun_ogl.php" method=post> <center> <table width=1000 cellpadding=2 cellspacing=0> <?php $kolor = "#cccccc"; echo "<tr bgcolor=$kolor><td><strong>Nr ogloszenia</strong></td>"; echo "<td><strong>Temat</strong></td>"; echo "<td><strong>Wlasciciel</strong></td>"; echo "<td><strong>Data napisania</strong></td>"; echo "<td><strong>Tresc</strong></td>"; echo "<td><strong>Usun</strong></td>"; if (is_array($tablica_ogl) && count($tablica_ogl)>0) { foreach ($tablica_ogl as $ogl) { if ($kolor == "#cccccc") $kolor = "#ffffff"; else $kolor = "#cccccc"; echo "<tr bgcolor=$kolor><td>".$ogl[0]."</td>"; echo "<td>".$ogl[1]."</td>"; echo "<td>".$ogl[2]."</td>"; echo "<td>".$ogl[3]."</td>"; echo "<td>".$ogl[4]."</td>"; echo "<td><input type=checkbox name=\"usun_mnie[]\"value=\"$url\"></td>"; echo "</tr>"; } } else echo "<tr><td>Brak zapisanych ogloszen</td></tr>"; ?> </table> </center> </form> Powie mi ktoś, czemu wyświetla mi się tylko pierwsza kolumna? Lista kolumn to id, temat, wlasciciel, data_n, tresc.
d0cent Napisano 28 Sierpnia 2009 Napisano 28 Sierpnia 2009 Do pobierania danych zrob sobie cos takiego: $query = 'SELECT * FROM `table` WHERE ... ORDER BY ...;'; $out=array(); $res = $db->query($query); if(mysql_num_rows($res)==0) { return $out; } while($row = mysql_fetch_assoc($res)) { $out[$row['incremented_field']]=$row; } return $out; a potem juz sie tylko po tym iterujesz wyswietlajac dane w tabeli: $html = ''; foreach($out AS $key => $item) { $html .= '<tr>'; $html .= '<td>'.$item['some_field'].'</td>'; $html .= '</tr>'; } echo $html; to tak w duzym uproszczeniu - na Twoje potrzeby powinno byc ok
3aran Napisano 28 Sierpnia 2009 Autor Napisano 28 Sierpnia 2009 Wielkie dzięki. Sprawdzę wieczorkiem. A wiesz może czemu mój skrypt nie chce działać?
wegorz Napisano 28 Sierpnia 2009 Napisano 28 Sierpnia 2009 Wielkie dzięki. Sprawdzę wieczorkiem. A wiesz może czemu mój skrypt nie chce działać? for ($licznik = 0; $wiersz = $wynik->fetch_row(); ++$licznik) { $tablica_ogl[$licznik] = $wiersz[0]; } Trochę niejasna pętla. Spróbuj zdebugować wynik, wykonując np.: print_r($tablica_ogl)
3aran Napisano 28 Sierpnia 2009 Autor Napisano 28 Sierpnia 2009 for ($licznik = 0; $wiersz = $wynik->fetch_row(); ++$licznik) { $tablica_ogl[$licznik] = $wiersz[0]; } Trochę niejasna pętla. Spróbuj zdebugować wynik, wykonując np.: print_r($tablica_ogl) Dostaje coś taiego: Array()Array( [0] => 1)Array( [0] => 1 [1] => 2)Array( [0] => 1 [1] => 2 [2] => 3)
3aran Napisano 30 Sierpnia 2009 Autor Napisano 30 Sierpnia 2009 Do pobierania danych zrob sobie cos takiego: $query = 'SELECT * FROM `table` WHERE ... ORDER BY ...;'; $out=array(); $res = $db->query($query); if(mysql_num_rows($res)==0) { return $out; } while($row = mysql_fetch_assoc($res)) { $out[$row['incremented_field']]=$row; } return $out; a potem juz sie tylko po tym iterujesz wyswietlajac dane w tabeli: $html = ''; foreach($out AS $key => $item) { $html .= '<tr>'; $html .= '<td>'.$item['some_field'].'</td>'; $html .= '</tr>'; } echo $html; to tak w duzym uproszczeniu - na Twoje potrzeby powinno byc ok mógłbyś mi jeszcze powiedzieć jak to zapętlić? Wyświetla mi tylko jeden rekord...
3aran Napisano 31 Sierpnia 2009 Autor Napisano 31 Sierpnia 2009 Temat zamknięty... Już działa. Dziękować... Idę na rower.
Rekomendowane odpowiedzi
Zarchiwizowany
Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.