Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Elementy menu pobierane z bazy danych [PHP]
oYeK
post
Post #1





Grupa: Zarejestrowani
Postów: 7
Pomógł: 0
Dołączył: 30.05.2012
Skąd: Śląsk

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


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
Go to the top of the page
+Quote Post
IProSoft
post
Post #2





Grupa: Zarejestrowani
Postów: 479
Pomógł: 97
Dołączył: 6.09.2011
Skąd: php.net :)

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


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


--------------------
Manual prawdę Ci powie.
Go to the top of the page
+Quote Post
oYeK
post
Post #3





Grupa: Zarejestrowani
Postów: 7
Pomógł: 0
Dołączył: 30.05.2012
Skąd: Śląsk

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


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

Ten post edytował oYeK 31.05.2012, 13:48:23
Go to the top of the page
+Quote Post
IProSoft
post
Post #4





Grupa: Zarejestrowani
Postów: 479
Pomógł: 97
Dołączył: 6.09.2011
Skąd: php.net :)

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


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


--------------------
Manual prawdę Ci powie.
Go to the top of the page
+Quote Post
oYeK
post
Post #5





Grupa: Zarejestrowani
Postów: 7
Pomógł: 0
Dołączył: 30.05.2012
Skąd: Śląsk

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


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

Ten post edytował oYeK 31.05.2012, 15:28:12
Go to the top of the page
+Quote Post
IProSoft
post
Post #6





Grupa: Zarejestrowani
Postów: 479
Pomógł: 97
Dołączył: 6.09.2011
Skąd: php.net :)

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


Pokaż jak zmieniłeś.


--------------------
Manual prawdę Ci powie.
Go to the top of the page
+Quote Post
oYeK
post
Post #7





Grupa: Zarejestrowani
Postów: 7
Pomógł: 0
Dołączył: 30.05.2012
Skąd: Śląsk

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


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

Ten post edytował oYeK 1.06.2012, 13:57:46
Go to the top of the page
+Quote Post
IProSoft
post
Post #8





Grupa: Zarejestrowani
Postów: 479
Pomógł: 97
Dołączył: 6.09.2011
Skąd: php.net :)

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


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?


--------------------
Manual prawdę Ci powie.
Go to the top of the page
+Quote Post
oYeK
post
Post #9





Grupa: Zarejestrowani
Postów: 7
Pomógł: 0
Dołączył: 30.05.2012
Skąd: Śląsk

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


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 ;/
Go to the top of the page
+Quote Post
!*!
post
Post #10





Grupa: Zarejestrowani
Postów: 4 298
Pomógł: 447
Dołączył: 16.11.2006

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


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.


--------------------
Nie udzielam pomocy poprzez PW i nie mam GG.
Niektóre języki programowania, na przykład C# są znane z niezwykłej przenośności (kompatybilność ze wszystkimi wersjami Visty jest wiele warta).
Go to the top of the page
+Quote Post
oYeK
post
Post #11





Grupa: Zarejestrowani
Postów: 7
Pomógł: 0
Dołączył: 30.05.2012
Skąd: Śląsk

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


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


Ten post edytował oYeK 4.06.2012, 09:31:22
Go to the top of the page
+Quote Post
!*!
post
Post #12





Grupa: Zarejestrowani
Postów: 4 298
Pomógł: 447
Dołączył: 16.11.2006

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


  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";


Ten post edytował !*! 4.06.2012, 09:35:06


--------------------
Nie udzielam pomocy poprzez PW i nie mam GG.
Niektóre języki programowania, na przykład C# są znane z niezwykłej przenośności (kompatybilność ze wszystkimi wersjami Visty jest wiele warta).
Go to the top of the page
+Quote Post
oYeK
post
Post #13





Grupa: Zarejestrowani
Postów: 7
Pomógł: 0
Dołączył: 30.05.2012
Skąd: Śląsk

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


Dzięki serdeczne za pomoc. Już działa jak powinno smile.gif Leci "pomoc"
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 19.08.2025 - 10:28