Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]Generowanie kolejnej liczby porządkowej
Forum PHP.pl > Forum > Przedszkole
cypo
Witam, na początku zaznaczę, że jestem bardzo początkujący...

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:
  1. require('db.php');
  2.  
  3. $q = new db();
  4. $q->query($_POST['name'], $_POST['type'], $_POST['adress'], $_POST['price'], $_POST['price2], $_POST['descr'], $_POST['logo'], $_POST['latitude'], $_POST['longitude']);

db.php:
  1. class db {
  2. private $con;
  3. private $result;
  4.  
  5. function __construct() {
  6. $this->con = mysql_connect("*****","*******","*******") or die(mysql_error());
  7. mysql_select_db(**********");
  8. }
  9.  
  10. function checkId(){
  11. $result = $this->con = mysql_query("SELECT * FROM dane");
  12. $ilosc = mysql_num_rows($result);
  13. return $ilosc+1;
  14. }
  15.  
  16. public function query($name, $type, $adress, $price, $price2, $descr, $logo, $latitude, $longitude){
  17. $this->result = mysql_query("INSERT INTO dane VALUES('', '$this->checkId()', '$name', '$type', '$adress', '$price', '$price2', '$descr', '$logo', '$latitude', '$longitude');", $this->con);
  18. if (mysql_error($this->con)){
  19. echo (mysql_error($this->con));
  20. }
  21. }
  22.  
  23. function __destruct() {
  24. mysql_close($this->con);
  25. }
  26. }


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.
pawel1988
Cześć,

W ten sposób powinno działać:

  1. function checkId(){
  2. $result = mysql_query("SELECT * FROM dane");
  3. $ilosc = mysql_num_rows($result);
  4. return $ilosc+1;
  5. }
  6.  
  7. public function query($name){
  8. $ld = $this->checkId();
  9. $this->result = mysql_query("INSERT INTO dane VALUES('', '$ld', '$name', '$type', '$adress', '$price', '$price2', '$descr', '$logo', '$latitude', '$longitude');");
  10. }


Problem był ze zmiennymi.
cypo
No oczywiście, że teraz działa, nie wiem skąd mi się tam wzięło to $this->con. Dzięki wielkie!
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.