Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

2 Stron V   1 2 >  
Reply to this topicStart new topic
> [MySQL][PHP]Przekazywanie zmiennych POST
kecajs
post 15.06.2015, 21:34:28
Post #1





Grupa: Zarejestrowani
Postów: 54
Pomógł: 0
Dołączył: 23.04.2010

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


Witam,
jestem początkujący w programowaniu i chcę zmierzyć się z czymś takim.
Mam bazę i z bazy - poleceniem SELECT - wyciągam rekordy określone jako "1". Tworzy się tabela i zależy mi, aby numer kolejny, oznaczony jako "Lp" lub "ID" był linkiem do strony, w której znajdą się dodatkowe informacje o produkcie z tego pola. Przykładowo: wybieram rekord oznaczony w polu "Lp" numerem 13 i pojawia mi się okno (tabela) z pobranymi z bazy z danej tabeli dane dotyczące rekordu z pozycji 13. Numer z pola "Lp" jest także linkiem do tabeli tworzonej dynamicznie (pobiera dane z bazy).
Dotarłem do tego linku http://forum.php.pl/php_przekazanie_zmiennej_przez_klikniecie_w_link_t45066.html , ale za czorta nie potrafię dopasować tego do mojego zadania.
Będę ogromnie wdzięczny za pomoc z uporaniem się z tym zagadnieniem.
Pozdrawiam,
szakal
Go to the top of the page
+Quote Post
Kshyhoo
post 15.06.2015, 21:43:31
Post #2





Grupa: Opiekunowie
Postów: 3 855
Pomógł: 317
Dołączył: 4.01.2005
Skąd: że




Pokaż, jak to robisz (kod).


--------------------
Go to the top of the page
+Quote Post
kecajs
post 15.06.2015, 21:59:17
Post #3





Grupa: Zarejestrowani
Postów: 54
Pomógł: 0
Dołączył: 23.04.2010

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


Hmm, na razie to wyciągam dane z bazy poleceniem SELECT. Mam problem, żeby coś zrobić z tego przykładu, dlatego szukam jakiegoś wsparcia na forum smile.gif Wsparcia, nie gotowca.
Go to the top of the page
+Quote Post
Kshyhoo
post 15.06.2015, 22:00:57
Post #4





Grupa: Opiekunowie
Postów: 3 855
Pomógł: 317
Dołączył: 4.01.2005
Skąd: że




Dlatego pokaż kod. Skąd mamy wiedzieć, co robisz źle?


--------------------
Go to the top of the page
+Quote Post
kecajs
post 15.06.2015, 22:20:40
Post #5





Grupa: Zarejestrowani
Postów: 54
Pomógł: 0
Dołączył: 23.04.2010

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


Oto kod:

  1. <body>
  2. <center><strong>Zestawienie pozostałych materiałów</strong></center><br><br>
  3. <table border="1" width=800 align=center cellpadding=2>
  4. <tr>
  5. <td width="20" class="table_small">Lp</td>
  6. <td width="120" class="table_small">Nazwa</td>
  7. <td width="100" class="table_small">Opis</td>
  8. <td width="30" class="table_small">Materiał</td>
  9. <td width="40" class="table_small">Dostawca</td>
  10. <td width="40" class="table_small">Producent</td>
  11. <td width="30" class="table_small">Lokacja</td>
  12. <td width="30" class="table_small">Waga</td>
  13. <td width="30" class="table_small">Stan</td>
  14. </tr>
  15. <?php
  16. include_once ("db_con.php");
  17. $connection = dbconn::instance();
  18. $wynik = $connection->query("SELECT m.PozostID, m.Nazwa, m.Opis, m.Material, l.DostawcyID, l.ProducentID, m.Lokacja, m.Waga, m.Stan FROM tb_pozost_main AS m LEFT JOIN tb_pozost_dostawy AS l ON m.PozostID=l.PozostID ORDER BY Nazwa ASC");
  19. while ($r = mysql_fetch_assoc($wynik)) {
  20. echo '<tr>';
  21. echo '<td width="20" class="table_small">' . $r['PozostID'] . '</a></td>';
  22. echo '<td width="120" class="table_small">' . $r['Nazwa'] . '</td>';
  23. echo '<td width="100" class="table_small">' . $r['Opis'] . '</td>';
  24. echo '<td width="30" class="table_small">' . $r['Material'] . '</td>';
  25. echo '<td width="40" class="table_small">' . $r['DostawcyID'] . '</td>';
  26. echo '<td width="40" class="table_small">' . $r['ProducentID'] . '</td>';
  27. echo '<td width="30" class="table_small">' . $r['Lokacja'] . '</td>';
  28. echo '<td width="30" class="table_small">' . $r['Waga'] . '</td>';
  29. echo '<td width="30" class="table_small">' . $r['Stan'] . '</td>';
  30. echo "</tr>";
  31. }
  32. ?>
  33. </table>
  34. </body>


I nie wiem za bardzo, jak to ruszyć dalej sad.gif
Ogarniam, aby wyświetlić tę drugą tabele wywołuję ją tak:
  1. <?php
  2. echo '<a href="tb_dane.php?ID=' . $link[$i] . '">' . $link[$i] . '</a>';
  3. ?>

Ale co przypisać do zmiennej $link...
Go to the top of the page
+Quote Post
Kshyhoo
post 15.06.2015, 22:34:25
Post #6





Grupa: Opiekunowie
Postów: 3 855
Pomógł: 317
Dołączył: 4.01.2005
Skąd: że




Musisz spreparować link, żeby $r['PozostID'] (bo rozumiem, że to jest Twoje ID), rzekazać jako parametr. Potem odbierasz to z $_GET i przekazujesz do zapytania: WHERE i tu Twoje ID. Bo chyba o to chodzi?


--------------------
Go to the top of the page
+Quote Post
kecajs
post 16.06.2015, 08:25:13
Post #7





Grupa: Zarejestrowani
Postów: 54
Pomógł: 0
Dołączył: 23.04.2010

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


No tak, o to chyba chodzi. Poza tym, jak się to czyta, to wszystko jest proste... A w praktyce jak się do tego zabrać?
Go to the top of the page
+Quote Post
Kshyhoo
post 16.06.2015, 10:55:20
Post #8





Grupa: Opiekunowie
Postów: 3 855
Pomógł: 317
Dołączył: 4.01.2005
Skąd: że




Przeparujesz link :
  1. echo '<a href="index.php?go=pokaz&artykul_id='.$r['PozostID'].'">zobacz artykuł ID '.$r['PozostID'].'</a>';

W skrypcie odpowiedzialnym za wyświetlenie artykułu, np.:
  1. if (isset($_GET['PozostID']) && $_GET['PozostID'] != '') {
  2. $tut_nr = mysql_real_escape_string($_GET['PozostID']);
  3. $zapytanie1 = "SELECT ... WHERE PozostID=PozostID...";



--------------------
Go to the top of the page
+Quote Post
kecajs
post 4.08.2015, 22:34:20
Post #9





Grupa: Zarejestrowani
Postów: 54
Pomógł: 0
Dołączył: 23.04.2010

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


Wracam do tematu :)

Ten fragment

  1. if (isset($_GET['PozostID']) && $_GET['PozostID'] != '') {
  2. $tut_nr = mysql_real_escape_string($_GET['PozostID']);
  3. $zapytanie1 = "SELECT ... WHERE PozostID=PozostID...";


wstawiam do pliku, w którym będzie tabela prezentująca poszczególne informacje o wywołanym artykule?
Czy ten plik ma wyglądać jak ten fragment w moim poście, tj. najpierw konstrukcja tabeli z nagłówkami, następnie wywołanie połączenia z bazą i prezentacja, tak jak na poniższym przykładzie?

  1. <?php
  2. include_once ("db_con.php");
  3. $connection = dbconn::instance();
  4.  
  5. if (isset($_GET['PozostID']) && $_GET['PozostID'] != '') {
  6. $tut_nr = mysql_real_escape_string($_GET['PozostID']);
  7. $zapytanie1 = "SELECT ... WHERE PozostID=PozostID...";
  8.  
  9. $wynik = $connection->query("SELECT ... WHERE PozostID=PozostID ORDER BY Nazwa ASC");
  10. while ($r = mysql_fetch_assoc($wynik)) {
  11. echo '<tr>';
  12. echo '<td width="20" class="table_small">' . $r['PozostID'] . '</a></td>';
  13. echo '<td width="120" class="table_small">' . $r['Nazwa'] . '</td>';
  14. echo '<td width="100" class="table_small">' . $r['Opis'] . '</td>';
  15. echo '<td width="30" class="table_small">' . $r['Material'] . '</td>';
  16. echo '<td width="40" class="table_small">' . $r['DostawcyID'] . '</td>';
  17. echo '<td width="40" class="table_small">' . $r['ProducentID'] . '</td>';
  18. echo '<td width="30" class="table_small">' . $r['Lokacja'] . '</td>';
  19. echo '<td width="30" class="table_small">' . $r['Waga'] . '</td>';
  20. echo '<td width="30" class="table_small">' . $r['Stan'] . '</td>';
  21. echo "</tr>";
  22. }
  23. ?>


Czy dobrze myślę???
A plik ten, w którym są wyświetlane te informacje jak nazwać - pokaz.php?

Pozdrawiam,
szakal

Utworzyłem nowy plik i nazwałem go pokaz.php.
Kod wygląda tak:
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html>
  2. <head>
  3. <meta http-equiv="Content-type" content="text/html; charset=utf-8">
  4.  
  5. <link rel="stylesheet" href="style.css" type="text/css">
  6. </head>
  7. <body>
  8. <h1><center>Szczegóły asortymentu</center></h1><br>
  9. <table border="1" width="90%" align=center cellpadding=2>
  10. <tr>
  11. <td width="20" class="table_small">Lp</td>
  12. <td width="130" class="table_small">Nazwa</td>
  13. <td width="40" class="table_small">Materiał</td>
  14. <td width="60" class="table_small">Dostawca</td>
  15. <td width="60" class="table_small">Producent</td>
  16. <td width="50" class="table_small">Lokacja</td>
  17. <td width="40" class="table_small">Waga</td>
  18. <td width="40" class="table_small">Stan</td>
  19. </tr>
  20. <?php
  21. include_once ("db_con.php");
  22. $connection = dbconn::instance();
  23.  
  24. // tutaj wywolanie zapytania do bazy
  25. if (isset($_GET['LacznikID']) && $_GET['LacznikID'] != '') {
  26. $tut_nr = mysql_real_escape_string($_GET['LacznikID']);
  27. $wynik = $connection->query("
  28. SELECT
  29. LacznikID,
  30. Nazwa,
  31. Material,
  32. DostawcaID,
  33. ProducentID,
  34. Lokacja,
  35. Waga,
  36. Stan
  37. FROM
  38. tb_laczniki_main
  39. WHERE
  40. LacznikID=LacznikID
  41. ORDER BY
  42. LacznikID ASC
  43. ");
  44.  
  45.  
  46. while ($r = mysql_fetch_assoc($wynik)) {
  47. echo '<tr>';
  48. echo '<td width="20" class="table_small">' .$r['LacznikID']. '</td>';
  49. echo '<td width="130" class="table_small">' . $r['Nazwa'] . '</td>';
  50. echo '<td width="40" class="table_small">' . $r['Material'] . '</td>';
  51. echo '<td width="60" class="table_small">' . $r['DostawcaID'] . '</td>';
  52. echo '<td width="60" class="table_small">' . $r['ProducentID'] . '</td>';
  53. echo '<td width="50" class="table_small">' . $r['Lokacja'] . '</td>';
  54. echo '<td width="40" class="table_small">' . $r['Waga'] . '</td>';
  55. echo '<td width="40" class="table_small">' . $r['Stan'] . '</td>';
  56. echo "</tr>";
  57. }
  58. ?>
  59. </table>
  60. <?php
  61. </body>
  62. </html>

Problem jest taki, że nawet mi się nic nie pojawia, tylko strony nie ma. Jak mam nazwać plik, w którym będą prezentowane szczegółowe informacje o danym asortymencie, wybranym na podstawie LacznikID?
Czy kod jest prawidłowy?
Dzięki za wskazówki,
szakal

Ten post edytował kecajs 19.07.2015, 20:46:49
Go to the top of the page
+Quote Post
bobek358
post 5.08.2015, 07:27:01
Post #10





Grupa: Zarejestrowani
Postów: 143
Pomógł: 22
Dołączył: 17.11.2007

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


Jak dla mnie masz błąd w zapytaniu.
Tutaj

  1. if (isset($_GET['LacznikID']) && $_GET['LacznikID'] != '') {
  2. $tut_nr = mysql_real_escape_string($_GET['LacznikID']);


przypisujesz zmienną LicznikID z GET do zmiennej $tut_nr i jej już nigdzie nie używasz.
A później masz:

  1. $wynik = $connection->query("
  2. SELECT
  3. LacznikID,
  4. Nazwa,
  5. Material,
  6. DostawcaID,
  7. ProducentID,
  8. Lokacja,
  9. Waga,
  10. Stan
  11. FROM
  12. tb_laczniki_main
  13. WHERE
  14. LacznikID=LacznikID
  15. ORDER BY
  16. LacznikID ASC
  17. ");


gdzie nie masz czegoś takiego jak "LacznikID=LacznikID" jak już to
  1. LicznikID = $tut_nr

Go to the top of the page
+Quote Post
kecajs
post 5.08.2015, 12:31:13
Post #11





Grupa: Zarejestrowani
Postów: 54
Pomógł: 0
Dołączył: 23.04.2010

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


A zwrot
  1. WHERE LacznikID=LacznikID
nie wystarczy?
Przypisanie parametru LacznikID do zmiennej $tut_nr odbywa się bez dodatkowych ciapek czy dodatków - po prostu tak, jak Ty to zrobiłeś powyżej:
  1. $tut_nr = LacznikID
. Dobrze myślę?
szakal

Ten post edytował kecajs 5.08.2015, 12:31:41
Go to the top of the page
+Quote Post
bobek358
post 5.08.2015, 13:41:46
Post #12





Grupa: Zarejestrowani
Postów: 143
Pomógł: 22
Dołączył: 17.11.2007

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


Przypisanie wartości odbywa się w:

  1. $tut_nr = mysql_real_escape_string($_GET['LacznikID']);


przypisujesz wartość zmiennej get licznikid do tut_nr i teraz musisz jej uzyc w zapytaniu:

  1. FROM
  2. tb_laczniki_main
  3. WHERE
  4. LacznikID=$tut_nr
  5. ORDER BY
  6. LacznikID ASC


Dla mysql zapis WHERE LacznikID=LacznikID oznacza przypisanie do warunku stringa LicznikID a nie zmiennej (string dodatkowo powinien być w apostrofach).

Ten post edytował bobek358 5.08.2015, 13:42:01
Go to the top of the page
+Quote Post
kecajs
post 5.08.2015, 20:51:45
Post #13





Grupa: Zarejestrowani
Postów: 54
Pomógł: 0
Dołączył: 23.04.2010

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


Dalej jest tak samo :( A jeszcze mam pytanie o nazwę pliku, w którym prezentowane są dane szczegółowe. Z tabeli wywoływany jest poniższą komendą:
  1. echo '<a href="index.php?go=pokaz&artykul_id='.$r['PozostID'].'">zobacz artykuł ID '.$r['PozostID'].'</a>';

Plik ten, w którym prezentowane są dane nazwałem pokaz.php. Jak go powinienem nazwać prawidłowo?
szakal
Go to the top of the page
+Quote Post
Kshyhoo
post 5.08.2015, 20:58:00
Post #14





Grupa: Opiekunowie
Postów: 3 855
Pomógł: 317
Dołączył: 4.01.2005
Skąd: że




Przecież masz jasno: index.php?go=pokaz, czyli plik wciąż ten sam, tylko inna sekcja kodu, odpowiedzialna za wyświetlenie jednego artykułu. Kod, który wkleiłem, to tylko zalążek skryptu, żeby pokazać zasadę działania - sam musisz sobie dopasować do swoich potrzeb... Inaczej się nie nauczysz i z byle pierdołą będziesz wracał na Forum.


--------------------
Go to the top of the page
+Quote Post
kecajs
post 5.08.2015, 21:19:56
Post #15





Grupa: Zarejestrowani
Postów: 54
Pomógł: 0
Dołączył: 23.04.2010

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


Chyba znalazłem "winowajcę". Zamiast ?go= wpisałem ?sr= - tak jak jest u mnie:
  1. <a href="index.php?sr=form_zam_lacz">Łączniki</a>

Teraz w końcu coś się dzieje i mam błąd:
Parse error: syntax error, unexpected end of file in D:\PROJEKTY WWW\MZ - magazyn\pokaz.php on line 71

Pełny kod jest taki:
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html>
  2. <head>
  3. <meta http-equiv="Content-type" content="text/html; charset=utf-8">
  4.  
  5. <link rel="stylesheet" href="style.css" type="text/css">
  6. </head>
  7.  
  8. <body>
  9. <h1><center>Szczegóły asortymentu</center></h1><br>
  10.  
  11. <table border="1" width="90%" align=center cellpadding=2>
  12. <tr>
  13. <td width="20" class="table_small">Lp</td>
  14. <td width="130" class="table_small">Nazwa</td>
  15. <td width="40" class="table_small">Materiał</td>
  16. <td width="60" class="table_small">Dostawca</td>
  17. <td width="60" class="table_small">Producent</td>
  18. <td width="50" class="table_small">Lokacja</td>
  19. <td width="40" class="table_small">Waga</td>
  20. <td width="40" class="table_small">Stan</td>
  21. </tr>
  22. <?php
  23. include_once ("db_con.php");
  24. $connection = dbconn::instance();
  25.  
  26. // tutaj wywolanie zapytania do bazy
  27. if (isset($_GET['LacznikID']) && $_GET['LacznikID'] != '') {
  28. $tut_nr = mysql_real_escape_string($_GET['LacznikID']);
  29. $wynik = $connection->query("
  30. SELECT
  31. LacznikID,
  32. Nazwa,
  33. Material,
  34. DostawcaID,
  35. ProducentID,
  36. Lokacja,
  37. Waga,
  38. Stan
  39. FROM
  40. tb_laczniki_main
  41. WHERE
  42. LacznikID=$tut_nr
  43. ORDER BY
  44. LacznikID ASC
  45. ");
  46.  
  47.  
  48. while ($r = mysql_fetch_assoc($wynik)) {
  49. echo '<tr>';
  50. echo '<td width="20" class="table_small">' .$r['LacznikID']. '</td>';
  51. echo '<td width="130" class="table_small">' . $r['Nazwa'] . '</td>';
  52. echo '<td width="40" class="table_small">' . $r['Material'] . '</td>';
  53. echo '<td width="60" class="table_small">' . $r['DostawcaID'] . '</td>';
  54. echo '<td width="60" class="table_small">' . $r['ProducentID'] . '</td>';
  55. echo '<td width="50" class="table_small">' . $r['Lokacja'] . '</td>';
  56. echo '<td width="40" class="table_small">' . $r['Waga'] . '</td>';
  57. echo '<td width="40" class="table_small">' . $r['Stan'] . '</td>';
  58. echo "</tr>";
  59. }
  60. ?>
  61. </table>
  62.  
  63. </body>
  64. </html>

Mam wrażenie, że mam wszystko pozamykane i plik kończy się tak, jak powinien...

Znalazłem, że w tej linii
  1. if (isset($_GET['LacznikID']) && $_GET['LacznikID'] != '') {
otwierany jest nawias klamrowy, zaś nie ma jego zamknięcia. Zamknąłem go przed funkcją while.
Teraz mam z kolei taki komunikat (ostrzeżenie):
Warning: mysql_fetch_assoc() expects parameter 1 to be resource, null given in D:\PROJEKTY WWW\MZ - magazyn\pokaz.php on line 49
i są tylko nagłówki tabeli, bez danych.

Ten post edytował kecajs 5.08.2015, 22:43:13
Go to the top of the page
+Quote Post
bobek358
post 6.08.2015, 06:59:01
Post #16





Grupa: Zarejestrowani
Postów: 143
Pomógł: 22
Dołączył: 17.11.2007

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


Wyświetl dobie $wynik na ekran i wykonaj zapytanie w phpMA. Będziesz wiedział co masz nie tak w zapytaniu.
Go to the top of the page
+Quote Post
kecajs
post 6.08.2015, 22:22:37
Post #17





Grupa: Zarejestrowani
Postów: 54
Pomógł: 0
Dołączył: 23.04.2010

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


Fakt, sprawdzę. Ciągle zapominam o tej prostej metodzie. :)
szakal


Odpaliłem kod w PMA i zwrócił mi coś takiego
  1. Błąd
  2. Zapytanie SQL:
  3.  
  4. IF( isset(
  5.  
  6. $_GET[ 'LacznikID']
  7. ) && $_GET[ 'LacznikID'] != '' ) {$tut_nr = mysql_real_escape_string(
  8. $_GET[ 'LacznikID']
  9. );
  10.  
  11. MySQL zwrócił komunikat: Dokumentacja
  12.  
  13. #1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'if (isset($_GET['LacznikID']) && $_GET['LacznikID'] != '') {
  14. $tut_nr = ' at line 1

Próbowałem znaleźć w Googlach jakiejś podpowiedzi, ale nie wiem, na co mam zwrócić uwagę :(
szakal
Go to the top of the page
+Quote Post
Comandeer
post 6.08.2015, 22:27:37
Post #18





Grupa: Zarejestrowani
Postów: 1 268
Pomógł: 254
Dołączył: 11.06.2009
Skąd: Świętochłowice

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


Erm… Jak sama nazwa wskazuje pma przyjmuje "zapytania SQL", nie kod PHP. Jak już to miałeś wkleić to zapytanie, które przekazujesz do $connection->query w linii 29.

Niemniej problem polega na tym, że $connection to obiekt mysqli/PDO (w każdym razie na pewno nie rozszerzenie mysql), natomiast wyniki i escape'owanie chcesz przeprowadzać biblioteką mysql, stąd oczywisty błąd.


--------------------
Go to the top of the page
+Quote Post
kecajs
post 7.08.2015, 06:25:39
Post #19





Grupa: Zarejestrowani
Postów: 54
Pomógł: 0
Dołączył: 23.04.2010

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


A będziesz tak uprzejmy i wyrozumiały i wskażesz mi jak poprawnie zrobić taką weryfikację? Tzn. co, gdzie uruchomić, wkleić i co dalej?
Uprzejmie dziękuję :)
szakal
Go to the top of the page
+Quote Post
Comandeer
post 7.08.2015, 09:56:48
Post #20





Grupa: Zarejestrowani
Postów: 1 268
Pomógł: 254
Dołączył: 11.06.2009
Skąd: Świętochłowice

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


A możesz pokazać kod łączenia się z bazą?


--------------------
Go to the top of the page
+Quote Post

2 Stron V   1 2 >
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.07.2025 - 12:48