Napisałem skrypt, który po wpisaniu danych do formularza wysyła i dodaje je do tabeli MySQL. Tabela ma kolumny:
id(auto_increment),
lp,
i kolejne kolumny z danymi.
Wiadomo, że pole "id" po usunięciu jakiegoś wiersza nie będzie zwracało uwagi na te "dziury" i numeracja nie będzie po kolei. Dlatego chcę, aby było dodatkowe pole "lp", które będzie określało faktyczną ilość rekordów i żeby dla wprowadzanego rekordu wartość "lp" była ustalana już z poziomu php i żeby była wysyłana do bazy danych już konkretna wartość.
Mój projekt składa się z plików:
add.php (praktycznie czysty html z formularzem, który wysyła dane do submit.php)
submit.php:
require('db.php'); $q = new db(); $q->query($_POST['name'], $_POST['type'], $_POST['adress'], $_POST['price'], $_POST['price2], $_POST['descr'], $_POST['logo'], $_POST['latitude'], $_POST['longitude']);
db.php:
class db { private $con; private $result; function __construct() { } function checkId(){ $result = $this->con = mysql_query("SELECT * FROM dane"); $ilosc = mysql_num_rows($result); return $ilosc+1; } public function query($name, $type, $adress, $price, $price2, $descr, $logo, $latitude, $longitude){ $this->result = mysql_query("INSERT INTO dane VALUES('', '$this->checkId()', '$name', '$type', '$adress', '$price', '$price2', '$descr', '$logo', '$latitude', '$longitude');", $this->con); if (mysql_error($this->con)){ echo (mysql_error($this->con)); } } function __destruct() { mysql_close($this->con); } }
Funkcja checkId() działa ok, bo jeśli ją po prostu wyświetlam na ekranie, to faktycznie ma wartość mysql_num_rows+1, ale każdy rekord dodaje się z wartością"lp"=0. Co robię źle ?
Btw. zapytam o inną kwestię przy okazji: dlaczego nie mogę się połączyć z tą bazą mysql(zewnętrzna) z lokalnego serwera ?
Warning: mysql_connect(): php_network_getaddresses: getaddrinfo failed: No such host is known.
Dokładnie te same skrypty działają bez problemu na zewnętrznym serwerze.