Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [MySQL][PHP] Jak pobrać dane z bazy za pomocą pola select?
omi
post 23.01.2021, 06:21:49
Post #1





Grupa: Zarejestrowani
Postów: 60
Pomógł: 0
Dołączył: 6.11.2017

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


Witam jestem poczatkujacy w PHP i MySQL, proszę o pomoc, to jest pewnie prosta sprawa dla kogoś kto się zna na bazach danych.

Mam w bazie danych 3 tabele (tabela_nr1, tabela_nr2, tabela_nr3)
i za pomocą listy rozwijanej chciałbym pobrać dane z jednej z tych 3 tabel,
w których to tabelach jest kolumna id,
a z tej kolumny id wszystkie wiersze co posiadają id nr 1.
Jest w tych tabelach kilkanaście wierszy z id nr 1.

Mam tu kod który trzeba by było zmienić, znalazlem taki przykład w internecie i powstawiałem swoje nazwy:

  1. <form action="" method="get">
  2. <select name="id_nr_1_z_tabeli_nr" onchange="this.form.submit()">
  3. <option value="">Wybierz tabelę</option>
  4. <option value="tabela_nr1">tabela_nr1</option>
  5. <option value="tabela_nr2">tabela_nr2</option>
  6. <option value="tabela_nr3">tabela_nr3</option>
  7. </select>
  8. </form>
  9.  
  10. <?php
  11.  
  12. // parametry serwera
  13. $serwer = "localhost"; // nazwa serwera mysql
  14. $login = "root"; // login do bazy
  15. $haslo = "haslo1"; // haslo do bazy
  16. $baza = "baza1"; // nazwa bazy
  17. $tabela = "tabela_nr1"; // nazwa tabeli
  18.  
  19. $id_nr_1_z_tabeli_nr = $_GET['id_nr_1_z_tabeli_nr'];
  20.  
  21. if($id_nr_1_z_tabeli_nr) {
  22.  
  23. // łączymy się z bazą danych
  24. if (mysql_connect($serwer, $login, $haslo) and mysql_select_db($baza)) {
  25.  
  26. // zapytanie do bazy danych
  27. $wynik = mysql_query("SELECT * FROM tabela_nr1 WHERE id='$id_nr_1_z_tabeli_nr'")
  28. or die("Błąd w zapytaniu!");
  29.  
  30. }
  31. else echo "Nie mogę połączyć się z bazą danych!";
  32.  
  33. // wyświetlany wyniki zapytania
  34. while($rek = mysql_fetch_array($wynik)) {
  35. echo $rek['nazwa']."<br />";
  36. }
  37. }
  38.  
  39. ?>



Jest na forum Ktoś kto by mógłby poprawić ten przykładowy kod.
Dziekuję.

Mam pytanie czy to w ogóle da się zrobić?

Mam teraz taki kod ale wyświetla się taki bład: Parse error: syntax error, unexpected end of file.

  1. <form action="" method="get"> <select name="id_nr_1_z_tabeli_nr" onchange="this.form.submit()"> <option value="">Wybierz tabelę</option> <option value="tabela_nr1">Tabela 1</option> <option value="tabela_nr2">Tabela 2</option> <option value="tabela_nr3">Tabela 3</option> </select> </form>
  2.  
  3. <?php
  4.  
  5. // parametry serwera
  6. $serwer = "localhost"; // nazwa serwera mysql
  7. $login = "root"; // login do bazy
  8. $haslo = "haslo1"; // haslo do bazy
  9. $baza = "baza1"; // nazwa bazy
  10.  
  11.  
  12.  
  13. if(isset($_GET['id_nr_1_z_tabeli_nr')) { // w tej linijce pokazuje błąd: Parse error: syntax error, unexpected ')', expecting ']'
  14. $id_nr_1_z_tabeli_nr = $_GET['id_nr_1_z_tabeli_nr'];
  15.  
  16. // łączymy się z bazą danych
  17. $db = new mysqli($serwer, $login, $haslo, $baza);
  18.  
  19. $zapytanie = "SELECT * FROM tabela_nr1 WHERE id = 1";
  20.  
  21.  
  22.  
  23. $o_szablon_odczytu = $db -> prepare($zapytanie);
  24. $o_szablon_odczytu -> bind_param('i', $id_nr_1_z_tabeli_nr); // zakładając, że twoje ID to integer
  25. $o_szablon_odczytu -> execute();
  26. $o_odczyt = $o_szablon_odczytu -> get_result();
  27.  
  28. if ($o_odczyt -> num_rows > 0) {
  29. // --- czytaj wiersze
  30. while($tab_wiersz = $o_odczyt -> fetch_assoc()) {
  31. echo "<b>kolumna1:</b> " . $tab_wiersz["nazwa kolumny1 w twojej bazie"]. " - <b>kolumna2:</b> " . $tab_wiersz["nazwa klolumny 2 w twojej bazie"]. "<br>";
  32. }
  33. } else {
  34. echo "wyników: 0";
  35. }
  36.  
  37. $o_szablon_odczytu -> close();
  38.  
  39. $db_blad = $db -> error;
  40.  
  41. $db -> close();
  42.  
  43. ?>


Co tu jest źle?

Ten post edytował omi 22.01.2021, 11:26:20
Go to the top of the page
+Quote Post
viking
post 23.01.2021, 07:13:01
Post #2





Grupa: Zarejestrowani
Postów: 6 365
Pomógł: 1114
Dołączył: 30.08.2006

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


No a gdzie zamknięcie ] w tej linii z błędem?


--------------------
Go to the top of the page
+Quote Post
omi
post 23.01.2021, 07:58:21
Post #3





Grupa: Zarejestrowani
Postów: 60
Pomógł: 0
Dołączył: 6.11.2017

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


Już działa tylko jak załaduje stronę po raz pierwszy to mam pod lista taki komunikat: Fatal error: Call to a member function close() on null in /index.php ,a jak usunę
  1. $o_szablon_odczytu -> close();

oraz
  1. $db -> close();

to komunikat znika tylko nie wiem czy to tak może zostać?

I drugi komunikat pojawia się kiedy wybiorę jakąś tabele z listy:
Warning: mysqli_stmt::bind_param(): Number of variables doesn't match number of parameters in prepared statement in /index.php
Zawartość tabeli się wyświetla.

Co tu zmienić w kodzie żeby te komunikaty znikły.
Go to the top of the page
+Quote Post
LowiczakPL
post 23.01.2021, 09:02:30
Post #4





Grupa: Zarejestrowani
Postów: 531
Pomógł: 55
Dołączył: 3.01.2016
Skąd: Łowicz

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


Close to zamknięcie połączenia z bazą danych czyli robisz to tylko 1 raz bo masz tylko połaznie z 1 bazą ukryte pod zmienną $db

  1. $db = new mysqli($serwer, $login, $haslo, $baza);
  2.  
  3. // ... kod
  4.  
  5. $db -> close();


Parser kody PHP podpowiada Ci dokładnie co źle robisz, ale am wrażenie że nie znasz języka angielskiego czy się mylę?

Tłumacz sobie w Google co znacza komunikaty pokazywane. Parse error: syntax error, unexpected ')', expecting ']'

Oznacza to że zamiast znaku ] wstawiłeś znak )

  1. if(isset($_GET['id_nr_1_z_tabeli_nr']) {


W html jest taka zasada ze masz otwarcie i zamknięcie znacznika jak masz na otwarcie <div> to na zamknięcie masz </div> nie możesz zamknąć innym znacznikiem np </p>

W PHP jest dokładnie tak samo jak tablica ma znak otwarcia [ to znak zamknięcia to ] a nie )

Musisz zacząć czytać/tłumaczyć sobie komunikaty masz w nich wszystko opisane co źle robisz.



Ten post edytował LowiczakPL 23.01.2021, 09:09:39


--------------------
Szukam zleceń Symfony, Laravel, Back-End, Front-End, PHP, MySQL ...
Go to the top of the page
+Quote Post
omi
post 23.01.2021, 09:11:22
Post #5





Grupa: Zarejestrowani
Postów: 60
Pomógł: 0
Dołączył: 6.11.2017

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


Usunąłem z kodu:

  1. $o_szablon_odczytu -> close();


Nic się nie zmieniło cały czas pod listą wyboru jest komunikat:

Fatal error: Call to a member function close() on null in /index.php
Go to the top of the page
+Quote Post
LowiczakPL
post 23.01.2021, 09:29:04
Post #6





Grupa: Zarejestrowani
Postów: 531
Pomógł: 55
Dołączył: 3.01.2016
Skąd: Łowicz

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


dodaj ten kod

  1. if ($db->connect_error) {
  2. die('Connect Error: ' . $db->connect_error);
  3. }


zaraz pod

  1. // łączymy się z bazą danych
  2. $db = new mysqli($serwer, $login, $haslo, $baza);


i napisz czy nie pokazuje się żaden komunikat, czy masz połączenie z bazą danych.

A najlepiej usuń wszystkie close bo tak naprawdę są zbędne.

Ten post edytował LowiczakPL 23.01.2021, 09:30:06


--------------------
Szukam zleceń Symfony, Laravel, Back-End, Front-End, PHP, MySQL ...
Go to the top of the page
+Quote Post
omi
post 23.01.2021, 10:45:08
Post #7





Grupa: Zarejestrowani
Postów: 60
Pomógł: 0
Dołączył: 6.11.2017

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


Dodałem warunek i usunąłem wszystkie close i ten jeden komunikat zniknął tz.:

Fatal error: Call to a member function close() on null in /index.php

Dziekuję.

Ale jest jeszcze jeden komunikat jak wybiorę jedną tabelę z listy wyboru, tabela się wczytuje prawidłowo ale pomiedzy listą wyboru a tabelą jest komunikat:

Warning: mysqli_stmt::bind_param(): Number of variables doesn't match number of parameters in prepared statement in /index.php

  1. $o_szablon_odczytu = $db -> prepare($zapytanie);
  2. $o_szablon_odczytu -> bind_param('i', $id_nr_1_z_tabeli_nr); // zakładając, że twoje ID to integer <----- Ta linia: Warning: mysqli_stmt::bind_param(): Number of variables doesn't match number of parameters in prepared statement in /index.php
  3. $o_szablon_odczytu -> execute();
  4. $o_odczyt = $o_szablon_odczytu -> get_result();


Dziekuję wszystkim za pomoc, kod działa.
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 Wersja Lo-Fi Aktualny czas: 29.03.2024 - 07:25