Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MySQL]Wartości option jako tabele z danej bazy danych
Forum PHP.pl > Forum > Przedszkole
djsamiryi
Witam. Mam problem z kodem który tworzyłby rozwijalną listę (select name, option) zgodnie z ilością tabel w danej bazie danych. Znalazłem tylko następujący kod:
  1. <?php
  2. function mysql($localhost, $root, $pass, $data){
  3. $link = mysql_connect($localhost, $root, $pass) or die('Błąd: Nie można połączyć z MySQL!');
  4. mysql_select_db($data) or die('Błąd: Nie można wybraż bazy danych!');
  5. }
  6.  
  7. ######### Pobieranie Danych #########
  8.  
  9. mysql('localhost', 'uzytkownik', 'haslo', 'baza');
  10. $zapytanie = mysql_query ("SELECT * FROM klienci ORDER BY id DESC");
  11.  
  12. echo '<select name="dane">';
  13. echo '<option value="">Wybierz Firmę</option>';
  14. while($option = mysql_fetch_assoc($zapytanie)) {
  15. echo '<option value="'.$option['id'].'">'.$option['nazwa_firmy'].'</option>';
  16. }
  17. echo '</select>';
  18. ?>

Ale nie mam pojęcia jak go zmodyfikować żeby czytał nie dane z tabeli, tylko dane o tabelach. Dodam też że nie mam information_schema w Bazie danych.

Baza danych na której pracuje nosi nazwę "testy"
każde z tabel mają nazwy roczników np. "2014", "2013", "2012" itd. Lista będzie pokazywała dostępne tabele. Po wybraniu chcę żeby odesłały mnie do stron które przedstawią wszystkie wyniki z tej tabeli. Ale z tym już sobie poradzę, problem tkwi w tym co opisałem wyżej. Z góry dziękuje bardzo za pomoc.
Pyton_000
Tadam: http://dev.mysql.com/doc/refman/5.0/en/show-tables.html
djsamiryi
pyton_000

nie potrzebuje tylko wyświetlić dostępne tabele ale również przypisać je odpowiednio do kolejnych options. a także w przypadku gdy zostaną dodane nowe tabele, automatycznie żeby lista się zwiększyła o te dodane tabele. Próbowałem wszystkiego co udało mi się znaleść ale żadne nich nie spelniało ostatniego warunku... (a także w przypadku gdy zostaną dodane nowe tabele, automatycznie żeby lista się zwiększyła o te dodane tabele.)
Pyton_000
Ale w czym problem? Wykonujesz normalne zapytanie z show tables, robisz fetch_assoc i while przypisujesz do options.
djsamiryi
Masz siłę mnie trochę pokierować? jeszcze?
  1. $zapytanie="SHOW TABLES";
  2. $wynik=mysql_query($zapytanie);
  3.  
  4. $row=mysql_fetch_assoc($wynik);
Póki co mam tyle. Jak zastosować to while? nie za bardzo mam pomysł na to sad.gif
Pyton_000
  1. while($row=mysql_fetch_assoc($wynik))
  2. {
  3. var_dump($row);
  4. }

djsamiryi
Dziękuje smile.gif

a później do option value=?<tu>? powstawiać "$row" ?

Bo póki co wyświetla mi się coś takiego... http://imgur.com/fOkPP1S

Mógłbym prosić o pomoc...?

ponawiam pytanie..

próbowalem też czegoś w stylu :
  1. <?
  2. $res = @mysql_query("SHOW TABLES")
  3. or die("Invalid query: " . mysql_query());
  4. echo '<label>Select value:</label>';
  5. echo '<select id="var" name="var">';
  6. $dod = 1;
  7. while ($row = mysql_fetch_assoc($res))
  8. {
  9. $va = $row[$dod];
  10. echo "<option value='$va'>$va</option>";
  11. $dod++;
  12. }
  13. echo '</select>';
  14. ?>
ale tez mi nie działa.. POkazuje puste pola w liście rozwijalnej, zgodne z ilościa tabel. Ale brak tam nazw samych tabel.
trueblue
1. SHOW TABLES zwraca jedną kolumnę.
2. Pierwszy element tablicy ma indeks 0, nie 1.
3. Zastanów się nad linią 11.
djsamiryi
  1. <?
  2. $zapytanie="SHOW TABLES FROM testy;";
  3. $res = mysql_query($zapytanie)
  4. or die("Invalid query: " . mysql_query());
  5.  
  6. echo '<label>Select value:</label>';
  7. echo '<select>';
  8. $dod = 0;
  9. while ($row = mysql_fetch_assoc($res))
  10. {
  11. $va = $row[$dod];
  12. echo "<option value='$va'>$va</option>";
  13. ++$dod;
  14. };
  15. echo '</select>';
  16. ?>

Póki co wygląda to tak.. Ilość tych opcji w menu jest zgodna z ilościa tabel, ale wciąż brak mi nazw samych tabel... Muszę użyć mysql_result ?
Dzięki za odpowiedź trueblue, nie za bardzo wiem co zrobić z podpunktem 1.
trueblue
Zmień mysql_fetch_assoc na mysql_fetch_row.
djsamiryi
Pokazało teraz nazwę pierwszej tabeli "2000", a następnych nie. Ilość <option> dalej się zgadza.
Obecnie kod wygląda tak:
  1. <?
  2. $zapytanie="SHOW TABLES FROM testy;";
  3. $res = mysql_query($zapytanie)
  4. or die("Invalid query: " . mysql_query());
  5.  
  6. echo '<label>Select value:</label>';
  7. echo '<select>';
  8. $dod = 0;
  9. while ($row = mysql_fetch_row($res))
  10. {
  11. $va = $row[$dod];
  12. echo "<option value='$va'>$va</option>";
  13. ++$dod;
  14. };
  15. echo '</select>';
  16. ?>


OK udało się. Wystarczylo zamiast tego $dod wstawić poporstu 0.
Obecny działający kod:
  1. <?
  2. $zapytanie="SHOW TABLES FROM testy;";
  3. $res = mysql_query($zapytanie)
  4. or die("Invalid query: " . mysql_query());
  5.  
  6. echo '<label>Select value:</label>';
  7. echo '<select>';
  8. while ($row = mysql_fetch_row($res))
  9. {
  10. $va = $row[0];
  11. echo "<option value='$va'>$va</option>";
  12. };
  13. echo '</select>';
  14. ?>

Dziękuje za pomoc.

PS. Wstawiam również kod (może komuś sie przyda....) już jako formularz.
  1. <?
  2. $zapytanie="SHOW TABLES FROM nazwa_bazy_danych;";
  3. $res = mysql_query($zapytanie)
  4. or die("Invalid query: " . mysql_query());
  5.  
  6. echo '<label>Wybierz rocznik:</label>';
  7. echo '<form method="post" action="nazwa_dokumentu_który_odbierze_dane_post">';
  8. echo '<select name="rok">';
  9. while ($row = mysql_fetch_row($res))
  10. {
  11. $va = $row[0];
  12. echo "<option value='$va'>$va</option>";
  13. };
  14. echo '</select>';
  15. echo '<input type="submit" value="Wyślij">';
  16. echo '</form>'
  17. ?>
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.