Tabela w php/mysql

Mam takie pytanko i wiem ze zaraz powiecie, że tego jest sporo na necie (google sie kłania), ale chciałem zrobić sobie taką tabelkę w php/mysql coś na wzór: http://www.pup.rzeszow.pl/index.php?id=oferty

i za nic mi nie wychodzi. Tzn. jak coś już utworzę to znowu np. dany wiersz później nie chce się usunąć, a to z kolei jak się usunie to znowu nie chce się dodać i tak w ‘koło Macieju’.

Czy mógłby mi ktoś podać taki mniej więcej przykładowy wzór, abym na nim mógł sobie dalej bazować, tzn. rozszerzać i tworzyć dalej?

Nie za bardzo rozumię o co Ci chodzi że dany wiersz nie chce się usunąć …

W bazie MySQL trzymasz dane, które następnie możesz filtrować i wynik filtrowania zwracać w postaci tabeli.

Np. Masz 3 kolumny : ID, Imie i Nazwisko

Chcesz wyszukać wszystkie wiersze w których Imie = ‘Adam’

$sql = "SELECT ID, Imie, Nazwisko FROM nazwa_tabeli WHERE Imie = 'Adam' ORDER BY Nazwisko";

$wynik = mysql_query($sql);

while($row= mysql_fetch_array($wynik))

{

    echo $row['Imie'].' - '.$row['Nazwisko'].'
';

}

Wyświetlą CI się jedynie te wiersze w którym w kolumnie Imie wpisane jest imię Adam.

A gdzie w pliku wstaw.php odbierasz zmienne przekazane metodą POST z formularza, bo nigdzie nie znalazłem w kodzie ?

Np. jeżeli masz zmienną $Zawod w pliku wstaw.php , to nigdzie w tym pliku nie znalazłem jej zainicjowania, czyli wpisujesz do bazy wartość NULL, bo taką ona przybiera.

By zmienna $Zawod miała taką wartość jaką użytkownik wpisał w pole formularza oznaczonego jako name=“Zawod” , to w pliku wstaw.php musisz ją odebrać np.

$Zawod = $_POST['Zawod']

Oczywiście pasowało by jeszcze sprawdzić poprawność zmiennej przekazanej z formularza, sprawdzić czy nie jest ciągiem pustym, czy nie zawiera niebezpiecznych elementów HTMLO i JavaScript i tak dalej, ale jak jej nie odbierzesz, to do bazy danych zapisujesz właśnie NULL.

Dodane 27.09.2010 (Pn) 17:25

A-ha. Jeżeli chcesz profesjonalnie zacząć programować w PHP to warto by było :

  1. Hasło i login bazy danych NIE powinno się przechowywać w kodzie, lecz trzymać w osobnym pliku, najlepiej poza strukturą public_html

  2. Nazwę bazy danych również dobrym zwyczajem jest trzymać poza kodem

  3. Jak stosujesz własne funkcje, to może dobrze by było pomyśleć o programowaniu obiektowym? Tworzenie obiektów i wywoływanie metod, uwierz mi jest znacznie bardziej przejrzyste i prostsze niż pisanie strukturalne i opieranie kodu na funkcjach .

  4. Warta by było się również zastanowić się nad stosowaniem systemu szablonów, by rozdzielić logikę aplikacji (PHP, MySQL) od warstwy prezentacji (HTML, CSS). Kod staje się wówczas bardzo przejrzysty i ułatwia to utrzymanie serwisu i szybsze wyszukiwanie błędów

Jeżeli chodzi o te zmienne to u mnie one działają, tzn. mogę sobie dodawać nowe rekordy i się zapisują. Robię to ‘starej daty’ jak widzisz, dlatego chciałem aby mi ktoś pokazał jak wygląda to ze wszystkimi tymi zabezpieczeniami, abym mógł się na jakimś konkretnym przykładzie uczyć. Tak samo nie bardzo wiem jak trzymać hasło poza strukturą public_html.

Nie jestem zaawansowanym programistą php, bo gdybym był to o takie ‘błahostki’ bym nie pytał. Co do html i css to sobie poradzę, bo estetyka w tym momencie jest mniej ważna, ważniejszy jest kod jak dla mnie :smiley:

Na początek zrób sobie jakiś plik tekstowy, w którym będziesz trzymał login, hasło i nazwę bazy danych. Zapisz plik w jakimś dowolnym katalogu

Odczytaj z niego dane, przyporządkuj do zmiennych a te zmienne niech posłużą jako dane do logowania się do serwera bazodanowego.

By ten katalog przenieś poza strukturę public html musisz zmienić uprawnienia PHP w pliku .htacces dla tego katalogu by tylko jeden skrypt miał do niego dostęp.

Przykładowo klasa połączenia z bazą danych może wygląda tak

class Polaczenie

	{

		function polaczzbaza($tablica)

		{

			$connection = mysql_connect($tablica[0], $tablica[1], $tablica[2]) or die ($blad->ZapiszBlad('001', mysql_error()));

			$db = mysql_select_db($tablica[3], $connection) or die ($blad->ZapiszBlad('002', mysql_error()));


		}

        }

By dodać jakąś pozycje do bazy danych możesz zastosować np :

mysql_query("INSERT INTO nazwa_tabeli

    					(kolumna1, kolumna2, kolumna3) 

    				VALUES 

    					(NULL, 'dane2', 'dane3')");	

            if(mysql_query)

	    {

	        //wyświetlenie komunikatu i do przejście do nastepnego kroku

                return $this->dodanoDoBazy = TRUE;

	    }

Powiedzmy że ’ kolumna1’ jest typu INT(5) auto_increment, a więc jest kluczem głównym tablicy i jej wartość zostanie automatycznie zwiększona w przypadku dodania nowego rekordu.

Kod pisany z palca, więc może być jakiś błąd, ale ogólnie o to mi chodzi.

Dodane 27.09.2010 (Pn) 22:46

Wierzę że teraz nie przeszkadzają :slight_smile: Ale uwierz mi, jak Twój projekt zacznie się rozrastać, to zacznie szlak Ci trafiać widząc na każdym kroku mieszaninę HTML i PHP. A jak będziesz miał czysty kod HTML w jednym pliku a logikę w innym, to pracując nad logiką nie będziesz w ogóle się przejmował wyglądem, a jak zaczniesz tworzyć wygląd, to znowu nie będziesz się przejmował jak to działa. Znacznie prościej się tak piszę i jest większy porządek w kodzie.

No to to jeszcze zrobiłem :smiley:

Ale co do reszty to kiepściutko to widzę, bo non stop jakieś błędy mi wyskakują…

To może inaczej zapytam, czy możesz mi polecić jakąś książkę z tym związaną, abym mógł się na czymś konkretnym wzorować?

Ja generalnie uczyłem się z wielu książek, niektórych nie ma już na rynku ale generalnie polecam "Książka “PHP5 i MySQL. Biblia” (jako obowiązkowej pozycji od której warto by zacząć) oraz z manuala na php.net - bo to największa i chyba najlepsza książka do PHP. Generalnie to pisanie, pisanie, próbowanie rożnych wariantów. Dodatkowo polecam też “PHP5 and MySQL5” wydawnictwa Peachpit Press (książka w języku angielskim), gdzie dość dobrze wyjaśniają podstawy programowania zorientowanego obiektowo pod PHP.

Jak będziesz miał jakiś problem, to pisz na forum, wiele osób CI pomorze, ja w miarę możliwości i wolnego czasu również.

Generalnie dostęp do plików z poziomu PHP to modyfikacja uprawnień w pliku …htacces . Musisz poszukać o konfiguracji serwera Apache i prawach dostępu.