Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Jak wyświetlić liste tabel z bazy danych
Forum PHP.pl > Forum > Przedszkole
Cwirek1987
Chciałbym wyświetlić zawartość tabeli na stronie, a najlepiej aby można też było wchodzi za pomocą strony do zawartości wybranej tabeli wyświetlonej z bazy danych czy w ogóle jest taka możliwość, coś w stylu phpmyadmin bez możliwości edycji tej bazy.

Ja nawet już mam skrypt napisany, ale nie dokonca działą bo wyświtla mi coś innego niż chiałem.

  1. <?
  2. $sql=mysql_connect (localhost, login, hasło);
  3. mysql_select_db("sklep");
  4. $query = mysql_query('show tables');
  5. echo "$query";
  6. ?>


i odpaleniu strony wyskakuje mi Resource id #7
sniezny_wilk
Ja o czymś takim nie słyszałem, ale możesz zrobić własny skrypt zarządzający bazą z możliwością odczytu (choć można zrobić usera do phpmyadmin'a, który będzie mógł tylko oglądać tabele). Poczytaj w maualu cała masa funkcji które możesz wykorzystać.
pyro
<?
$sql=mysql_connect (localhost, login, hasło);
mysql_select_db("sklep");
$query = mysql_query('show tables');
print_r($query); // sprobuj tak
mysql_close($sql);
?>
webdice
A panowie o funkcjach mysql_fetch_* nie słyszeli?

P.S. ~pyro dodaj odpowiednie bbcode.
Cwirek1987
~pyro to samo wyskakuje Resource id #7,

a jak by to miało wygladać z funkcją mysql_fetch_*?
webdice
  1. <?php
  2.  
  3. mysql_connect  ('localhost', '*', '*');
  4. mysql_select_db ('test');
  5.  
  6. $query = mysql_query ('SHOW TABLES');
  7.  
  8. while ($field = mysql_fetch_assoc ($query))
  9. {
  10. print $field[0];
  11. }
  12.  
  13. ?>


Jak będziesz takim leniem i będziesz pytał o takie proste rzeczy, zamiast samemu poszukać, to gwarantuje Ci że naukę programowania zakończysz na etapie co najwyżej gimnazjalisty.
Cwirek1987
Fajnie krytykować osobę która ma technika informatyka i jest dobra w programowaniu językami tubo paskal, c, c++ html i zaczyna poznawać php w szerokim zakresie wiesz. Poza tym dla twoich informacji od tego są fora, a jeśli chodzi o to, to juz siedzę nad tym drugi dzień jak wyświetlić te tabel.

Zresztą mniejsza z tym nie działa mi to co napisałaś
rzymek01
Cytat(webdicepl @ 28.05.2008, 19:27:54 ) *
Jak będziesz takim leniem (...) zakończysz na etapie co najwyżej gimnazjalisty.

co jest złego w etapie gimnazjalisty? smile.gif

nie chwaląc się umiem C++,xhtml,html,xml,css,css2,js,PHP,MySQL i wcale mi nie przeszkadza, że jestem gimnazjalistą tongue.gif

przeszkadza mi jedynie, że matematyka w gimnazjum ma za wąski zakres i dopiero jak otworzyłem słynnego Cormena to zrozumiałem czego mam się douczyć biggrin.gif
Cwirek1987
Dobra opanujmy się i skupmy się na temacie bo mnie czas goni tongue.gifsmile.gif
rzymek01
chcesz gotowca czy wskazówki?
Cwirek1987
gotowiec też może być. Pod warunkiem że nie będzie zbyt skomplikowany żebym mógł go w razie przeanalizować i zrozumieć czym będzie bardziej zawiły tym dla mnie będzie trudniej bo jestem początkujący daj co masz i wiesz na ten temat.
rzymek01
ok, poczekaj 5min

na początek spróbuj takie coś, ale pamiętaj o zabezpieczeniach (które zrobisz sam biggrin.gif)
!przeczytaj komentarze!

edit: TWOI PRZYJACIELE: http://dev.mysql.com i http://php.net winksmiley.jpg

  1. <?php
  2. /*START:PHP*/
  3. #COPY#
  4. /*//sprawdzenie zmiennych
  5. if (empty($_GET['table']) || zrob wyrazenia regularne czy ctype_alnum na tego GETa)
  6.   $_GET['table'] = null;*/
  7.  
  8. /*pobranie i zapisanie nazw tabel*/
  9. $sql = $DB->query('SHOW TABLES FROM '.DB_N.' LIKE "'.DB_P.'%"', __FILE__, __LINE__);
  10. /* gdzie:
  11. const DB_N - nazwa bazy danych
  12. const DB_P - prefiks do tabel (możesz usunąć cały LIKE jesli nie chcesz korzystać z prefiksów
  13. ogólnie $DB->query zamień sobie na mysql_query
  14. a $DB->fetch na mysql_fetch_assoc
  15. a $DB->fetch(..., 'NUM') na mysql_fetch_row
  16. */
  17.  
  18. $tables = array();
  19. while ($data = $DB->fetch($sql, 'NUM'))
  20. $tables[] = $data[0];
  21.  
  22. /*
  23. do $tables wrzuciłem nazwy znalezionych tabel
  24. */
  25.  
  26.  
  27. if (empty($_GET['table']))
  28. {
  29. /*
  30. jesli żadna nie została kliknięta to przedstaw widok nazw tabel z możliwością kl
  31. knięcia w celu ujrzenia zawartości
  32. */
  33. echo '<h1>Tabele:</h1>';
  34. for ($i = 0, $count = count($tables); $i < $count; ++$i)
  35. echo '<a href="?table='.$tables[$i].'">'.$tables[$i].'</a><br/>';
  36. }
  37. else if (in_array($_GET['table'], $tables))
  38. {
  39. /*
  40. pokaż zawartość odpowiedniej tabeli
  41. */
  42. $sql = $DB->query('SHOW COLUMNS FROM `'.$_GET['table'].'`', __FILE__, __LINE__); // nazwy kolumn
  43. $sql2 = $DB->query('SELECT * FROM `'.$_GET['table'].'`', __FILE__, __LINE__); // zawartośc całej tabeli
  44.  
  45. $fields = array();
  46. while ($data = $DB->fetch($sql))
  47. {
  48. $fields[] = $data['Field']; // nazwy kolumn do tablicy
  49. }
  50. $count = count($fields);
  51.  
  52. echo '<h1>Tabela '.$_GET['table'].':</h1>
  53. <table border="1px" style="border: 1px solid #000;background-color:#DDD;">
  54. <tr>';
  55. for ($i = 0; $i < $count; ++$i)
  56. {
  57. echo '<th>'.$fields[$i].'</th>'; // wyświetlenie nazw kolumn
  58. }
  59. echo '</tr>';
  60.  
  61. while ($data = $DB->fetch($sql2, 'NUM'))
  62. {
  63. echo '<tr>';
  64. for ($j = 0; $j < $count; ++$j)
  65. echo '<td>'.$data[$j].'</td>'; // wyświetlenie danych
  66.  
  67. echo '</tr>';
  68. }
  69. echo '</table>';
  70. }
  71. else
  72. {
  73. echo 'Nie ma takiej tabeli bądź nie masz do niej dostępu :)';
  74. }
  75. ?>
batman
przenoszę na przedszkole
Cwirek1987
nie ma nic prostrzego żeby się połączył i wyświetlił tabele to nie może być aż tak skomplikowane
skoro to takie proste czemu nikt za bardzo pomóc nie może.
batman
Przecież dostałeś już odpowiedź. Nie wiem czy działa, nie sprawdzałem. A jeśli nie działa, to napisz co nie działa. Poza tym polecam manual.
marcio
  1. <?php
  2. function sql() {
  3.  
  4.  
  5. echo('<form method="post" action="'.$_SERVER['PHP_SELF'].'">
  6. <table align="center" width="75%" style="border: 1px dotted white;">
  7. <tr><td align="center"><b>SQL</b></td></tr>
  8. <tr><td align="center"><input type="text" name="db" value="localhost" style="font-style:italic; background-color:#000000; color:#00A54E; border-color: #000000; border: #000000;"></td></tr> 
  9. <tr><td align="center"><input type="text" name="db_login" value="login" style="font-style:italic; background-color:#000000; color:#00A54E; border-color: #000000; border: #000000;"></td></tr>
  10. <tr><td align="center"><input type="text" name="db_pass" value="pass" style="font-style:italic; background-color:#000000; color:#00A54E; border-color: #000000; border: #000000;"></td></tr>
  11. <tr><td align="center"><input type="text" name="db_name" value="nazwa bazy" style="font-style:italic; background-color:#000000; color:#00A54E; border-color: #000000; border: #000000;"></td></tr> 
  12. <tr><td align="center">
  13. <tr><td align="center"><textarea name="mysql_query" rows="5" cols="50" style="background-color:#000000; color:#CCCCCC;">Zapytania sql(opcjonalne)</textarea></td></tr>
  14. <tr><td align="center">
  15. <input type="submit" name="polacz" value="Polacz" style="font-style:italic; background-color:#000000; color:#00A54E;"></td></tr>
  16. </form>
  17. ');
  18.  
  19. if(!empty($_POST['db']) && !empty($_POST['db_login']) && !empty($_POST['db_pass']) && !empty($_POST['db_name']) && isset($_POST['polacz'])) {
  20.  
  21.  if($resource = @mysql_connect($_POST['db'], $_POST['db_login'], $_POST['db_pass'])) {
  22. mysql_select_db($_POST['db_name']);
  23.  
  24.  $id = mysql_query('show databases');
  25. $ile = mysql_num_fields($id);
  26.  echo('<tr>');
  27. for($i = 0; $i < $ile; $i++) 
  28.  echo('<td align="center" style="border: 1px dotted red;"><b>'.mysql_field_name($id,$i).'</b></td></tr>');
  29.  
  30. while($kol = mysql_fetch_row($id)) {
  31.  
  32.  for($a = 0; $a < $ile; $a++)
  33. echo('<tr><td align="center">'.htmlspecialchars($kol[$a]).'</td></tr>');
  34.  }
  35.  
  36. $id2 = mysql_query('show tables');
  37.  $ile2 = mysql_num_fields($id2);
  38. echo('<tr>');
  39.  for($e = 0; $e < $ile2; $e++)
  40. echo('<td align="center" style="border: 1px dotted red;"><b>'.mysql_field_name($id2,$e).'</b></td></tr>');
  41.  
  42.  while($kol2 = mysql_fetch_row($id2)) {
  43.  
  44. for($o = 0; $o < $ile2; $o++)
  45.  echo('<tr><td align="center">'.htmlspecialchars($kol2[$o]).'</td></tr></table>');
  46.  }
  47.  
  48. if(!empty($_POST['mysql_query'])) {
  49.  
  50.  if($resource = @mysql_connect($_POST['db'], $_POST['db_login'], $_POST['db_pass'])) {
  51. mysql_select_db($_POST['db_name']);
  52.  
  53.  
  54. if($query = mysql_query($_POST['mysql_query'], $resource)) {
  55.  $ile3 = mysql_num_fields($query);
  56. echo('<table align="center" style="border: 1px dotted white;"><tr>');
  57.  for($u = 0; $u < $ile3; $u++) 
  58. echo('<td align="center" style="border: 1px dotted red;"><b>'.mysql_field_name($query, $u).'</b></td>');
  59.  echo('</tr>');
  60.  
  61.  while($kol3 = mysql_fetch_row($query)) {
  62.  
  63.  echo('<tr>');
  64. for($d = 0; $d < $ile3; $d++)
  65.  echo('<td align="center">'.htmlspecialchars($kol3[$d]).'</td>');
  66. echo('</tr>');
  67. }
  68. echo('</table>');
  69.  }
  70. else echo('<table align="center" width="75%" style="border: 1px dotted white;"><tr><td align="center"><b style="color:#f00">Error: '.mysql_error().'</b></td></tr></table>');
  71. } 
  72. }
  73. }
  74. }
  75.  
  76.  
  77.  
  78. if(!empty($_POST['db']) && !empty($_POST['db_login']) && !empty($_POST['db_pass']) && !empty($_POST['db_name']) && isset($_POST['polacz'])) {
  79.  
  80. if(!@mysql_connect($_POST['db'], $_POST['db_login'], $_POST['db_pass']))
  81.  
  82.  echo('<table align="center" width="75%" style="border: 1px dotted white;"><tr><td align="center"><b style="color:#f00">Nie mozna polaczyc z baza</b></td></tr></table>');
  83. }
  84. }
  85.  
  86. sql();
  87. ?>
rzymek01
Cwirek1987, dostałeś ode mnie gotowca (patrz parę postów wyżej) sadsmiley02.gif

masz uproszczoną wersję:
  1. <?php
  2. error_reporting(E_ALL | E_STRICT);
  3.  
  4. mysql_connect('localhost', 'user', 'pass');
  5. mysql_selectdb('nazwa_db');
  6.  
  7. if (empty($_GET['table']))
  8. $_GET['table'] = null;
  9.  
  10. /*pobranie i zapisanie nazw tabel*/
  11. $sql = mysql_query('SHOW TABLES FROM `nazwa_db`');
  12.  
  13. $tables = array();
  14. while ($data = mysql_fetch_row($sql))
  15. $tables[] = $data[0];
  16.  
  17.  
  18. if (empty($_GET['table']))
  19. {
  20. /*
  21. jesli żadna nie została kliknięta to przedstaw widok nazw tabel z możliwością kl
    iknięcia w celu ujrzenia zawartości
  22. */
  23. echo '<h1>Tabele:</h1>';
  24. for ($i = 0, $count = count($tables); $i < $count; ++$i)
  25. echo '<a href="?table='.$tables[$i].'">'.$tables[$i].'</a><br/>';
  26. }
  27. else if (in_array($_GET['table'], $tables))
  28. {
  29. /*
  30. pokaż zawartość odpowiedniej tabeli
  31. */
  32. // struktura tabeli, dane z możliwością edycji (brak możliwości podglądu danych dla session)
  33. $sql = mysql_query('SHOW COLUMNS FROM `'.$_GET['table'].'`'); // nazwy kolumn
  34. $sql2 = mysql_query('SELECT * FROM `'.$_GET['table'].'`'); // zawartośc całej tabeli
  35.  
  36. $fields = array();
  37. while ($data = mysql_fetch_assoc($sql))
  38. {
  39. $fields[] = $data['Field']; // nazwy kolumn do tablicy
  40. }
  41. $count = count($fields);
  42.  
  43. echo '<h1>Tabela '.$_GET['table'].':</h1>
  44. <table border="1px" style="border: 1px solid #000;background-color:#DDD;">
  45. <tr>';
  46. for ($i = 0; $i < $count; ++$i)
  47. {
  48. echo '<th>'.$fields[$i].'</th>'; // wyświetlenie nazw kolumn
  49. }
  50. echo '</tr>';
  51.  
  52. while ($data = mysql_fetch_row($sql2))
  53. {
  54. echo '<tr>';
  55. for ($j = 0; $j < $count; ++$j)
  56. echo '<td>'.$data[$j].'</td>'; // wyświetlenie danych
  57.  
  58. echo '</tr>';
  59. }
  60. echo '</table>';
  61. }
  62. else
  63. {
  64. echo 'Nie ma takiej tabeli bądź nie masz do niej dostępu :)';
  65. }
  66. ?>
Cwirek1987
kurcze ale ja chce wyświetlić liste tabel a nie zawartość konkretnej tabeli ludzie dopiero jak wyświetli liste tabel to chce zeby po kliknieciu w nazwe danej tabeli on pokazywał jej zawartość
batman
Cytat(Cwirek1987 @ 28.05.2008, 18:53:50 ) *
Chciałbym wyświetlić zawartość tabeli na stronie, a najlepiej aby można też było wchodzi za pomocą strony do zawartości wybranej tabeli wyświetlonej z bazy danych czy w ogóle jest taka możliwość, coś w stylu phpmyadmin bez możliwości edycji tej bazy.

Pisz jaśniej i używaj interpunkcji, to więcej osób Ciebie zrozumie.

Wracając do tematu - kolejny raz manual
Cwirek1987
tak fajnie się podaje stronki tylko ze tam wszytko po angielsku i niewiem za bardzo jak tam szukać bo az tak dobrze angielskiego nie znam
batman
Fragment ze strony, do której podałem Ci linka:
Cytat
mysql_list_tables() przyjmuje jako argument nazwę bazy i zwraca wskaźnik wyniku

Jeśli zadasz kolejne pytanie bez zapoznania się z materiałami, temat zostanie zamknięty, a Ty dostaniesz warna!
marcio
Wes koles bo nawet podstaw php nie znasz patrzyles co robi kod ktory ci pokazalem wyswietla bazy i tabele a jak chcesz mozesz wykonac zapytanie jak znasz podstawy to wystarcza one do zmodyfikowania tego kodu zweby wyswietlal kolumny tabel
rzymek01
Cytat(Cwirek1987 @ 28.05.2008, 21:11:29 ) *
kurcze ale ja chce wyświetlić liste tabel a nie zawartość konkretnej tabeli ludzie dopiero jak wyświetli liste tabel to chce zeby po kliknieciu w nazwe danej tabeli on pokazywał jej zawartość


Cwirek1987, nie denerwuj mnie dry.gif

mój program robi dokładnie to co napisałeś... !
czytaj komentarze
Cwirek1987
po pierwsze rzymek01 może i dzałaja te skrypty, ale mnie chodiz o prostote skryptu
po drugie marcio pisłąem ze dopiero zaczynam php i mysql
po trzecie marcio nie irytuj się tongue.gif

zacznijmy od poczatku jak wyświetlić prostą kodmędą wszytkie tabele na stronie co robie zle czego tu brakuje?

  1. <?php
  2. $sql = mysql_connect (localhost, login, haslo);
  3. $zapytanie = mysql_select_db("sklep"); 
  4. $wykonaj = mysql_query($zaptanie);
  5. while($wiersz = mysql_fetch_array($wykonaj))
  6. {
  7. print $wiersz[0]."<br>";
  8. }
  9. mysql_close($sql); 
  10. ?>
rzymek01
po prostu ręcę opadają

odsyłam Cię do manualna MySQL

z którego możesz wyczytać:

że do wyświetlenia nazw tabel słuzy polecenie SHOW TABLES, które w praktyce wyglądać może tak:

  1. <?php
  2. $sql = mysql_query('SHOW TABLES FROM `nazwa_db`');
  3. ?>


następnie musisz wynik (zmienna $sql) przepuścić przez jakąś pętlę np. for:

  1. <?php
  2. while ($data = mysql_fetch_row($sql))
  3. echo $data[0].'<br/>';
  4. ?>


i już... wow smile.gif
batman
@Cwirek1987
Teraz to już przesadziłeś.
Lista tabel
Zawartość tabeli
Oba linki podałem Ci wcześniej.


Zamykam i przestrzegam przed zakładaniem drugiego wątku z tym samym problemem.
Poza tym wyświetlanie danych z tabeli było już wiele razy na tym forum.
Jeśli wyślesz mi PW z kodem, który będzie wskazywał, że zajrzałeś na podane przeze mnie strony, to temat otworzę.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.