![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 54 Pomógł: 0 Dołączył: 23.04.2010 Ostrzeżenie: (0%) ![]() ![]() |
Witam,
walczę z pewnym kodem i wyskakuje mi taki właśnie błąd: mysql_fetch_assoc() expects parameter 1 to be resource, null given in ścieżka on line 47. Kod ten ma za zadanie wyciągnąć z bazy tylko dane jednego artykułu, na podstawie zmiennej LacznikID. Oto kod strony pokaz.php, odpowiedzialnej za wyświetlanie tychże danych.
Z kolei kod w pliku, z którego następuje wywołanie konkretnego artykułu wygląda tak.
Gdzie mam szukać przyczyn tego komunikatu o błędzie? Poza tym, funkcja mysql_fetch_assoc jest odpowiedzialna za wyświetlanie tylu wierszy, ile wierszy spełnia zadane warunki - jeśli się nie mylę. A czy tą samą funkcję zastosować w moim przypadku, kiedy wiem, że nie będę miał więcej niż jeden wiersz lub gdybym chciał te dane zaprezentować w innym układzie niż tabela z nagłówkami i wierszami, np. w postaci formularza (tabela z kilkoma wierszami, bez nagłówków, opisy pól i wartości obok siebie)? Przeszukałem Google w obu kwestiach, jednak nie znalazłem odpowiedzi dokładnie na moje pytania... I jeszcze mam pytanie o samo połączenie z bazą. Mam dość dziwny twór, który ktoś kiedyś mi napisał
Czy zamiast tego mogę zastosować zdecydowanie krótszą formę znalezioną na którymś z forów
W jakim celu został użyty ten zwrot
Czy samo inkludowanie nie wystarczy? Dzięki za wyrozumiałość i cierpliwość :) Pozdrawiam, kecajs |
|
|
![]() |
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 965 Pomógł: 285 Dołączył: 19.06.2015 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
1. Sprawdź czy zapytanie nie generuje błędu - jeśli tak to mysql_query zwróci false i chyba stąd cały problem.
2. jest użyte dlatego, że klasa dbconn wykorzystuje singleton'a. http://phpedia.pl/wiki/Singleton 3. Możesz użyć:
ale będziesz musiał przepisać kod bo $connection->query() nie będzie już działać. |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 249 Pomógł: 0 Dołączył: 22.12.2011 Ostrzeżenie: (10%) ![]() ![]() |
Mysql oczekuje jakiś jeden parametr a otrzymał Goowno. Innymi słowy :
podstaw odpowiedni parametr do $wynik zobacz w dokumentacji - pewnie chodzi o połączenie z bazą danych. -------------------- TERA TRYBI.pl
|
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 54 Pomógł: 0 Dołączył: 23.04.2010 Ostrzeżenie: (0%) ![]() ![]() |
1. Sprawdź czy zapytanie nie generuje błędu - jeśli tak to mysql_query zwróci false i chyba stąd cały problem. A czy muszę robić to z wykorzystaniem funkcji mysql_fetch_assoc, czy nie? Zawsze będzie wyciągana z bazy informacja o konkretnym artykule i zawsze będzie tylko jedna. W jaki sposób mogę zaprezentować dane aby wyglądały jak formularz. Przykładowo: wiersz 1. - Lp. 2 | Nazwa Przykładowa nazwa artykułu wiersz 2. - Materiał jakiś materiał | Norma norma produktu wiersz 3. - Stan stan produktu | Lokacja rozmieszczenie w magazynie | Waga waga produktu wiersz 4. - Dostawca Dostawca | Producent Producent a nie w postaci tabeli. Cytat 2. jest użyte dlatego, że klasa dbconn wykorzystuje singleton'a. http://phpedia.pl/wiki/Singleton Czy to rozwiązanie jest dużo lepsze od przedstawionego poniżej? Bo Twój przykład poniżej, a mój kod wstawiony w poprzedniej wiadomości znacznie się różnią wielkością. Cytat 3. Możesz użyć:
ale będziesz musiał przepisać kod bo $connection->query() nie będzie już działać. Czyli zamiast
mam wpisać ? Dzięki za pomoc :) Mysql oczekuje jakiś jeden parametr a otrzymał Goowno. Innymi słowy : podstaw odpowiedni parametr do $wynik zobacz w dokumentacji - pewnie chodzi o połączenie z bazą danych. Ale zmienna $wynik odwołuje sie do , zaś $connection do . W takim razie jak zmienię skrypt logowania na przykład na ten zaproponowany przez kapslokk i powinno być wszystko ok? Ten post edytował kecajs 20.08.2015, 17:14:50 |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 6 380 Pomógł: 1116 Dołączył: 30.08.2006 Ostrzeżenie: (0%) ![]() ![]() |
Ogólnie cały ten kod singletona, twojej klasy db nadaje się do kosza chyba tylko. Przede wszystkim stare mysql_ zamiast PDO albo Mysqli. Zero możliwości, niezabezpieczony i tworzy kłopoty. Jest jakiś powód dla którego piszesz w ten sposób?
-------------------- |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 54 Pomógł: 0 Dołączył: 23.04.2010 Ostrzeżenie: (0%) ![]() ![]() |
Ogólnie cały ten kod singletona, twojej klasy db nadaje się do kosza chyba tylko. Przede wszystkim stare mysql_ zamiast PDO albo Mysqli. Zero możliwości, niezabezpieczony i tworzy kłopoty. Jest jakiś powód dla którego piszesz w ten sposób? Nie, nie ma żadnego. Swego czasu ktoś mi napisał taki skrypt do łączenia się z bazą i go używam do teraz. Czy w zupełności wystarczy mi skrypt zaproponowany przez kapslokk? Ten post edytował kecajs 20.08.2015, 18:37:01 |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 6 380 Pomógł: 1116 Dołączył: 30.08.2006 Ostrzeżenie: (0%) ![]() ![]() |
Kapslokk zaproponował gołą funkcję łączącą się z bazą. Zrób to nowocześnie i bezpiecznie.
-------------------- |
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 54 Pomógł: 0 Dołączył: 23.04.2010 Ostrzeżenie: (0%) ![]() ![]() |
A jak to zrobić nowocześnie i bezpiecznie? Czy dla celów testowych wystarczy ta goła funkcja łącząca się z bazą?
|
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 6 380 Pomógł: 1116 Dołączył: 30.08.2006 Ostrzeżenie: (0%) ![]() ![]() |
Odpal mysql_error() w kodzie po kolejnych krokach oraz zapoznaj się z Temat: Jak poprawnie zadac pytanie oraz przygotowac srodowisko pracy jak wyświetlać błędy. Nowocześnie to PDO + prepared statements.
-------------------- |
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 54 Pomógł: 0 Dołączył: 23.04.2010 Ostrzeżenie: (0%) ![]() ![]() |
Trochę pozmieniałem.
Do pliku db_con.php wrzuciłem to, co zaproponował kapslokk. Z kolei kod w pliku pokaz.php wygląda teraz tak. (od części nawiązującej do bazy danych).
Teraz mam taki komunikat: Fatal error: Call to a member function query() on a non-object in ... Jak to ugryźć? Ten post edytował kecajs 20.08.2015, 22:43:02 |
|
|
![]()
Post
#11
|
|
Grupa: Zarejestrowani Postów: 6 380 Pomógł: 1116 Dołączył: 30.08.2006 Ostrzeżenie: (0%) ![]() ![]() |
$connection = connection(); // tu wywołujesz funkcję
$connection->query($zapytanie); // tutaj powinien być obiekt. Poczytaj jakiś kurs o podstawach. Tworzenie obiektów a zamiast tak rzeźbić użyj PDO. -------------------- |
|
|
![]()
Post
#12
|
|
Grupa: Zarejestrowani Postów: 54 Pomógł: 0 Dołączył: 23.04.2010 Ostrzeżenie: (0%) ![]() ![]() |
Znalazłem coś takiego na Wikibooks:
Podstawiłem tu moje dane i jest to plik db_con.php Znalazłem tu także kod umożliwiający połączenie się z bazą:
I teraz zastanawiam się, jak podmienić ten mój kod w pliku pokaz.php i wykorzystać ten powyższy kod, jednocześnie nie budować kompletnie mi w tym przypadku nie potrzebnej tabeli z wierszami wynikowymi, bo jak pisałem we wcześniejszych postach - w tym przypadku wynik będzie zawsze jednowierszowy. I proszę mnie potraktować trochę ulgowo, bo to co robię, ma na celu jedynie przedstawić możliwości i ogólny zarys funkcjonowania aplikacji. Po akceptacji osób decyzyjnych i tak zajmie się tym programista. Ja jestem początkującym amatorem próbującym coś tam klecić, a nie uważam się za programistę. Jestem ekonomistą :) Pozdrawiam Hmm, no cóż, wygląda na to, że pozostałem sam na polu boju... Nic nowego. Temat można zamknąć, bo po co ma wisieć martwy. Ten post edytował kecajs 23.08.2015, 22:10:49 |
|
|
![]()
Post
#13
|
|
Grupa: Zarejestrowani Postów: 6 380 Pomógł: 1116 Dołączył: 30.08.2006 Ostrzeżenie: (0%) ![]() ![]() |
Ale jaki jest tym razem problem konkretnie? Piszesz że nie chcesz budować tabeli - i nie budujesz. Masz generowana listę ul-li.
-------------------- |
|
|
![]()
Post
#14
|
|
Grupa: Zarejestrowani Postów: 54 Pomógł: 0 Dołączył: 23.04.2010 Ostrzeżenie: (0%) ![]() ![]() |
Chodzi o to, w jaki sposób przedstawić wynik dla jednego konkretnego artykułu. Dla większej liczby budujemy tabelę funkcją mysql_fetch_assoc(), zaś dla jednego, konkretnego wyniku jak pokazać te informacje?
Z racji tego, że chodzi mi tylko o zaprezentowanie funkcjonalności, a nie tworzę aplikacji do użytkowania, więc sposób łączenia z bazą pozostawiam tak, jak w początkowych wpisach przedstawiłem - nie wykorzystuję pdo i mysqli, tylko mysql. Dzięki za odpowiedź. |
|
|
![]()
Post
#15
|
|
Grupa: Zarejestrowani Postów: 6 380 Pomógł: 1116 Dołączył: 30.08.2006 Ostrzeżenie: (0%) ![]() ![]() |
W zapytaniu LIMIT 1. Wybranie jednego rekordu w PHP http://www.php.net/manual/en/pdostatement.fetch.php
-------------------- |
|
|
![]()
Post
#16
|
|
Grupa: Zarejestrowani Postów: 54 Pomógł: 0 Dołączył: 23.04.2010 Ostrzeżenie: (0%) ![]() ![]() |
OK, ale czy do tego celu muszę stosować funkcję mysql_fetch_array(), czy też mogę zaprezentować te dane w inny sposób? W ogóle nie chcę ich prezentować w układzie tabelarycznym (nagłówek u góry i dane poniżej), a bardziej w układzie formularza (nazwa pola i obok dane, np. |Nr artykułu| 1|Nazwa artykułu|Śruba M16 x 110| i tak dalej. Jak to mogę zaprezentować?
|
|
|
![]()
Post
#17
|
|
![]() Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
fetch() zwraca ci jeden rekord w postaci tablicy. Jak ty to sobie wyswietlisz i gdzie to tylki i wylacznie Twoja sprawa.
-------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 14.08.2025 - 02:31 |