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.
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html> <head> <meta http-equiv="Content-type" content="text/html; charset=utf-8"> <link rel="stylesheet" href="style.css" type="text/css"> </head> <body> <h1><center>Szczegóły asortymentu</center></h1><br> <table border="1" width="90%" align=center cellpadding=2> <tr> <td width="20" class="table_small">Lp</td> <td width="130" class="table_small">Nazwa</td> <td width="40" class="table_small">Materiał</td> <td width="60" class="table_small">Dostawca</td> <td width="60" class="table_small">Producent</td> <td width="50" class="table_small">Lokacja</td> <td width="40" class="table_small">Waga</td> <td width="40" class="table_small">Stan</td> </tr> <?php include_once ("db_con.php"); $connection = dbconn::instance(); // tutaj wywolanie zapytania do bazy $wynik = $connection->query(' SELECT LacznikID, Nazwa, Material, DostawcaID, ProducentID, Lokacja, Waga, Stan FROM tb_laczniki_main WHERE LacznikID='.$tut_nr ); } } ?> </table> </body> </html>
Z kolei kod w pliku, z którego następuje wywołanie konkretnego artykułu wygląda tak.
<!doctype html > <html> <head> <meta http-equiv="Content-type" content="text/html;charset=utf-8"> <link rel="stylesheet" href="style.css"/> </head> <body> <center><strong>Zestawienie łączników</strong></center><br><br> <table border="1" width="90%" align=center cellpadding=2> <tr> <td width="20" class="table_small">Lp</td> <td width="130" class="table_small">Nazwa</td> <td width="40" class="table_small">Materiał</td> <td width="60" class="table_small">Dostawca</td> <td width="60" class="table_small">Producent</td> <td width="50" class="table_small">Lokacja</td> <td width="40" class="table_small">Waga</td> <td width="40" class="table_small">Stan</td> </tr> <?php include_once ("db_con.php"); $connection = dbconn::instance(); $wynik = $connection->query(" SELECT LacznikID, Nazwa, Material, DostawcaID, ProducentID, Lokacja, Waga, Stan FROM tb_laczniki_main ORDER BY LacznikID ASC "); echo '<td width="20" class="table_small"><a href="index.php?sr=pokaz&artykul_id='.$r['LacznikID'].'">'.$r['LacznikID'].'</a></td>'; } ?> </table> </body> </html>
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ł
<?php abstract class Singleton { protected function __construct() { } } } class dbconn extends Singleton { private $_conn; private $server = 'xxx'; private $login = 'xxx'; private $password = 'xxx'; private $database = 'mz_warehouse'; protected function __construct() { mysql_select_db($this->database, $this->_conn) or die(mysql_error()); mysql_query("SET NAMES 'utf8'"); } self::$_instance = new dbconn(); } return self::$_instance; } public function query($query) { } public function insert($query) { } else { return 0; } } public function select($query) { } public function escape($string) { } } ?>
Czy zamiast tego mogę zastosować zdecydowanie krótszą formę znalezioną na którymś z forów
<?php $db_connection = null; function polaczenie() { $mysql_server = "xxx"; $mysql_admin = "xxx"; $mysql_pass = "xxx"; $db_connection = mysql_connect($mysql_server, $mysql_admin, $mysql_pass) or die('Brak połączenia z serwerem MySQL.'); } ?>
W jakim celu został użyty ten zwrot
$connection = dbconn::instance();
Czy samo inkludowanie nie wystarczy?
Dzięki za wyrozumiałość i cierpliwość :)
Pozdrawiam,
kecajs