Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP][MySQL]Wartości option jako tabele z danej bazy danych
djsamiryi
post
Post #1





Grupa: Zarejestrowani
Postów: 15
Pomógł: 0
Dołączył: 11.04.2010

Ostrzeżenie: (0%)
-----


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.

Ten post edytował djsamiryi 8.11.2014, 23:35:24
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 10)
Pyton_000
post
Post #2





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

Ostrzeżenie: (0%)
-----


Tadam: http://dev.mysql.com/doc/refman/5.0/en/show-tables.html
Go to the top of the page
+Quote Post
djsamiryi
post
Post #3





Grupa: Zarejestrowani
Postów: 15
Pomógł: 0
Dołączył: 11.04.2010

Ostrzeżenie: (0%)
-----


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.)
Go to the top of the page
+Quote Post
Pyton_000
post
Post #4





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

Ostrzeżenie: (0%)
-----


Ale w czym problem? Wykonujesz normalne zapytanie z show tables, robisz fetch_assoc i while przypisujesz do options.
Go to the top of the page
+Quote Post
djsamiryi
post
Post #5





Grupa: Zarejestrowani
Postów: 15
Pomógł: 0
Dołączył: 11.04.2010

Ostrzeżenie: (0%)
-----


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 (IMG:style_emoticons/default/sad.gif)
Go to the top of the page
+Quote Post
Pyton_000
post
Post #6





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

Ostrzeżenie: (0%)
-----


  1. while($row=mysql_fetch_assoc($wynik))
  2. {
  3. var_dump($row);
  4. }

Go to the top of the page
+Quote Post
djsamiryi
post
Post #7





Grupa: Zarejestrowani
Postów: 15
Pomógł: 0
Dołączył: 11.04.2010

Ostrzeżenie: (0%)
-----


Dziękuje (IMG:style_emoticons/default/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.

Ten post edytował djsamiryi 10.11.2014, 23:54:44
Go to the top of the page
+Quote Post
trueblue
post
Post #8





Grupa: Zarejestrowani
Postów: 6 806
Pomógł: 1828
Dołączył: 11.03.2014

Ostrzeżenie: (0%)
-----


1. SHOW TABLES zwraca jedną kolumnę.
2. Pierwszy element tablicy ma indeks 0, nie 1.
3. Zastanów się nad linią 11.
Go to the top of the page
+Quote Post
djsamiryi
post
Post #9





Grupa: Zarejestrowani
Postów: 15
Pomógł: 0
Dołączył: 11.04.2010

Ostrzeżenie: (0%)
-----


  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.
Go to the top of the page
+Quote Post
trueblue
post
Post #10





Grupa: Zarejestrowani
Postów: 6 806
Pomógł: 1828
Dołączył: 11.03.2014

Ostrzeżenie: (0%)
-----


Zmień mysql_fetch_assoc na mysql_fetch_row.
Go to the top of the page
+Quote Post
djsamiryi
post
Post #11





Grupa: Zarejestrowani
Postów: 15
Pomógł: 0
Dołączył: 11.04.2010

Ostrzeżenie: (0%)
-----


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. ?>


Ten post edytował djsamiryi 11.11.2014, 14:30:34
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 22.08.2025 - 22:34