Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Elementy menu pobierane z bazy danych [PHP]
Forum PHP.pl > Forum > PHP
oYeK
Witam wszystkich smile.gif

Od razu zaznaczam, że jestem nowy na forum oraz stawiam pierwsze kroki w php i mysql.

Postanowiłem, że będę się uczyć programowania php tworząc stronę, tylko tyle, że chyba za bardzo ambitnie podszedłem do tworzonej strony ;p i pojawił się mały problem z wykonaniem menu na owej stronie.

Sprawa wygląda następująco: chciał bym stworzyć menu nawigacji, którego elementy listy rozwijalnej będą pobierane z bazy danych i zapisywane jako osobne elementy <li></li>. Na razie posiadam napisany kod oraz bazę, w której znajdują się 3 elementy. Kod pobiera mi elementy zapisane w bazie i wypisuje je, ale jako jeden element <li></li> a chciał bym żeby wypisał mi 3 elementy <li></li> i tutaj pojawia się mój problem...

O to kod:
  1.  
  2. <?php
  3. $db = mysqli_connect('localhost', 'user', 'haslo', 'baza');
  4.  
  5. if (mysqli_connect_errno())
  6. {
  7. echo 'Bła połączenia z bazą danych';
  8. }
  9.  
  10. $zapytanie ='SELECT stanowisko FROM praca';
  11. $wynik = mysqli_query($db, $zapytanie);
  12.  
  13. $ile = mysqli_num_rows($wynik);
  14.  
  15. $i = 0;
  16. while ($i<$ile)
  17. {
  18. $wiersz = mysqli_fetch_assoc($wynik);
  19. echo '<a href=""><li>'.($wiersz['stanowisko']).'</li></a>';
  20. $i += 1;
  21. }
  22.  
  23. mysqli_close($db);
  24. ?>


Tak wygląda tabela w bazie danych:

ID stanowisko

1 stanowisko1
2 stanowisko2
3 stanowisko3

Mam teraz do Was takie pytanie jak mogę to rozwiązać żeby działało tak jak bym chciał, tzn żeby tworzyło mi menu. Zaznaczam, że ilość pozycji w menu będzie różna a nie stała.

Z góry dzięki za pomoc
IProSoft
  1. $zapytanie ='SELECT stanowisko FROM praca';
  2. $wynik = mysqli_query($db, $zapytanie);
  3.  
  4. while ($wiersz = mysqli_fetch_assoc($wynik))
  5. {
  6. echo '<a href=""><li>'.($wiersz['stanowisko']).'</li></a>';
  7. }
oYeK
Dzięki wielkie za odpowiedź! Wszystko działa tak jak chciałem.

pozdrawiam wink.gif



A mógł by ktoś podpowiedzieć mi jak mam zrobić aby po kliknięciu na dane "stanowisko" pobierały się dane, które znajdują się w tym samym wierszu w bazie danych co kliknięte "stanowisko" ?
IProSoft
Podpowiedź:
  1. echo '<a href=""><li>'.($wiersz['stanowisko']).'</li></a>';

link z parametrem stanowisko, np:
index.php?stanowisko='.$wiersz['stanowisko'].'

a odczytujesz:
  1. $zapytanie ='SELECT * FROM praca WHERE stanowisko = '".$_GET[' stanowisko']."'';


Pamiętaj o bezpieczeństwie smile.gif
oYeK
Dzięki za odpowiedz smile.gif

Próbuję zrobić jak mi podpowiedziałeś i przy wywołaniu pojawia się taki błąd:

Warning: mysqli_fetch_assoc() expects parameter 1 to be mysqli_result, boolean given in F:\SERWER\stronyWWW\index.php on line 73

a wyświetlam dane na tej samej zasadzie jak kod wyżej, który mi podałeś ;/

pozdrawiam
IProSoft
Pokaż jak zmieniłeś.
oYeK
Tak wygląda kod z menu:

  1.  
  2. <?php
  3. $db = mysqli_connect('localhost', 'user', 'hasło', 'baza');
  4.  
  5. if (mysqli_connect_errno())
  6. {
  7. echo 'Bła połączenia z bazą danych';
  8. }
  9.  
  10. $zapytanie ='SELECT * FROM praca';
  11. $wynik = mysqli_query($db, $zapytanie);
  12.  
  13. while ($wiersz = mysqli_fetch_assoc($wynik))
  14. {
  15. echo '<li><a href="index.php?stanowisko='.$wiersz['stanowisko'].'">'.($wiersz['stanowisko']).'</a></li>';
  16. }
  17.  
  18. mysqli_close($db);
  19. ?>


A to jest kod, który wywołuje dane z tego samego wiersza co dane "stanowisko":

  1.  
  2. <?php
  3. $db = mysqli_connect('localhost', 'user', 'hasło', 'baza');
  4.  
  5. if (mysqli_connect_errno())
  6. {
  7. echo 'Bła połączenia z bazą danych';
  8. }
  9.  
  10. $zapytanie ='SELECT * FROM praca WHERE stanowisko = ".$_GET["stanowisko"]."';
  11. $wynik = mysqli_query($db, $zapytanie);
  12.  
  13. while ($wiersz = mysqli_fetch_assoc($wynik))
  14. {
  15. echo ($wiersz['oczekiwania']);
  16. }
  17.  
  18. mysqli_close($db);
  19. ?>


Postanowiłem, że przedstawię Wam co chciał bym mniej więcej stworzyć ponieważ chciał bym Was prosić o jakieś porady jak to zrobić. Siedzę cały czas szukając jakieś informacji na necie i coś próbuję stworzyć ale mi nie wychodzi. Po prostu kompletny brak pomysłu...

Tutaj jest zdjęcie jak ma to działać:



A teraz opis: Górne menu ma działać na zasadzie rozwijalnej listy gdzie będą znajdować się konkretne stanowiska pobierane z bazy danych. To udało mi się stworzyć, działa tak:
  1. <?php
  2. $db = mysqli_connect('localhost', 'user', 'hasło', 'baza');
  3.  
  4. if (mysqli_connect_errno())
  5. {
  6. echo 'Bład połączenia z bazą danych';
  7. }
  8.  
  9. $zapytanie ='SELECT * FROM praca';
  10. $wynik = mysqli_query($db, $zapytanie);
  11.  
  12. while ($wiersz = mysqli_fetch_assoc($wynik))
  13. {
  14. echo '<li><a href="">'.($wiersz['ofertaID']).'</a></li>';
  15. }
  16.  
  17. mysqli_close($db);
  18. ?>


Po wybraniu odpowiedniego stanowiska chciał bym aby informacje odnośnie tego wybranego stanowiska, które znajdują się w tej samej tabeli były
możliwe do wyświetlenia po wybraniu odpowiedniego menu z lewej strony i wyświetlone z prawej strony. I tutaj pojawia się mój problem bo nie mam bladego pomysłu jak można to wykonać w tej sposób. Kombinuje już dwa dni i nic mi nie wychodzi ;/

Może ktoś z Was mi podpowie jak to wykonać ?



I jak podpowie może ktoś jakieś rozwiązanie questionmark.gif
IProSoft
nie bardzo mogę złapać Twoją koncepcję.
W menu1 masz listę stanowisk:
kowal
piekarz
(....)
w prawej kolumnie ma być info na temat tego stanowiska: $zapytanie ='SELECT * FROM praca WHERE stanowisko = ".$_GET["stanowisko"]."';
Co ma być w menu2?
oYeK
W menu 2 mają być opcje wyświetlania konkretnych danych na temat stanowisko, czyli: informacje1, informacje2, informacje3. Za dużo jest ich żeby były wszystkie wyświetlone na raz. Chciał bym żeby menu 2 wywoływało konkretne opcje w prawej kolumnie ...

Dalej się męczę i wywala mi ten błąd: Warning: mysqli_fetch_row() expects parameter 1 to be mysqli_result, boolean given in F:\SERWER\stronyWWW\index.php on line 62 Nie za bardzo mogę zrozumieć o co chodzi ;/
!*!
Pokaż kod (choć komunikat wskazuje jasno). A jak już ogarniesz to menu, to zainteresuj się PDO do łączenia z bazą danych, bo to niedługo będzie jedyna opcja do łączenia się z nimi.
oYeK
Kod wyświetlający menu:
  1. <?php
  2. $db = mysqli_connect('localhost', 'user', 'hasło', 'bazy');
  3.  
  4. $zapytanie ='SELECT ofertaID FROM praca';
  5. $wynik = mysqli_query($db, $zapytanie);
  6.  
  7. while ($wiersz = mysqli_fetch_assoc($wynik))
  8. {
  9. echo '<li><a href="index.php?stanowisko='.$wiersz['ofertaID'].'">'.$wiersz['ofertaID'].'</a></li>';
  10. }
  11.  
  12. mysqli_close($db);
  13. ?>


Kod wyświetlania informacji na podstawie danego stanowiska:
  1. <?php
  2. $db = mysqli_connect('localhost', 'user', 'hasło', 'bazy');
  3.  
  4. $dane = $_GET["stanowisko"];
  5. $zapytanie2 ='SELECT oczekiwania FROM praca WHERE ofertaID=$dane';
  6. $wynik2 = mysqli_query($db, $zapytanie2);
  7.  
  8. $wiersz2 = mysqli_fetch_assoc($wynik2); //O tą linijkę mi się pluje
  9.  
  10. echo $wiersz2['oczekiwania'];
  11.  
  12.  
  13. mysqli_close($db);
  14. ?>
!*!
  1. mysqli_query($db, $zapytanie2) OR die("Error: ".mysqli_error($db));


A teraz co pokazuje?

Jak nadal nie widzisz, to powinno być tak:

  1. $dane = $_GET['stanowisko'];
  2. $zapytanie2 ="SELECT oczekiwania FROM praca WHERE ofertaID=$dane";
oYeK
Dzięki serdeczne za pomoc. Już działa jak powinno smile.gif Leci "pomoc"
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.